@cuemath/leap 4.1.1-gg4 → 4.1.1-j2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2300) hide show
  1. package/dist/_virtual/___vite-browser-external.js +7 -0
  2. package/dist/_virtual/___vite-browser-external.js.map +1 -0
  3. package/dist/_virtual/__vite-browser-external.js +5 -0
  4. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  5. package/dist/_virtual/_commonjsHelpers.js +24 -4
  6. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  7. package/dist/_virtual/alea.js +5 -0
  8. package/dist/_virtual/alea.js.map +1 -0
  9. package/dist/_virtual/seedrandom.js +5 -0
  10. package/dist/_virtual/seedrandom.js.map +1 -0
  11. package/dist/_virtual/tychei.js +5 -0
  12. package/dist/_virtual/tychei.js.map +1 -0
  13. package/dist/_virtual/xor128.js +5 -0
  14. package/dist/_virtual/xor128.js.map +1 -0
  15. package/dist/_virtual/xor4096.js +5 -0
  16. package/dist/_virtual/xor4096.js.map +1 -0
  17. package/dist/_virtual/xorshift7.js +5 -0
  18. package/dist/_virtual/xorshift7.js.map +1 -0
  19. package/dist/_virtual/xorwow.js +5 -0
  20. package/dist/_virtual/xorwow.js.map +1 -0
  21. package/dist/features/av/av-preview/av-preview.js +144 -108
  22. package/dist/features/av/av-preview/av-preview.js.map +1 -1
  23. package/dist/features/av/video-analysis/hooks/use-video-analysis.js +143 -0
  24. package/dist/features/av/video-analysis/hooks/use-video-analysis.js.map +1 -0
  25. package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js +89 -0
  26. package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js.map +1 -0
  27. package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js +126 -0
  28. package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js.map +1 -0
  29. package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js +86 -0
  30. package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js.map +1 -0
  31. package/dist/features/av/video-analysis/tensorflow/emotion-model.js +404 -0
  32. package/dist/features/av/video-analysis/tensorflow/emotion-model.js.map +1 -0
  33. package/dist/features/av/video-analysis/tensorflow/emotion-types.js +20 -0
  34. package/dist/features/av/video-analysis/tensorflow/emotion-types.js.map +1 -0
  35. package/dist/features/av/video-analysis/video-analysis-helpers.js +40 -0
  36. package/dist/features/av/video-analysis/video-analysis-helpers.js.map +1 -0
  37. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js +64 -0
  38. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js.map +1 -0
  39. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js +73 -0
  40. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js.map +1 -0
  41. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js +78 -0
  42. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js.map +1 -0
  43. package/dist/features/av/video-analysis/video-analysis-styled.js +40 -0
  44. package/dist/features/av/video-analysis/video-analysis-styled.js.map +1 -0
  45. package/dist/features/av/video-analysis/video-analysis.js +316 -0
  46. package/dist/features/av/video-analysis/video-analysis.js.map +1 -0
  47. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +27 -25
  48. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
  49. package/dist/features/chapters/chapters-list/chapters-list.js +53 -43
  50. package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
  51. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +17 -15
  52. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  53. package/dist/features/chapters-v2/chapter-details/chapter-details.js +66 -62
  54. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
  55. package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js +97 -0
  56. package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js.map +1 -0
  57. package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js +105 -0
  58. package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js.map +1 -0
  59. package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js +64 -0
  60. package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js.map +1 -0
  61. package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js +64 -0
  62. package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js.map +1 -0
  63. package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js +65 -0
  64. package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js.map +1 -0
  65. package/dist/features/journey/journey-id/journey-id-teacher.js +1 -1
  66. package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
  67. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +105 -93
  68. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  69. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +42 -40
  70. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  71. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +36 -34
  72. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  73. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +126 -107
  74. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  75. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +107 -95
  76. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  77. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +116 -104
  78. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  79. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +99 -91
  80. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  81. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +89 -83
  82. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  83. package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js +40 -0
  84. package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js.map +1 -0
  85. package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js +55 -0
  86. package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js.map +1 -0
  87. package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js +48 -0
  88. package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js.map +1 -0
  89. package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js +145 -0
  90. package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js.map +1 -0
  91. package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js +30 -0
  92. package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js.map +1 -0
  93. package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js +17 -0
  94. package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js.map +1 -0
  95. package/dist/features/trial-session/comps/learning-plan/learning-plan.js +93 -0
  96. package/dist/features/trial-session/comps/learning-plan/learning-plan.js.map +1 -0
  97. package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js +81 -0
  98. package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js.map +1 -0
  99. package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js +41 -0
  100. package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js.map +1 -0
  101. package/dist/features/trial-session/comps/worksheet/worksheet.js +41 -34
  102. package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
  103. package/dist/features/trial-session/right-panel/index.js +26 -26
  104. package/dist/features/trial-session/right-panel/index.js.map +1 -1
  105. package/dist/features/trial-session/right-panel/right-panel-styled.js +27 -31
  106. package/dist/features/trial-session/right-panel/right-panel-styled.js.map +1 -1
  107. package/dist/features/trial-session/right-panel/slide-components-map.js +1 -1
  108. package/dist/features/trial-session/right-panel/slide-components-map.js.map +1 -1
  109. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  110. package/dist/features/ui/buttons/button/button.js +51 -50
  111. package/dist/features/ui/buttons/button/button.js.map +1 -1
  112. package/dist/features/ui/buttons/icon-button/icon-button.js +21 -20
  113. package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
  114. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +76 -66
  115. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  116. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +44 -48
  117. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
  118. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +72 -73
  119. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
  120. package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js +31 -33
  121. package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js.map +1 -1
  122. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  123. package/dist/features/worksheet/worksheet/worksheet-view.js +39 -39
  124. package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
  125. package/dist/features/worksheet/worksheet/worksheet.js +51 -41
  126. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  127. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +47 -34
  128. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  129. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
  130. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  131. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +47 -41
  132. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  133. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +28 -26
  134. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  135. package/dist/index.d.ts +161 -4
  136. package/dist/index.js +452 -446
  137. package/dist/index.js.map +1 -1
  138. package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js +3713 -0
  139. package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js.map +1 -0
  140. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js +155 -0
  141. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js.map +1 -0
  142. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js +29 -0
  143. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js.map +1 -0
  144. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js +27 -0
  145. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js.map +1 -0
  146. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js +43 -0
  147. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js.map +1 -0
  148. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js +29 -0
  149. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js.map +1 -0
  150. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js +29 -0
  151. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js.map +1 -0
  152. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js +32 -0
  153. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js.map +1 -0
  154. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js +41 -0
  155. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js.map +1 -0
  156. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js +59 -0
  157. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js.map +1 -0
  158. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js +59 -0
  159. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js.map +1 -0
  160. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js +52 -0
  161. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js.map +1 -0
  162. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js +52 -0
  163. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js.map +1 -0
  164. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js +29 -0
  165. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js.map +1 -0
  166. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js +29 -0
  167. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js.map +1 -0
  168. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js +29 -0
  169. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js.map +1 -0
  170. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js +31 -0
  171. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js.map +1 -0
  172. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js +29 -0
  173. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js.map +1 -0
  174. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js +48 -0
  175. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js.map +1 -0
  176. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js +38 -0
  177. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js.map +1 -0
  178. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js +61 -0
  179. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js.map +1 -0
  180. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js +56 -0
  181. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js.map +1 -0
  182. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js +68 -0
  183. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js.map +1 -0
  184. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js +41 -0
  185. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js.map +1 -0
  186. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js +43 -0
  187. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js.map +1 -0
  188. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js +33 -0
  189. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js.map +1 -0
  190. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js +45 -0
  191. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js.map +1 -0
  192. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js +31 -0
  193. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js.map +1 -0
  194. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js +33 -0
  195. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js.map +1 -0
  196. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js +66 -0
  197. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js.map +1 -0
  198. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js +31 -0
  199. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js.map +1 -0
  200. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js +32 -0
  201. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js.map +1 -0
  202. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js +35 -0
  203. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js.map +1 -0
  204. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js +36 -0
  205. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js.map +1 -0
  206. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js +61 -0
  207. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js.map +1 -0
  208. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js +46 -0
  209. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js.map +1 -0
  210. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js +66 -0
  211. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js.map +1 -0
  212. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js +56 -0
  213. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
  214. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js +63 -0
  215. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js.map +1 -0
  216. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js +75 -0
  217. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js.map +1 -0
  218. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js +67 -0
  219. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
  220. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js +64 -0
  221. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
  222. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js +29 -0
  223. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js.map +1 -0
  224. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js +29 -0
  225. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js.map +1 -0
  226. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js +91 -0
  227. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js.map +1 -0
  228. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js +60 -0
  229. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js.map +1 -0
  230. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js +60 -0
  231. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js.map +1 -0
  232. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js +40 -0
  233. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js.map +1 -0
  234. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js +47 -0
  235. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js.map +1 -0
  236. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js +78 -0
  237. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
  238. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +65 -0
  239. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
  240. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +67 -0
  241. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
  242. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js +37 -0
  243. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js.map +1 -0
  244. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js +56 -0
  245. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js.map +1 -0
  246. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js +57 -0
  247. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js.map +1 -0
  248. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js +57 -0
  249. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js.map +1 -0
  250. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js +54 -0
  251. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js.map +1 -0
  252. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js +63 -0
  253. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js.map +1 -0
  254. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js +29 -0
  255. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js.map +1 -0
  256. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js +40 -0
  257. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js.map +1 -0
  258. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js +31 -0
  259. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js.map +1 -0
  260. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js +33 -0
  261. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js.map +1 -0
  262. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js +31 -0
  263. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js.map +1 -0
  264. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js +35 -0
  265. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js.map +1 -0
  266. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js +31 -0
  267. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js.map +1 -0
  268. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js +39 -0
  269. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js.map +1 -0
  270. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js +36 -0
  271. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js.map +1 -0
  272. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js +49 -0
  273. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js.map +1 -0
  274. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js +31 -0
  275. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js.map +1 -0
  276. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js +31 -0
  277. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js.map +1 -0
  278. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js +63 -0
  279. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js.map +1 -0
  280. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js +48 -0
  281. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
  282. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js +38 -0
  283. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js.map +1 -0
  284. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js +38 -0
  285. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js.map +1 -0
  286. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js +66 -0
  287. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js.map +1 -0
  288. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js +32 -0
  289. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js.map +1 -0
  290. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js +31 -0
  291. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js.map +1 -0
  292. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js +31 -0
  293. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js.map +1 -0
  294. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js +39 -0
  295. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js.map +1 -0
  296. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js +32 -0
  297. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js.map +1 -0
  298. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js +32 -0
  299. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js.map +1 -0
  300. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js +29 -0
  301. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js.map +1 -0
  302. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js +29 -0
  303. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js.map +1 -0
  304. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js +29 -0
  305. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js.map +1 -0
  306. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js +51 -0
  307. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js.map +1 -0
  308. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js +47 -0
  309. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js.map +1 -0
  310. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js +38 -0
  311. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js.map +1 -0
  312. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js +31 -0
  313. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js.map +1 -0
  314. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js +31 -0
  315. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js.map +1 -0
  316. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js +33 -0
  317. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js.map +1 -0
  318. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js +29 -0
  319. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js.map +1 -0
  320. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js +31 -0
  321. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js.map +1 -0
  322. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js +29 -0
  323. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js.map +1 -0
  324. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js +31 -0
  325. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js.map +1 -0
  326. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js +29 -0
  327. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js.map +1 -0
  328. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js +31 -0
  329. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js.map +1 -0
  330. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js +51 -0
  331. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js.map +1 -0
  332. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js +48 -0
  333. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js.map +1 -0
  334. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js +38 -0
  335. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js.map +1 -0
  336. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js +65 -0
  337. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js.map +1 -0
  338. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js +60 -0
  339. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js.map +1 -0
  340. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js +38 -0
  341. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
  342. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js +27 -0
  343. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
  344. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js +35 -0
  345. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js.map +1 -0
  346. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js +31 -0
  347. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js.map +1 -0
  348. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js +43 -0
  349. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js.map +1 -0
  350. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js +59 -0
  351. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js.map +1 -0
  352. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js +31 -0
  353. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js.map +1 -0
  354. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js +47 -0
  355. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js.map +1 -0
  356. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js +34 -0
  357. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js.map +1 -0
  358. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js +54 -0
  359. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js.map +1 -0
  360. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js +35 -0
  361. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js.map +1 -0
  362. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js +42 -0
  363. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js.map +1 -0
  364. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js +37 -0
  365. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
  366. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js +40 -0
  367. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
  368. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js +40 -0
  369. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
  370. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js +31 -0
  371. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js.map +1 -0
  372. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js +40 -0
  373. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js.map +1 -0
  374. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js +43 -0
  375. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js.map +1 -0
  376. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js +45 -0
  377. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js.map +1 -0
  378. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js +44 -0
  379. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js.map +1 -0
  380. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js +31 -0
  381. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js.map +1 -0
  382. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js +37 -0
  383. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js.map +1 -0
  384. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js +56 -0
  385. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js.map +1 -0
  386. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js +33 -0
  387. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js.map +1 -0
  388. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js +114 -0
  389. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js.map +1 -0
  390. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js +33 -0
  391. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js.map +1 -0
  392. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js +59 -0
  393. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js.map +1 -0
  394. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js +33 -0
  395. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js.map +1 -0
  396. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js +275 -0
  397. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js.map +1 -0
  398. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js +33 -0
  399. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js.map +1 -0
  400. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js +32 -0
  401. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js.map +1 -0
  402. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js +32 -0
  403. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js.map +1 -0
  404. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js +31 -0
  405. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js.map +1 -0
  406. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js +29 -0
  407. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js.map +1 -0
  408. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js +29 -0
  409. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js.map +1 -0
  410. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js +29 -0
  411. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js.map +1 -0
  412. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js +39 -0
  413. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js.map +1 -0
  414. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js +59 -0
  415. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js.map +1 -0
  416. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js +56 -0
  417. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js.map +1 -0
  418. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js +62 -0
  419. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
  420. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js +69 -0
  421. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
  422. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js +45 -0
  423. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js.map +1 -0
  424. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js +53 -0
  425. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js.map +1 -0
  426. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js +32 -0
  427. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js.map +1 -0
  428. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js +31 -0
  429. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js.map +1 -0
  430. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js +34 -0
  431. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js.map +1 -0
  432. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js +43 -0
  433. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js.map +1 -0
  434. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js +33 -0
  435. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js.map +1 -0
  436. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js +43 -0
  437. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js.map +1 -0
  438. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js +42 -0
  439. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js.map +1 -0
  440. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js +30 -0
  441. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js.map +1 -0
  442. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js +31 -0
  443. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js.map +1 -0
  444. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js +29 -0
  445. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js.map +1 -0
  446. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js +29 -0
  447. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js.map +1 -0
  448. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js +29 -0
  449. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js.map +1 -0
  450. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js +55 -0
  451. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js.map +1 -0
  452. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js +48 -0
  453. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js.map +1 -0
  454. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js +33 -0
  455. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js.map +1 -0
  456. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js +48 -0
  457. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js.map +1 -0
  458. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js +51 -0
  459. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js.map +1 -0
  460. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js +89 -0
  461. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js.map +1 -0
  462. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js +45 -0
  463. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js.map +1 -0
  464. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js +70 -0
  465. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js.map +1 -0
  466. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js +44 -0
  467. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js.map +1 -0
  468. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js +63 -0
  469. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js.map +1 -0
  470. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js +44 -0
  471. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js.map +1 -0
  472. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js +60 -0
  473. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js.map +1 -0
  474. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js +40 -0
  475. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js.map +1 -0
  476. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js +31 -0
  477. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js.map +1 -0
  478. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js +37 -0
  479. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js.map +1 -0
  480. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js +34 -0
  481. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js.map +1 -0
  482. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js +33 -0
  483. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js.map +1 -0
  484. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js +32 -0
  485. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js.map +1 -0
  486. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js +51 -0
  487. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js.map +1 -0
  488. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js +32 -0
  489. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js.map +1 -0
  490. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js +36 -0
  491. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js.map +1 -0
  492. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js +116 -0
  493. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js.map +1 -0
  494. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js +44 -0
  495. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js.map +1 -0
  496. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js +64 -0
  497. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js.map +1 -0
  498. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js +38 -0
  499. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js.map +1 -0
  500. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js +29 -0
  501. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js.map +1 -0
  502. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js +32 -0
  503. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js.map +1 -0
  504. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js +61 -0
  505. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js.map +1 -0
  506. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js +29 -0
  507. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js.map +1 -0
  508. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js +29 -0
  509. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js.map +1 -0
  510. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js +34 -0
  511. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js.map +1 -0
  512. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js +36 -0
  513. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js.map +1 -0
  514. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js +36 -0
  515. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js.map +1 -0
  516. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js +39 -0
  517. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js.map +1 -0
  518. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js +60 -0
  519. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js.map +1 -0
  520. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js +127 -0
  521. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js.map +1 -0
  522. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js +39 -0
  523. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js.map +1 -0
  524. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js +33 -0
  525. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js.map +1 -0
  526. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js +39 -0
  527. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js.map +1 -0
  528. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js +65 -0
  529. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js.map +1 -0
  530. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js +48 -0
  531. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js.map +1 -0
  532. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js +52 -0
  533. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js.map +1 -0
  534. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js +42 -0
  535. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js.map +1 -0
  536. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js +40 -0
  537. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js.map +1 -0
  538. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js +367 -0
  539. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js.map +1 -0
  540. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js +120 -0
  541. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js.map +1 -0
  542. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js +41 -0
  543. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js.map +1 -0
  544. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js +72 -0
  545. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js.map +1 -0
  546. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js +108 -0
  547. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js.map +1 -0
  548. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js +44 -0
  549. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js.map +1 -0
  550. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js +166 -0
  551. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js.map +1 -0
  552. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js +30 -0
  553. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js.map +1 -0
  554. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js +45 -0
  555. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js.map +1 -0
  556. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js +31 -0
  557. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js.map +1 -0
  558. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js +39 -0
  559. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js.map +1 -0
  560. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js +39 -0
  561. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js.map +1 -0
  562. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js +49 -0
  563. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js.map +1 -0
  564. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js +103 -0
  565. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js.map +1 -0
  566. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js +133 -0
  567. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js.map +1 -0
  568. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js +583 -0
  569. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js.map +1 -0
  570. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js +30 -0
  571. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js.map +1 -0
  572. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js +41 -0
  573. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js.map +1 -0
  574. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js +44 -0
  575. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js.map +1 -0
  576. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js +45 -0
  577. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js.map +1 -0
  578. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js +43 -0
  579. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js.map +1 -0
  580. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js +95 -0
  581. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js.map +1 -0
  582. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js +64 -0
  583. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js.map +1 -0
  584. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js +39 -0
  585. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js.map +1 -0
  586. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js +39 -0
  587. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js.map +1 -0
  588. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js +38 -0
  589. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js.map +1 -0
  590. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js +52 -0
  591. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js.map +1 -0
  592. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js +84 -0
  593. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js.map +1 -0
  594. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js +240 -0
  595. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js.map +1 -0
  596. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js +115 -0
  597. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js.map +1 -0
  598. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js +104 -0
  599. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js.map +1 -0
  600. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js +260 -0
  601. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js.map +1 -0
  602. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js +89 -0
  603. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js.map +1 -0
  604. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js +253 -0
  605. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js.map +1 -0
  606. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js +246 -0
  607. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js.map +1 -0
  608. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js +106 -0
  609. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js.map +1 -0
  610. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js +53 -0
  611. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js.map +1 -0
  612. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js +51 -0
  613. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js.map +1 -0
  614. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js +51 -0
  615. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js.map +1 -0
  616. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js +59 -0
  617. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js.map +1 -0
  618. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js +31 -0
  619. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js.map +1 -0
  620. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js +65 -0
  621. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js.map +1 -0
  622. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js +37 -0
  623. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js.map +1 -0
  624. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js +38 -0
  625. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js.map +1 -0
  626. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js +67 -0
  627. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js.map +1 -0
  628. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js +82 -0
  629. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js.map +1 -0
  630. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js +69 -0
  631. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js.map +1 -0
  632. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js +30 -0
  633. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js.map +1 -0
  634. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js +74 -0
  635. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js.map +1 -0
  636. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js +41 -0
  637. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js.map +1 -0
  638. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js +41 -0
  639. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js.map +1 -0
  640. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js +30 -0
  641. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js.map +1 -0
  642. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js +83 -0
  643. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js.map +1 -0
  644. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js +295 -0
  645. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js.map +1 -0
  646. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js +230 -0
  647. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js.map +1 -0
  648. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js +139 -0
  649. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js.map +1 -0
  650. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js +88 -0
  651. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js.map +1 -0
  652. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js +62 -0
  653. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js.map +1 -0
  654. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js +26 -0
  655. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js.map +1 -0
  656. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js +101 -0
  657. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js.map +1 -0
  658. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js +46 -0
  659. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js.map +1 -0
  660. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js +36 -0
  661. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js.map +1 -0
  662. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js +70 -0
  663. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js.map +1 -0
  664. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js +42 -0
  665. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js.map +1 -0
  666. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js +35 -0
  667. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js.map +1 -0
  668. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js +32 -0
  669. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js.map +1 -0
  670. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js +35 -0
  671. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js.map +1 -0
  672. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js +44 -0
  673. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js.map +1 -0
  674. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js +48 -0
  675. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js.map +1 -0
  676. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js +48 -0
  677. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js.map +1 -0
  678. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js +42 -0
  679. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js.map +1 -0
  680. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js +42 -0
  681. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js.map +1 -0
  682. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js +35 -0
  683. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js.map +1 -0
  684. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js +30 -0
  685. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js.map +1 -0
  686. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js +32 -0
  687. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js.map +1 -0
  688. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js +40 -0
  689. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js.map +1 -0
  690. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js +32 -0
  691. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js.map +1 -0
  692. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js +44 -0
  693. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js.map +1 -0
  694. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js +34 -0
  695. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js.map +1 -0
  696. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js +34 -0
  697. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js.map +1 -0
  698. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js +37 -0
  699. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js.map +1 -0
  700. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js +33 -0
  701. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js.map +1 -0
  702. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js +71 -0
  703. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js.map +1 -0
  704. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js +44 -0
  705. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js.map +1 -0
  706. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js +46 -0
  707. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js.map +1 -0
  708. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js +33 -0
  709. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js.map +1 -0
  710. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js +52 -0
  711. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js.map +1 -0
  712. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js +33 -0
  713. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js.map +1 -0
  714. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js +64 -0
  715. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js.map +1 -0
  716. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js +30 -0
  717. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js.map +1 -0
  718. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js +38 -0
  719. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js.map +1 -0
  720. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js +33 -0
  721. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js.map +1 -0
  722. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js +43 -0
  723. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js.map +1 -0
  724. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js +41 -0
  725. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js.map +1 -0
  726. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js +85 -0
  727. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js.map +1 -0
  728. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js +56 -0
  729. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js.map +1 -0
  730. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js +34 -0
  731. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
  732. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js +44 -0
  733. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js.map +1 -0
  734. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js +155 -0
  735. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js.map +1 -0
  736. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js +34 -0
  737. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js.map +1 -0
  738. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js +34 -0
  739. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
  740. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js +34 -0
  741. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
  742. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js +37 -0
  743. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js.map +1 -0
  744. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js +32 -0
  745. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js.map +1 -0
  746. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js +32 -0
  747. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js.map +1 -0
  748. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js +48 -0
  749. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js.map +1 -0
  750. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js +34 -0
  751. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js.map +1 -0
  752. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js +34 -0
  753. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js.map +1 -0
  754. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js +40 -0
  755. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js.map +1 -0
  756. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js +33 -0
  757. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js.map +1 -0
  758. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js +57 -0
  759. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
  760. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +43 -0
  761. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
  762. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +43 -0
  763. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
  764. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js +35 -0
  765. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js.map +1 -0
  766. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js +39 -0
  767. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js.map +1 -0
  768. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js +63 -0
  769. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js.map +1 -0
  770. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js +37 -0
  771. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js.map +1 -0
  772. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js +37 -0
  773. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js.map +1 -0
  774. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js +37 -0
  775. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js.map +1 -0
  776. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js +45 -0
  777. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js.map +1 -0
  778. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js +47 -0
  779. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js.map +1 -0
  780. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js +35 -0
  781. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js.map +1 -0
  782. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js +30 -0
  783. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js.map +1 -0
  784. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js +33 -0
  785. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js.map +1 -0
  786. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js +42 -0
  787. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js.map +1 -0
  788. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js +41 -0
  789. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js.map +1 -0
  790. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js +31 -0
  791. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js.map +1 -0
  792. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js +30 -0
  793. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js.map +1 -0
  794. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js +60 -0
  795. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js.map +1 -0
  796. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js +48 -0
  797. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js.map +1 -0
  798. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js +50 -0
  799. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js.map +1 -0
  800. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js +62 -0
  801. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js.map +1 -0
  802. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js +94 -0
  803. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js.map +1 -0
  804. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js +63 -0
  805. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
  806. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js +46 -0
  807. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js.map +1 -0
  808. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js +75 -0
  809. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js.map +1 -0
  810. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js +37 -0
  811. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js.map +1 -0
  812. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js +37 -0
  813. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js.map +1 -0
  814. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js +33 -0
  815. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js.map +1 -0
  816. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js +32 -0
  817. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js.map +1 -0
  818. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js +33 -0
  819. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js.map +1 -0
  820. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js +29 -0
  821. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js.map +1 -0
  822. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js +29 -0
  823. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js.map +1 -0
  824. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js +29 -0
  825. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js.map +1 -0
  826. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js +34 -0
  827. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js.map +1 -0
  828. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js +32 -0
  829. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js.map +1 -0
  830. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js +42 -0
  831. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js.map +1 -0
  832. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js +37 -0
  833. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js.map +1 -0
  834. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js +39 -0
  835. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js.map +1 -0
  836. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js +33 -0
  837. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js.map +1 -0
  838. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js +40 -0
  839. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js.map +1 -0
  840. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js +31 -0
  841. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js.map +1 -0
  842. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js +37 -0
  843. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js.map +1 -0
  844. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js +29 -0
  845. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js.map +1 -0
  846. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js +34 -0
  847. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js.map +1 -0
  848. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js +65 -0
  849. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js.map +1 -0
  850. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js +44 -0
  851. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js.map +1 -0
  852. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js +34 -0
  853. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js.map +1 -0
  854. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js +40 -0
  855. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js.map +1 -0
  856. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js +38 -0
  857. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js.map +1 -0
  858. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js +37 -0
  859. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
  860. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js +28 -0
  861. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
  862. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js +28 -0
  863. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js.map +1 -0
  864. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js +45 -0
  865. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js.map +1 -0
  866. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js +58 -0
  867. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js.map +1 -0
  868. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js +28 -0
  869. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js.map +1 -0
  870. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js +48 -0
  871. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js.map +1 -0
  872. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js +45 -0
  873. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js.map +1 -0
  874. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js +34 -0
  875. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js.map +1 -0
  876. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js +39 -0
  877. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js.map +1 -0
  878. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js +34 -0
  879. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js.map +1 -0
  880. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js +70 -0
  881. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js.map +1 -0
  882. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js +54 -0
  883. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js.map +1 -0
  884. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js +36 -0
  885. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
  886. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js +39 -0
  887. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
  888. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js +39 -0
  889. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
  890. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js +30 -0
  891. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js.map +1 -0
  892. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js +36 -0
  893. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js.map +1 -0
  894. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js +43 -0
  895. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js.map +1 -0
  896. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js +45 -0
  897. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js.map +1 -0
  898. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js +47 -0
  899. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js.map +1 -0
  900. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js +57 -0
  901. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js.map +1 -0
  902. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js +41 -0
  903. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js.map +1 -0
  904. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js +56 -0
  905. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js.map +1 -0
  906. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js +33 -0
  907. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js.map +1 -0
  908. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js +33 -0
  909. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js.map +1 -0
  910. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js +33 -0
  911. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js.map +1 -0
  912. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js +32 -0
  913. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js.map +1 -0
  914. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js +33 -0
  915. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js.map +1 -0
  916. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js +51 -0
  917. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js.map +1 -0
  918. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js +29 -0
  919. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js.map +1 -0
  920. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js +42 -0
  921. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js.map +1 -0
  922. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js +42 -0
  923. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js.map +1 -0
  924. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js +37 -0
  925. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js.map +1 -0
  926. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js +35 -0
  927. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js.map +1 -0
  928. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js +33 -0
  929. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js.map +1 -0
  930. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js +35 -0
  931. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
  932. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js +33 -0
  933. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
  934. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js +40 -0
  935. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js.map +1 -0
  936. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js +32 -0
  937. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js.map +1 -0
  938. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js +44 -0
  939. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js.map +1 -0
  940. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js +30 -0
  941. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js.map +1 -0
  942. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js +43 -0
  943. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js.map +1 -0
  944. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js +33 -0
  945. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js.map +1 -0
  946. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js +34 -0
  947. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js.map +1 -0
  948. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js +36 -0
  949. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js.map +1 -0
  950. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js +46 -0
  951. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js.map +1 -0
  952. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js +32 -0
  953. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js.map +1 -0
  954. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js +37 -0
  955. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js.map +1 -0
  956. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js +32 -0
  957. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js.map +1 -0
  958. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js +61 -0
  959. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js.map +1 -0
  960. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js +44 -0
  961. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js.map +1 -0
  962. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js +49 -0
  963. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js.map +1 -0
  964. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js +50 -0
  965. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js.map +1 -0
  966. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js +51 -0
  967. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js.map +1 -0
  968. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js +43 -0
  969. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js.map +1 -0
  970. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js +42 -0
  971. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js.map +1 -0
  972. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js +42 -0
  973. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js.map +1 -0
  974. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js +42 -0
  975. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js.map +1 -0
  976. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js +40 -0
  977. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js.map +1 -0
  978. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js +30 -0
  979. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js.map +1 -0
  980. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js +29 -0
  981. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js.map +1 -0
  982. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js +29 -0
  983. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js.map +1 -0
  984. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js +37 -0
  985. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js.map +1 -0
  986. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js +35 -0
  987. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js.map +1 -0
  988. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js +54 -0
  989. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js.map +1 -0
  990. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js +36 -0
  991. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js.map +1 -0
  992. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js +44 -0
  993. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js.map +1 -0
  994. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js +38 -0
  995. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js.map +1 -0
  996. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js +35 -0
  997. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js.map +1 -0
  998. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js +33 -0
  999. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js.map +1 -0
  1000. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js +39 -0
  1001. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js.map +1 -0
  1002. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js +29 -0
  1003. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js.map +1 -0
  1004. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js +32 -0
  1005. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js.map +1 -0
  1006. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js +38 -0
  1007. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js.map +1 -0
  1008. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js +41 -0
  1009. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js.map +1 -0
  1010. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js +93 -0
  1011. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js.map +1 -0
  1012. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js +38 -0
  1013. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js.map +1 -0
  1014. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js +44 -0
  1015. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js.map +1 -0
  1016. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js +28 -0
  1017. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js.map +1 -0
  1018. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js +39 -0
  1019. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js.map +1 -0
  1020. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js +48 -0
  1021. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js.map +1 -0
  1022. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js +67 -0
  1023. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js.map +1 -0
  1024. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js +47 -0
  1025. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js.map +1 -0
  1026. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js +43 -0
  1027. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js.map +1 -0
  1028. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js +49 -0
  1029. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js.map +1 -0
  1030. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js +80 -0
  1031. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js.map +1 -0
  1032. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js +92 -0
  1033. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js.map +1 -0
  1034. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js +145 -0
  1035. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js.map +1 -0
  1036. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js +90 -0
  1037. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js.map +1 -0
  1038. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js +64 -0
  1039. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js.map +1 -0
  1040. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js +96 -0
  1041. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js.map +1 -0
  1042. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js +72 -0
  1043. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js.map +1 -0
  1044. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js +45 -0
  1045. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js.map +1 -0
  1046. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js +32 -0
  1047. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js.map +1 -0
  1048. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js +89 -0
  1049. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js.map +1 -0
  1050. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js +36 -0
  1051. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js.map +1 -0
  1052. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js +60 -0
  1053. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js.map +1 -0
  1054. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js +64 -0
  1055. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js.map +1 -0
  1056. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js +365 -0
  1057. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js.map +1 -0
  1058. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js +128 -0
  1059. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js.map +1 -0
  1060. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js +363 -0
  1061. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js.map +1 -0
  1062. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js +69 -0
  1063. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js.map +1 -0
  1064. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js +114 -0
  1065. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js.map +1 -0
  1066. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js +69 -0
  1067. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js.map +1 -0
  1068. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js +113 -0
  1069. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js.map +1 -0
  1070. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js +103 -0
  1071. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js.map +1 -0
  1072. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js +58 -0
  1073. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js.map +1 -0
  1074. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js +77 -0
  1075. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js.map +1 -0
  1076. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js +45 -0
  1077. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js.map +1 -0
  1078. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js +80 -0
  1079. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js.map +1 -0
  1080. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js +48 -0
  1081. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js.map +1 -0
  1082. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js +57 -0
  1083. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js.map +1 -0
  1084. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js +74 -0
  1085. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js.map +1 -0
  1086. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js +54 -0
  1087. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js.map +1 -0
  1088. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js +138 -0
  1089. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js.map +1 -0
  1090. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js +49 -0
  1091. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js.map +1 -0
  1092. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js +1266 -0
  1093. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js.map +1 -0
  1094. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js +110 -0
  1095. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js.map +1 -0
  1096. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js +50 -0
  1097. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js.map +1 -0
  1098. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js +58 -0
  1099. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js.map +1 -0
  1100. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js +43 -0
  1101. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js.map +1 -0
  1102. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js +79 -0
  1103. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js.map +1 -0
  1104. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js +147 -0
  1105. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js.map +1 -0
  1106. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js +48 -0
  1107. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js.map +1 -0
  1108. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js +106 -0
  1109. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js.map +1 -0
  1110. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js +157 -0
  1111. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js.map +1 -0
  1112. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js +46 -0
  1113. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js.map +1 -0
  1114. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js +54 -0
  1115. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js.map +1 -0
  1116. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js +50 -0
  1117. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js.map +1 -0
  1118. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js +72 -0
  1119. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js.map +1 -0
  1120. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js +37 -0
  1121. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js.map +1 -0
  1122. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js +351 -0
  1123. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js.map +1 -0
  1124. package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js +32 -0
  1125. package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js.map +1 -0
  1126. package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js +23 -0
  1127. package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js.map +1 -0
  1128. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js +99 -0
  1129. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js.map +1 -0
  1130. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js +139 -0
  1131. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js.map +1 -0
  1132. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js +72 -0
  1133. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js.map +1 -0
  1134. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js +105 -0
  1135. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js.map +1 -0
  1136. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js +101 -0
  1137. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js.map +1 -0
  1138. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js +40 -0
  1139. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js.map +1 -0
  1140. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js +32 -0
  1141. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js.map +1 -0
  1142. package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js +34 -0
  1143. package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js.map +1 -0
  1144. package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js +24 -0
  1145. package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js.map +1 -0
  1146. package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js +43 -0
  1147. package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js.map +1 -0
  1148. package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js +595 -0
  1149. package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js.map +1 -0
  1150. package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js +111 -0
  1151. package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js.map +1 -0
  1152. package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js +36 -0
  1153. package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js.map +1 -0
  1154. package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js +52 -0
  1155. package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js.map +1 -0
  1156. package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js +62 -0
  1157. package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js.map +1 -0
  1158. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js +32 -0
  1159. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js.map +1 -0
  1160. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js +41 -0
  1161. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js.map +1 -0
  1162. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js +39 -0
  1163. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js.map +1 -0
  1164. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js +31 -0
  1165. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js.map +1 -0
  1166. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js +40 -0
  1167. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js.map +1 -0
  1168. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js +30 -0
  1169. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js.map +1 -0
  1170. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js +30 -0
  1171. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js.map +1 -0
  1172. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js +35 -0
  1173. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js.map +1 -0
  1174. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js +40 -0
  1175. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js.map +1 -0
  1176. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js +47 -0
  1177. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js.map +1 -0
  1178. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js +33 -0
  1179. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js.map +1 -0
  1180. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js +34 -0
  1181. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js.map +1 -0
  1182. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js +32 -0
  1183. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js.map +1 -0
  1184. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js +30 -0
  1185. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js.map +1 -0
  1186. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js +42 -0
  1187. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js.map +1 -0
  1188. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js +29 -0
  1189. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js.map +1 -0
  1190. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js +42 -0
  1191. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js.map +1 -0
  1192. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js +25 -0
  1193. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js.map +1 -0
  1194. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js +26 -0
  1195. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js.map +1 -0
  1196. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js +36 -0
  1197. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js.map +1 -0
  1198. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js +27 -0
  1199. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js.map +1 -0
  1200. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js +31 -0
  1201. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js.map +1 -0
  1202. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js +34 -0
  1203. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js.map +1 -0
  1204. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js +36 -0
  1205. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js.map +1 -0
  1206. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js +38 -0
  1207. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js.map +1 -0
  1208. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js +33 -0
  1209. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js.map +1 -0
  1210. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js +32 -0
  1211. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js.map +1 -0
  1212. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js +38 -0
  1213. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js.map +1 -0
  1214. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js +38 -0
  1215. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js.map +1 -0
  1216. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js +33 -0
  1217. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js.map +1 -0
  1218. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js +30 -0
  1219. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js.map +1 -0
  1220. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js +33 -0
  1221. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js.map +1 -0
  1222. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js +30 -0
  1223. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js.map +1 -0
  1224. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js +30 -0
  1225. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js.map +1 -0
  1226. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js +31 -0
  1227. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js.map +1 -0
  1228. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js +46 -0
  1229. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js.map +1 -0
  1230. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js +26 -0
  1231. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js.map +1 -0
  1232. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js +63 -0
  1233. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js.map +1 -0
  1234. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js +61 -0
  1235. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js.map +1 -0
  1236. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js +30 -0
  1237. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js.map +1 -0
  1238. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js +26 -0
  1239. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js.map +1 -0
  1240. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js +26 -0
  1241. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js.map +1 -0
  1242. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js +26 -0
  1243. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js.map +1 -0
  1244. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js +26 -0
  1245. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js.map +1 -0
  1246. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js +33 -0
  1247. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js.map +1 -0
  1248. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js +32 -0
  1249. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js.map +1 -0
  1250. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js +31 -0
  1251. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js.map +1 -0
  1252. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js +39 -0
  1253. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js.map +1 -0
  1254. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js +31 -0
  1255. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js.map +1 -0
  1256. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js +33 -0
  1257. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js.map +1 -0
  1258. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js +33 -0
  1259. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js.map +1 -0
  1260. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js +34 -0
  1261. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js.map +1 -0
  1262. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js +33 -0
  1263. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js.map +1 -0
  1264. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js +42 -0
  1265. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js.map +1 -0
  1266. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js +34 -0
  1267. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js.map +1 -0
  1268. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js +33 -0
  1269. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js.map +1 -0
  1270. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js +30 -0
  1271. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js.map +1 -0
  1272. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js +42 -0
  1273. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js.map +1 -0
  1274. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js +40 -0
  1275. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js.map +1 -0
  1276. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js +26 -0
  1277. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js.map +1 -0
  1278. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js +30 -0
  1279. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js.map +1 -0
  1280. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js +26 -0
  1281. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js.map +1 -0
  1282. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js +30 -0
  1283. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js.map +1 -0
  1284. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js +30 -0
  1285. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js.map +1 -0
  1286. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js +52 -0
  1287. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js.map +1 -0
  1288. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js +43 -0
  1289. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js.map +1 -0
  1290. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js +55 -0
  1291. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js.map +1 -0
  1292. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js +46 -0
  1293. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js.map +1 -0
  1294. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js +32 -0
  1295. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js.map +1 -0
  1296. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js +33 -0
  1297. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js.map +1 -0
  1298. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js +32 -0
  1299. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js.map +1 -0
  1300. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js +30 -0
  1301. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js.map +1 -0
  1302. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js +33 -0
  1303. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js.map +1 -0
  1304. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js +33 -0
  1305. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js.map +1 -0
  1306. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js +30 -0
  1307. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js.map +1 -0
  1308. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js +26 -0
  1309. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js.map +1 -0
  1310. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js +33 -0
  1311. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js.map +1 -0
  1312. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js +39 -0
  1313. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js.map +1 -0
  1314. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js +41 -0
  1315. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js.map +1 -0
  1316. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js +32 -0
  1317. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js.map +1 -0
  1318. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js +26 -0
  1319. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js.map +1 -0
  1320. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js +32 -0
  1321. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js.map +1 -0
  1322. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js +32 -0
  1323. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js.map +1 -0
  1324. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js +33 -0
  1325. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js.map +1 -0
  1326. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js +34 -0
  1327. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js.map +1 -0
  1328. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js +31 -0
  1329. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js.map +1 -0
  1330. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js +29 -0
  1331. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js.map +1 -0
  1332. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js +29 -0
  1333. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js.map +1 -0
  1334. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js +33 -0
  1335. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js.map +1 -0
  1336. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js +31 -0
  1337. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js.map +1 -0
  1338. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js +32 -0
  1339. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js.map +1 -0
  1340. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js +26 -0
  1341. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js.map +1 -0
  1342. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js +41 -0
  1343. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js.map +1 -0
  1344. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js +37 -0
  1345. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js.map +1 -0
  1346. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js +32 -0
  1347. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js.map +1 -0
  1348. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js +33 -0
  1349. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js.map +1 -0
  1350. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js +63 -0
  1351. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js.map +1 -0
  1352. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js +30 -0
  1353. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js.map +1 -0
  1354. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js +29 -0
  1355. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js.map +1 -0
  1356. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js +48 -0
  1357. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js.map +1 -0
  1358. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js +26 -0
  1359. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js.map +1 -0
  1360. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js +30 -0
  1361. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js.map +1 -0
  1362. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js +44 -0
  1363. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js.map +1 -0
  1364. package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js +100 -0
  1365. package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js.map +1 -0
  1366. package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js +20 -0
  1367. package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js.map +1 -0
  1368. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js +74 -0
  1369. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js.map +1 -0
  1370. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js +131 -0
  1371. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js.map +1 -0
  1372. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js +169 -0
  1373. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js.map +1 -0
  1374. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js +281 -0
  1375. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js.map +1 -0
  1376. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js +156 -0
  1377. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js.map +1 -0
  1378. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js +50 -0
  1379. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js.map +1 -0
  1380. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js +36 -0
  1381. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js.map +1 -0
  1382. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js +78 -0
  1383. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js.map +1 -0
  1384. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js +29 -0
  1385. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js.map +1 -0
  1386. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js +48 -0
  1387. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js.map +1 -0
  1388. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js +179 -0
  1389. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js.map +1 -0
  1390. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js +57 -0
  1391. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js.map +1 -0
  1392. package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js +28 -0
  1393. package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js.map +1 -0
  1394. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js +35 -0
  1395. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js.map +1 -0
  1396. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js +29 -0
  1397. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js.map +1 -0
  1398. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js +29 -0
  1399. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js.map +1 -0
  1400. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js +32 -0
  1401. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js.map +1 -0
  1402. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js +29 -0
  1403. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js.map +1 -0
  1404. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js +29 -0
  1405. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js.map +1 -0
  1406. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js +29 -0
  1407. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js.map +1 -0
  1408. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js +29 -0
  1409. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js.map +1 -0
  1410. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js +70 -0
  1411. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js.map +1 -0
  1412. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js +29 -0
  1413. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js.map +1 -0
  1414. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js +29 -0
  1415. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js.map +1 -0
  1416. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js +29 -0
  1417. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js.map +1 -0
  1418. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js +32 -0
  1419. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js.map +1 -0
  1420. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js +29 -0
  1421. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js.map +1 -0
  1422. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js +38 -0
  1423. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js.map +1 -0
  1424. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js +37 -0
  1425. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js.map +1 -0
  1426. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js +41 -0
  1427. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js.map +1 -0
  1428. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js +35 -0
  1429. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js.map +1 -0
  1430. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js +72 -0
  1431. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js.map +1 -0
  1432. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js +32 -0
  1433. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js.map +1 -0
  1434. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js +44 -0
  1435. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js.map +1 -0
  1436. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js +16 -0
  1437. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js.map +1 -0
  1438. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js +16 -0
  1439. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js.map +1 -0
  1440. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js +16 -0
  1441. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js.map +1 -0
  1442. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js +9 -0
  1443. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js.map +1 -0
  1444. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js +32 -0
  1445. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js.map +1 -0
  1446. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js +50 -0
  1447. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js.map +1 -0
  1448. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js +56 -0
  1449. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js.map +1 -0
  1450. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js +25 -0
  1451. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js.map +1 -0
  1452. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js +35 -0
  1453. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js.map +1 -0
  1454. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js +29 -0
  1455. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js.map +1 -0
  1456. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js +34 -0
  1457. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js.map +1 -0
  1458. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js +29 -0
  1459. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js.map +1 -0
  1460. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js +32 -0
  1461. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js.map +1 -0
  1462. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js +39 -0
  1463. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js.map +1 -0
  1464. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js +14 -0
  1465. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js.map +1 -0
  1466. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js +10 -0
  1467. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js.map +1 -0
  1468. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js +10 -0
  1469. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js.map +1 -0
  1470. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js +10 -0
  1471. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js.map +1 -0
  1472. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js +39 -0
  1473. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js.map +1 -0
  1474. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js +18 -0
  1475. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js.map +1 -0
  1476. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js +37 -0
  1477. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js.map +1 -0
  1478. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js +37 -0
  1479. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js.map +1 -0
  1480. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js +36 -0
  1481. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js.map +1 -0
  1482. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js +12 -0
  1483. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js.map +1 -0
  1484. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js +35 -0
  1485. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js.map +1 -0
  1486. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js +34 -0
  1487. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js.map +1 -0
  1488. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js +35 -0
  1489. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js.map +1 -0
  1490. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js +12 -0
  1491. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js.map +1 -0
  1492. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js +242 -0
  1493. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js.map +1 -0
  1494. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js +29 -0
  1495. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js.map +1 -0
  1496. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js +29 -0
  1497. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js.map +1 -0
  1498. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js +29 -0
  1499. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js.map +1 -0
  1500. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js +29 -0
  1501. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js.map +1 -0
  1502. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js +32 -0
  1503. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js.map +1 -0
  1504. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js +36 -0
  1505. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js.map +1 -0
  1506. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js +37 -0
  1507. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js.map +1 -0
  1508. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js +33 -0
  1509. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js.map +1 -0
  1510. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js +34 -0
  1511. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js.map +1 -0
  1512. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js +35 -0
  1513. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js.map +1 -0
  1514. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js +34 -0
  1515. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js.map +1 -0
  1516. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js +34 -0
  1517. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js.map +1 -0
  1518. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js +44 -0
  1519. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js.map +1 -0
  1520. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js +38 -0
  1521. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js.map +1 -0
  1522. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js +34 -0
  1523. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js.map +1 -0
  1524. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js +30 -0
  1525. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js.map +1 -0
  1526. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js +29 -0
  1527. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js.map +1 -0
  1528. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js +33 -0
  1529. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js.map +1 -0
  1530. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js +33 -0
  1531. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js.map +1 -0
  1532. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js +26 -0
  1533. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js.map +1 -0
  1534. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js +26 -0
  1535. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js.map +1 -0
  1536. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js +29 -0
  1537. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js.map +1 -0
  1538. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js +32 -0
  1539. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js.map +1 -0
  1540. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js +29 -0
  1541. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js.map +1 -0
  1542. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js +48 -0
  1543. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js.map +1 -0
  1544. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js +28 -0
  1545. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js.map +1 -0
  1546. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js +29 -0
  1547. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js.map +1 -0
  1548. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js +32 -0
  1549. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js.map +1 -0
  1550. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js +99 -0
  1551. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js.map +1 -0
  1552. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js +75 -0
  1553. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js.map +1 -0
  1554. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js +64 -0
  1555. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js.map +1 -0
  1556. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js +29 -0
  1557. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js.map +1 -0
  1558. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js +32 -0
  1559. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js.map +1 -0
  1560. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js +33 -0
  1561. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js.map +1 -0
  1562. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js +33 -0
  1563. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js.map +1 -0
  1564. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js +29 -0
  1565. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js.map +1 -0
  1566. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js +32 -0
  1567. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js.map +1 -0
  1568. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js +32 -0
  1569. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js.map +1 -0
  1570. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js +31 -0
  1571. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js.map +1 -0
  1572. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js +32 -0
  1573. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js.map +1 -0
  1574. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js +31 -0
  1575. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js.map +1 -0
  1576. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js +43 -0
  1577. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js.map +1 -0
  1578. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js +41 -0
  1579. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js.map +1 -0
  1580. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js +32 -0
  1581. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js.map +1 -0
  1582. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js +34 -0
  1583. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js.map +1 -0
  1584. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js +35 -0
  1585. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js.map +1 -0
  1586. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js +35 -0
  1587. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js.map +1 -0
  1588. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js +54 -0
  1589. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js.map +1 -0
  1590. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js +32 -0
  1591. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js.map +1 -0
  1592. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js +72 -0
  1593. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js.map +1 -0
  1594. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js +32 -0
  1595. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js.map +1 -0
  1596. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js +29 -0
  1597. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js.map +1 -0
  1598. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js +29 -0
  1599. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js.map +1 -0
  1600. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js +29 -0
  1601. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js.map +1 -0
  1602. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js +29 -0
  1603. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js.map +1 -0
  1604. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js +33 -0
  1605. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js.map +1 -0
  1606. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js +33 -0
  1607. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js.map +1 -0
  1608. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js +46 -0
  1609. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js.map +1 -0
  1610. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js +55 -0
  1611. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js.map +1 -0
  1612. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js +95 -0
  1613. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js.map +1 -0
  1614. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js +36 -0
  1615. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js.map +1 -0
  1616. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js +28 -0
  1617. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js.map +1 -0
  1618. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js +29 -0
  1619. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js.map +1 -0
  1620. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js +29 -0
  1621. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js.map +1 -0
  1622. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js +32 -0
  1623. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js.map +1 -0
  1624. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js +43 -0
  1625. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js.map +1 -0
  1626. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js +45 -0
  1627. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js.map +1 -0
  1628. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js +32 -0
  1629. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js.map +1 -0
  1630. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js +29 -0
  1631. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js.map +1 -0
  1632. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js +32 -0
  1633. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js.map +1 -0
  1634. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js +31 -0
  1635. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js.map +1 -0
  1636. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js +32 -0
  1637. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js.map +1 -0
  1638. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js +29 -0
  1639. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js.map +1 -0
  1640. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js +35 -0
  1641. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js.map +1 -0
  1642. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js +35 -0
  1643. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js.map +1 -0
  1644. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js +47 -0
  1645. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js.map +1 -0
  1646. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js +33 -0
  1647. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js.map +1 -0
  1648. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js +34 -0
  1649. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js.map +1 -0
  1650. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js +29 -0
  1651. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js.map +1 -0
  1652. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js +29 -0
  1653. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js.map +1 -0
  1654. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js +34 -0
  1655. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js.map +1 -0
  1656. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js +38 -0
  1657. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js.map +1 -0
  1658. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js +32 -0
  1659. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js.map +1 -0
  1660. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js +38 -0
  1661. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js.map +1 -0
  1662. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js +32 -0
  1663. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js.map +1 -0
  1664. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js +29 -0
  1665. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js.map +1 -0
  1666. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js +26 -0
  1667. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js.map +1 -0
  1668. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js +73 -0
  1669. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js.map +1 -0
  1670. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js +33 -0
  1671. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js.map +1 -0
  1672. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js +31 -0
  1673. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js.map +1 -0
  1674. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js +32 -0
  1675. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js.map +1 -0
  1676. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js +29 -0
  1677. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js.map +1 -0
  1678. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js +42 -0
  1679. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js.map +1 -0
  1680. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js +60 -0
  1681. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js.map +1 -0
  1682. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js +32 -0
  1683. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js.map +1 -0
  1684. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js +49 -0
  1685. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js.map +1 -0
  1686. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js +32 -0
  1687. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js.map +1 -0
  1688. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js +29 -0
  1689. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js.map +1 -0
  1690. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js +23 -0
  1691. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js.map +1 -0
  1692. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js +32 -0
  1693. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js.map +1 -0
  1694. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js +83 -0
  1695. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js.map +1 -0
  1696. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js +67 -0
  1697. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js.map +1 -0
  1698. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js +33 -0
  1699. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js.map +1 -0
  1700. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js +32 -0
  1701. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js.map +1 -0
  1702. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js +28 -0
  1703. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js.map +1 -0
  1704. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js +29 -0
  1705. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js.map +1 -0
  1706. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js +29 -0
  1707. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js.map +1 -0
  1708. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js +26 -0
  1709. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js.map +1 -0
  1710. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js +29 -0
  1711. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js.map +1 -0
  1712. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js +29 -0
  1713. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js.map +1 -0
  1714. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js +29 -0
  1715. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js.map +1 -0
  1716. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js +29 -0
  1717. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js.map +1 -0
  1718. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js +24 -0
  1719. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js.map +1 -0
  1720. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js +29 -0
  1721. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js.map +1 -0
  1722. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js +29 -0
  1723. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js.map +1 -0
  1724. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js +29 -0
  1725. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js.map +1 -0
  1726. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js +47 -0
  1727. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js.map +1 -0
  1728. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js +60 -0
  1729. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js.map +1 -0
  1730. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js +29 -0
  1731. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js.map +1 -0
  1732. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js +22 -0
  1733. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js.map +1 -0
  1734. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js +22 -0
  1735. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js.map +1 -0
  1736. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js +29 -0
  1737. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js.map +1 -0
  1738. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js +29 -0
  1739. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js.map +1 -0
  1740. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js +29 -0
  1741. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js.map +1 -0
  1742. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js +29 -0
  1743. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js.map +1 -0
  1744. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js +32 -0
  1745. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js.map +1 -0
  1746. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js +29 -0
  1747. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js.map +1 -0
  1748. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js +29 -0
  1749. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js.map +1 -0
  1750. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js +29 -0
  1751. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js.map +1 -0
  1752. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js +29 -0
  1753. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js.map +1 -0
  1754. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js +268 -0
  1755. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js.map +1 -0
  1756. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js +32 -0
  1757. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js.map +1 -0
  1758. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js +29 -0
  1759. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js.map +1 -0
  1760. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js +32 -0
  1761. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js.map +1 -0
  1762. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js +32 -0
  1763. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js.map +1 -0
  1764. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js +43 -0
  1765. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js.map +1 -0
  1766. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js +35 -0
  1767. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js.map +1 -0
  1768. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js +30 -0
  1769. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js.map +1 -0
  1770. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js +30 -0
  1771. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js.map +1 -0
  1772. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js +48 -0
  1773. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js.map +1 -0
  1774. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js +49 -0
  1775. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js.map +1 -0
  1776. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js +29 -0
  1777. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js.map +1 -0
  1778. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js +21 -0
  1779. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js.map +1 -0
  1780. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js +29 -0
  1781. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js.map +1 -0
  1782. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js +28 -0
  1783. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js.map +1 -0
  1784. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js +33 -0
  1785. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js.map +1 -0
  1786. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js +29 -0
  1787. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js.map +1 -0
  1788. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js +32 -0
  1789. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js.map +1 -0
  1790. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js +29 -0
  1791. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js.map +1 -0
  1792. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js +38 -0
  1793. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js.map +1 -0
  1794. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js +32 -0
  1795. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js.map +1 -0
  1796. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js +32 -0
  1797. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js.map +1 -0
  1798. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js +29 -0
  1799. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js.map +1 -0
  1800. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js +29 -0
  1801. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js.map +1 -0
  1802. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js +26 -0
  1803. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js.map +1 -0
  1804. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js +30 -0
  1805. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js.map +1 -0
  1806. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js +33 -0
  1807. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js.map +1 -0
  1808. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js +47 -0
  1809. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js.map +1 -0
  1810. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js +32 -0
  1811. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js.map +1 -0
  1812. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js +37 -0
  1813. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js.map +1 -0
  1814. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js +43 -0
  1815. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js.map +1 -0
  1816. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js +33 -0
  1817. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js.map +1 -0
  1818. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js +32 -0
  1819. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js.map +1 -0
  1820. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js +32 -0
  1821. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js.map +1 -0
  1822. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js +32 -0
  1823. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js.map +1 -0
  1824. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js +24 -0
  1825. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js.map +1 -0
  1826. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js +35 -0
  1827. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js.map +1 -0
  1828. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js +31 -0
  1829. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js.map +1 -0
  1830. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js +29 -0
  1831. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js.map +1 -0
  1832. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js +89 -0
  1833. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js.map +1 -0
  1834. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js +78 -0
  1835. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js.map +1 -0
  1836. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js +98 -0
  1837. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js.map +1 -0
  1838. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js +87 -0
  1839. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js.map +1 -0
  1840. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js +82 -0
  1841. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js.map +1 -0
  1842. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js +106 -0
  1843. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js.map +1 -0
  1844. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js +175 -0
  1845. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js.map +1 -0
  1846. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js +41 -0
  1847. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js.map +1 -0
  1848. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js +107 -0
  1849. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js.map +1 -0
  1850. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js +70 -0
  1851. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js.map +1 -0
  1852. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js +23 -0
  1853. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js.map +1 -0
  1854. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js +78 -0
  1855. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js.map +1 -0
  1856. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js +51 -0
  1857. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js.map +1 -0
  1858. package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js +92 -0
  1859. package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js.map +1 -0
  1860. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js +22 -0
  1861. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js.map +1 -0
  1862. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js +22 -0
  1863. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js.map +1 -0
  1864. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js +22 -0
  1865. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js.map +1 -0
  1866. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js +22 -0
  1867. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js.map +1 -0
  1868. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js +22 -0
  1869. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js.map +1 -0
  1870. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js +22 -0
  1871. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js.map +1 -0
  1872. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js +22 -0
  1873. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js.map +1 -0
  1874. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js +22 -0
  1875. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js.map +1 -0
  1876. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js +22 -0
  1877. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js.map +1 -0
  1878. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js +22 -0
  1879. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js.map +1 -0
  1880. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js +22 -0
  1881. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js.map +1 -0
  1882. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js +22 -0
  1883. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js.map +1 -0
  1884. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js +22 -0
  1885. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js.map +1 -0
  1886. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js +23 -0
  1887. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js.map +1 -0
  1888. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js +22 -0
  1889. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js.map +1 -0
  1890. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js +22 -0
  1891. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js.map +1 -0
  1892. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js +22 -0
  1893. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js.map +1 -0
  1894. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js +22 -0
  1895. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js.map +1 -0
  1896. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js +22 -0
  1897. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js.map +1 -0
  1898. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js +22 -0
  1899. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js.map +1 -0
  1900. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js +6 -0
  1901. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js.map +1 -0
  1902. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js +22 -0
  1903. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js.map +1 -0
  1904. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js +22 -0
  1905. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js.map +1 -0
  1906. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js +22 -0
  1907. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js.map +1 -0
  1908. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js +22 -0
  1909. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js.map +1 -0
  1910. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js +22 -0
  1911. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js.map +1 -0
  1912. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js +22 -0
  1913. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js.map +1 -0
  1914. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js +22 -0
  1915. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js.map +1 -0
  1916. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js +22 -0
  1917. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js.map +1 -0
  1918. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js +22 -0
  1919. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js.map +1 -0
  1920. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js +22 -0
  1921. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js.map +1 -0
  1922. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js +22 -0
  1923. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js.map +1 -0
  1924. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js +22 -0
  1925. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js.map +1 -0
  1926. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js +22 -0
  1927. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js.map +1 -0
  1928. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js +22 -0
  1929. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js.map +1 -0
  1930. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js +22 -0
  1931. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js.map +1 -0
  1932. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js +22 -0
  1933. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js.map +1 -0
  1934. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js +22 -0
  1935. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js.map +1 -0
  1936. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js +22 -0
  1937. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js.map +1 -0
  1938. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js +22 -0
  1939. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js.map +1 -0
  1940. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js +22 -0
  1941. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js.map +1 -0
  1942. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js +22 -0
  1943. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js.map +1 -0
  1944. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js +22 -0
  1945. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js.map +1 -0
  1946. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js +22 -0
  1947. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js.map +1 -0
  1948. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js +22 -0
  1949. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js.map +1 -0
  1950. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js +22 -0
  1951. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js.map +1 -0
  1952. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js +22 -0
  1953. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js.map +1 -0
  1954. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js +22 -0
  1955. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js.map +1 -0
  1956. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js +22 -0
  1957. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js.map +1 -0
  1958. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js +22 -0
  1959. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js.map +1 -0
  1960. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js +22 -0
  1961. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js.map +1 -0
  1962. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js +22 -0
  1963. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js.map +1 -0
  1964. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js +22 -0
  1965. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js.map +1 -0
  1966. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js +22 -0
  1967. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js.map +1 -0
  1968. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js +22 -0
  1969. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js.map +1 -0
  1970. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js +22 -0
  1971. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js.map +1 -0
  1972. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js +22 -0
  1973. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js.map +1 -0
  1974. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js +22 -0
  1975. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js.map +1 -0
  1976. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js +22 -0
  1977. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js.map +1 -0
  1978. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js +22 -0
  1979. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js.map +1 -0
  1980. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js +22 -0
  1981. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js.map +1 -0
  1982. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js +22 -0
  1983. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js.map +1 -0
  1984. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js +22 -0
  1985. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js.map +1 -0
  1986. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js +22 -0
  1987. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js.map +1 -0
  1988. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js +22 -0
  1989. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js.map +1 -0
  1990. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js +22 -0
  1991. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js.map +1 -0
  1992. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js +22 -0
  1993. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js.map +1 -0
  1994. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js +22 -0
  1995. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js.map +1 -0
  1996. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js +22 -0
  1997. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js.map +1 -0
  1998. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js +22 -0
  1999. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js.map +1 -0
  2000. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js +22 -0
  2001. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js.map +1 -0
  2002. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js +22 -0
  2003. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js.map +1 -0
  2004. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js +22 -0
  2005. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js.map +1 -0
  2006. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js +22 -0
  2007. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js.map +1 -0
  2008. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js +22 -0
  2009. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js.map +1 -0
  2010. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js +6 -0
  2011. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js.map +1 -0
  2012. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js +22 -0
  2013. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js.map +1 -0
  2014. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js +22 -0
  2015. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js.map +1 -0
  2016. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js +22 -0
  2017. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js.map +1 -0
  2018. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js +22 -0
  2019. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js.map +1 -0
  2020. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js +22 -0
  2021. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js.map +1 -0
  2022. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js +22 -0
  2023. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js.map +1 -0
  2024. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js +22 -0
  2025. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js.map +1 -0
  2026. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js +22 -0
  2027. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js.map +1 -0
  2028. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js +22 -0
  2029. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js.map +1 -0
  2030. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js +22 -0
  2031. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js.map +1 -0
  2032. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js +22 -0
  2033. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js.map +1 -0
  2034. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js +22 -0
  2035. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js.map +1 -0
  2036. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js +22 -0
  2037. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js.map +1 -0
  2038. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js +6 -0
  2039. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js.map +1 -0
  2040. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js +22 -0
  2041. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js.map +1 -0
  2042. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js +22 -0
  2043. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js.map +1 -0
  2044. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js +22 -0
  2045. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js.map +1 -0
  2046. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js +22 -0
  2047. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js.map +1 -0
  2048. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js +22 -0
  2049. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js.map +1 -0
  2050. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js +22 -0
  2051. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js.map +1 -0
  2052. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js +22 -0
  2053. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js.map +1 -0
  2054. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js +22 -0
  2055. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js.map +1 -0
  2056. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js +22 -0
  2057. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js.map +1 -0
  2058. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js +22 -0
  2059. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js.map +1 -0
  2060. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js +22 -0
  2061. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js.map +1 -0
  2062. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js +22 -0
  2063. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js.map +1 -0
  2064. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js +22 -0
  2065. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js.map +1 -0
  2066. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js +22 -0
  2067. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js.map +1 -0
  2068. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js +22 -0
  2069. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js.map +1 -0
  2070. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js +22 -0
  2071. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js.map +1 -0
  2072. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js +22 -0
  2073. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js.map +1 -0
  2074. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js +22 -0
  2075. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js.map +1 -0
  2076. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js +22 -0
  2077. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js.map +1 -0
  2078. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js +22 -0
  2079. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js.map +1 -0
  2080. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js +22 -0
  2081. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js.map +1 -0
  2082. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js +22 -0
  2083. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js.map +1 -0
  2084. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js +22 -0
  2085. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js.map +1 -0
  2086. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js +22 -0
  2087. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js.map +1 -0
  2088. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js +22 -0
  2089. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js.map +1 -0
  2090. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js +22 -0
  2091. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js.map +1 -0
  2092. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js +22 -0
  2093. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js.map +1 -0
  2094. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js +22 -0
  2095. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js.map +1 -0
  2096. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js +22 -0
  2097. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js.map +1 -0
  2098. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js +24 -0
  2099. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js.map +1 -0
  2100. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js +22 -0
  2101. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js.map +1 -0
  2102. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js +22 -0
  2103. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js.map +1 -0
  2104. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js +22 -0
  2105. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js.map +1 -0
  2106. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js +22 -0
  2107. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js.map +1 -0
  2108. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js +22 -0
  2109. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js.map +1 -0
  2110. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js +22 -0
  2111. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js.map +1 -0
  2112. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js +22 -0
  2113. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js.map +1 -0
  2114. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js +22 -0
  2115. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js.map +1 -0
  2116. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js +22 -0
  2117. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js.map +1 -0
  2118. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js +22 -0
  2119. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js.map +1 -0
  2120. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js +22 -0
  2121. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js.map +1 -0
  2122. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js +22 -0
  2123. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js.map +1 -0
  2124. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js +22 -0
  2125. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js.map +1 -0
  2126. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js +22 -0
  2127. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js.map +1 -0
  2128. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js +22 -0
  2129. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js.map +1 -0
  2130. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js +22 -0
  2131. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js.map +1 -0
  2132. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js +22 -0
  2133. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js.map +1 -0
  2134. package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js +228 -0
  2135. package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js.map +1 -0
  2136. package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js +74 -0
  2137. package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js.map +1 -0
  2138. package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js +94 -0
  2139. package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js.map +1 -0
  2140. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js +320 -0
  2141. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js.map +1 -0
  2142. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js +123 -0
  2143. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js.map +1 -0
  2144. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js +51 -0
  2145. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js.map +1 -0
  2146. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js +80 -0
  2147. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js.map +1 -0
  2148. package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js +22 -0
  2149. package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js.map +1 -0
  2150. package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js +67 -0
  2151. package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js.map +1 -0
  2152. package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js +120 -0
  2153. package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js.map +1 -0
  2154. package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js +340 -0
  2155. package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js.map +1 -0
  2156. package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js +27 -0
  2157. package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js.map +1 -0
  2158. package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js +244 -0
  2159. package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js.map +1 -0
  2160. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js +23 -0
  2161. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js.map +1 -0
  2162. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js +23 -0
  2163. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js.map +1 -0
  2164. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js +22 -0
  2165. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js.map +1 -0
  2166. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js +292 -0
  2167. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js.map +1 -0
  2168. package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js +314 -0
  2169. package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js.map +1 -0
  2170. package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js +68 -0
  2171. package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js.map +1 -0
  2172. package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js +118 -0
  2173. package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js.map +1 -0
  2174. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js +27 -0
  2175. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js.map +1 -0
  2176. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js +640 -0
  2177. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js.map +1 -0
  2178. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js +239 -0
  2179. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js.map +1 -0
  2180. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js +81 -0
  2181. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js.map +1 -0
  2182. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js +780 -0
  2183. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js.map +1 -0
  2184. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js +1184 -0
  2185. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js.map +1 -0
  2186. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js +192 -0
  2187. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js.map +1 -0
  2188. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js +84 -0
  2189. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js.map +1 -0
  2190. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js +70 -0
  2191. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js.map +1 -0
  2192. package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js +42 -0
  2193. package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js.map +1 -0
  2194. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js +22 -0
  2195. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js.map +1 -0
  2196. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js +62 -0
  2197. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js.map +1 -0
  2198. package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js +25 -0
  2199. package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js.map +1 -0
  2200. package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js +386 -0
  2201. package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js.map +1 -0
  2202. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js +18 -0
  2203. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js.map +1 -0
  2204. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js +15 -0
  2205. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js.map +1 -0
  2206. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js +184 -0
  2207. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js.map +1 -0
  2208. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js +452 -0
  2209. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js.map +1 -0
  2210. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js +77 -0
  2211. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js.map +1 -0
  2212. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js +197 -0
  2213. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js.map +1 -0
  2214. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js +328 -0
  2215. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js.map +1 -0
  2216. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js +87 -0
  2217. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js.map +1 -0
  2218. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js +439 -0
  2219. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js.map +1 -0
  2220. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js +102 -0
  2221. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js.map +1 -0
  2222. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js +186 -0
  2223. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js.map +1 -0
  2224. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js +75 -0
  2225. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js.map +1 -0
  2226. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js +308 -0
  2227. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js.map +1 -0
  2228. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js +58 -0
  2229. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js.map +1 -0
  2230. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js +70 -0
  2231. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js.map +1 -0
  2232. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js +38 -0
  2233. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js.map +1 -0
  2234. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js +59 -0
  2235. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js.map +1 -0
  2236. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js +35 -0
  2237. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js.map +1 -0
  2238. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js +81 -0
  2239. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js.map +1 -0
  2240. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js +682 -0
  2241. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js.map +1 -0
  2242. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js +19 -0
  2243. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js.map +1 -0
  2244. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js +243 -0
  2245. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js.map +1 -0
  2246. package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js +41 -0
  2247. package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js.map +1 -0
  2248. package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js +184 -0
  2249. package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js.map +1 -0
  2250. package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js +116 -0
  2251. package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js.map +1 -0
  2252. package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js +558 -0
  2253. package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js.map +1 -0
  2254. package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js +30 -0
  2255. package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js.map +1 -0
  2256. package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js +76 -0
  2257. package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js.map +1 -0
  2258. package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js +46 -0
  2259. package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js.map +1 -0
  2260. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js +48 -0
  2261. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js.map +1 -0
  2262. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js +58 -0
  2263. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js.map +1 -0
  2264. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js +180 -0
  2265. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js.map +1 -0
  2266. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js +118 -0
  2267. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js.map +1 -0
  2268. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js +56 -0
  2269. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js.map +1 -0
  2270. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js +69 -0
  2271. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js.map +1 -0
  2272. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js +41 -0
  2273. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js.map +1 -0
  2274. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js +19 -0
  2275. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js.map +1 -0
  2276. package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js +87 -0
  2277. package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js.map +1 -0
  2278. package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js +6 -0
  2279. package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js.map +1 -0
  2280. package/dist/node_modules/long/src/long.js +675 -0
  2281. package/dist/node_modules/long/src/long.js.map +1 -0
  2282. package/dist/node_modules/seedrandom/index.js +19 -0
  2283. package/dist/node_modules/seedrandom/index.js.map +1 -0
  2284. package/dist/node_modules/seedrandom/lib/alea.js +48 -0
  2285. package/dist/node_modules/seedrandom/lib/alea.js.map +1 -0
  2286. package/dist/node_modules/seedrandom/lib/tychei.js +41 -0
  2287. package/dist/node_modules/seedrandom/lib/tychei.js.map +1 -0
  2288. package/dist/node_modules/seedrandom/lib/xor128.js +41 -0
  2289. package/dist/node_modules/seedrandom/lib/xor128.js.map +1 -0
  2290. package/dist/node_modules/seedrandom/lib/xor4096.js +50 -0
  2291. package/dist/node_modules/seedrandom/lib/xor4096.js.map +1 -0
  2292. package/dist/node_modules/seedrandom/lib/xorshift7.js +53 -0
  2293. package/dist/node_modules/seedrandom/lib/xorshift7.js.map +1 -0
  2294. package/dist/node_modules/seedrandom/lib/xorwow.js +41 -0
  2295. package/dist/node_modules/seedrandom/lib/xorwow.js.map +1 -0
  2296. package/dist/node_modules/seedrandom/seedrandom.js +99 -0
  2297. package/dist/node_modules/seedrandom/seedrandom.js.map +1 -0
  2298. package/package.json +4 -1
  2299. package/dist/features/trial-session/comps/learning-plan/index.js +0 -353
  2300. package/dist/features/trial-session/comps/learning-plan/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_compiler.js","sources":["../../../../../node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// Please make sure the shaker key in makeShaderKey in gpgpu_math.ts is well\n// mapped if any shader source code is changed in this file.\nimport { backend_util, util } from '@tensorflow/tfjs-core';\nconst { getBroadcastDims } = backend_util;\nimport { getGlslDifferences } from './glsl_version';\nimport * as shader_util from './shader_compiler_util';\nexport function makeShader(inputsInfo, outputShape, program) {\n const prefixSnippets = [];\n inputsInfo.forEach(x => {\n const size = util.sizeFromShape(x.shapeInfo.logicalShape);\n // Snippet when we decided to upload the values as uniform.\n if (x.shapeInfo.isUniform) {\n prefixSnippets.push(`uniform float ${x.name}${size > 1 ? `[${size}]` : ''};`);\n }\n else {\n prefixSnippets.push(`uniform sampler2D ${x.name};`);\n prefixSnippets.push(`uniform int offset${x.name};`);\n }\n if (program.enableShapeUniforms) {\n const { uniformShape } = getUniformInfoFromShape(program.packedInputs, x.shapeInfo.logicalShape, x.shapeInfo.texShape);\n switch (uniformShape.length) {\n case 1:\n prefixSnippets.push(`uniform int ${x.name}Shape;`);\n break;\n case 2:\n prefixSnippets.push(`uniform ivec2 ${x.name}Shape;`);\n break;\n case 3:\n prefixSnippets.push(`uniform ivec3 ${x.name}Shape;`);\n break;\n case 4:\n prefixSnippets.push(`uniform ivec4 ${x.name}Shape;`);\n break;\n default:\n break;\n }\n prefixSnippets.push(`uniform ivec2 ${x.name}TexShape;`);\n }\n });\n if (program.enableShapeUniforms) {\n switch (outputShape.logicalShape.length) {\n case 1:\n prefixSnippets.push(`uniform int outShape;`);\n break;\n case 2:\n prefixSnippets.push(`uniform ivec2 outShape;`);\n prefixSnippets.push(`uniform int outShapeStrides;`);\n break;\n case 3:\n prefixSnippets.push(`uniform ivec3 outShape;`);\n prefixSnippets.push(`uniform ivec2 outShapeStrides;`);\n break;\n case 4:\n prefixSnippets.push(`uniform ivec4 outShape;`);\n prefixSnippets.push(`uniform ivec3 outShapeStrides;`);\n break;\n default:\n break;\n }\n prefixSnippets.push(`uniform ivec2 outTexShape;`);\n }\n if (program.customUniforms) {\n program.customUniforms.forEach((d) => {\n prefixSnippets.push(`uniform ${d.type} ${d.name}${d.arrayIndex ? `[${d.arrayIndex}]` : ''};`);\n });\n }\n const inputPrefixSnippet = prefixSnippets.join('\\n');\n const inputSamplingSnippet = inputsInfo\n .map(x => getInputSamplingSnippet(x, outputShape, program.packedInputs, program.enableShapeUniforms))\n .join('\\n');\n const outTexShape = outputShape.texShape;\n const glsl = getGlslDifferences();\n const floatTextureSampleSnippet = getFloatTextureSampleSnippet(glsl);\n let outputSamplingSnippet;\n let floatTextureSetOutputSnippet;\n let shaderPrefix = getShaderPrefix(glsl);\n if (outputShape.isPacked) {\n outputSamplingSnippet = getPackedOutputSamplingSnippet(outputShape.logicalShape, outTexShape, program.enableShapeUniforms);\n floatTextureSetOutputSnippet = getFloatTextureSetRGBASnippet(glsl);\n }\n else {\n outputSamplingSnippet = getOutputSamplingSnippet(outputShape.logicalShape, outTexShape, program.enableShapeUniforms);\n floatTextureSetOutputSnippet = getFloatTextureSetRSnippet(glsl);\n }\n if (program.packedInputs) {\n shaderPrefix += SHADER_PACKED_PREFIX;\n }\n const source = [\n shaderPrefix, floatTextureSampleSnippet, floatTextureSetOutputSnippet,\n inputPrefixSnippet, outputSamplingSnippet, inputSamplingSnippet,\n program.userCode\n ].join('\\n');\n return source;\n}\nfunction getSamplerFromInInfo(inInfo, enableShapeUniforms = false) {\n const shape = inInfo.shapeInfo.logicalShape;\n switch (shape.length) {\n case 0:\n return getSamplerScalar(inInfo, enableShapeUniforms);\n case 1:\n return getSampler1D(inInfo, enableShapeUniforms);\n case 2:\n return getSampler2D(inInfo, enableShapeUniforms);\n case 3:\n return getSampler3D(inInfo, enableShapeUniforms);\n case 4:\n return getSampler4D(inInfo, enableShapeUniforms);\n case 5:\n return getSampler5D(inInfo);\n case 6:\n return getSampler6D(inInfo);\n default:\n throw new Error(`${shape.length}-D input sampling` +\n ` is not yet supported`);\n }\n}\nfunction getPackedSamplerFromInInfo(inInfo, enableShapeUniforms) {\n const shape = inInfo.shapeInfo.logicalShape;\n switch (shape.length) {\n case 0:\n return getPackedSamplerScalar(inInfo);\n case 1:\n return getPackedSampler1D(inInfo, enableShapeUniforms);\n case 2:\n return getPackedSampler2D(inInfo, enableShapeUniforms);\n case 3:\n return getPackedSampler3D(inInfo, enableShapeUniforms);\n default:\n return getPackedSamplerND(inInfo, enableShapeUniforms);\n }\n}\nfunction getInputSamplingSnippet(inInfo, outShapeInfo, usesPackedTextures = false, enableShapeUniforms) {\n let res = '';\n if (usesPackedTextures) {\n res += getPackedSamplerFromInInfo(inInfo, enableShapeUniforms);\n }\n else {\n res += getSamplerFromInInfo(inInfo, enableShapeUniforms);\n }\n const inShape = inInfo.shapeInfo.logicalShape;\n const outShape = outShapeInfo.logicalShape;\n if (inShape.length <= outShape.length) {\n if (usesPackedTextures) {\n res += getPackedSamplerAtOutputCoords(inInfo, outShapeInfo);\n }\n else {\n res += getSamplerAtOutputCoords(inInfo, outShapeInfo);\n }\n }\n return res;\n}\nfunction getPackedOutputSamplingSnippet(outShape, outTexShape, enableShapeUniforms) {\n switch (outShape.length) {\n case 0:\n return getOutputScalarCoords();\n case 1:\n return getOutputPacked1DCoords(outShape, outTexShape, enableShapeUniforms);\n case 2:\n return getOutputPacked2DCoords(outShape, outTexShape, enableShapeUniforms);\n case 3:\n return getOutputPacked3DCoords(outShape, outTexShape, enableShapeUniforms);\n default:\n return getOutputPackedNDCoords(outShape, outTexShape, enableShapeUniforms);\n }\n}\nfunction getOutputSamplingSnippet(outShape, outTexShape, enableShapeUniforms) {\n switch (outShape.length) {\n case 0:\n return getOutputScalarCoords();\n case 1:\n return getOutput1DCoords(outShape, outTexShape, enableShapeUniforms);\n case 2:\n return getOutput2DCoords(outShape, outTexShape, enableShapeUniforms);\n case 3:\n return getOutput3DCoords(outShape, outTexShape, enableShapeUniforms);\n case 4:\n return getOutput4DCoords(outShape, outTexShape, enableShapeUniforms);\n case 5:\n return getOutput5DCoords(outShape, outTexShape);\n case 6:\n return getOutput6DCoords(outShape, outTexShape);\n default:\n throw new Error(`${outShape.length}-D output sampling is not yet supported`);\n }\n}\nfunction getFloatTextureSampleSnippet(glsl) {\n return `\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ${glsl.texture2D}(textureSampler, uv).r;\n }\n `;\n}\nfunction getFloatTextureSetRSnippet(glsl) {\n return `\n void setOutput(float val) {\n ${glsl.output} = vec4(val, 0, 0, 0);\n }\n `;\n}\nfunction getFloatTextureSetRGBASnippet(glsl) {\n return `\n void setOutput(vec4 val) {\n ${glsl.output} = val;\n }\n `;\n}\nfunction getShaderPrefix(glsl) {\n const SHADER_PREFIX = `${glsl.version}\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ${glsl.varyingFs} vec2 resultUV;\n ${glsl.defineOutput}\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ${glsl.defineSpecialNaN}\n ${glsl.defineSpecialInf}\n ${glsl.defineRound}\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ${SAMPLE_1D_SNIPPET}\n ${SAMPLE_2D_SNIPPET}\n ${SAMPLE_3D_SNIPPET}\n `;\n return SHADER_PREFIX;\n}\nconst SAMPLE_1D_SNIPPET = `\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nconst SAMPLE_2D_SNIPPET = `\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nconst SAMPLE_3D_SNIPPET = `\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n`;\nconst SHADER_PACKED_PREFIX = `\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n`;\nfunction getOutputScalarCoords() {\n return `\n int getOutputCoords() {\n return 0;\n }\n `;\n}\nfunction getOutputPacked1DCoords(shape, texShape, enableShapeUniforms) {\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n if (packedTexShape[0] === 1) {\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n return 2 * int(resultUV.x * ceil(float(outTexShape[1]) / 2.0));\n }\n `;\n }\n return `\n int getOutputCoords() {\n return 2 * int(resultUV.x * ${packedTexShape[1]}.0);\n }\n `;\n }\n if (packedTexShape[1] === 1) {\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n return 2 * int(resultUV.y * ceil(float(outTexShape[0]) / 2.0));\n }\n `;\n }\n return `\n int getOutputCoords() {\n return 2 * int(resultUV.y * ${packedTexShape[0]}.0);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n return 2 * (resTexRC.x * packedTexShape[1] + resTexRC.y);\n }\n `;\n }\n return `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n return 2 * (resTexRC.x * ${packedTexShape[1]} + resTexRC.y);\n }\n `;\n}\nfunction getOutput1DCoords(shape, texShape, enableShapeUniforms) {\n if (texShape[0] === 1) {\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n return int(resultUV.x * float(outTexShape[1]));\n }\n `;\n }\n return `\n int getOutputCoords() {\n return int(resultUV.x * ${texShape[1]}.0);\n }\n `;\n }\n if (texShape[1] === 1) {\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n return int(resultUV.y * float(outTexShape[0]));\n }\n `;\n }\n return `\n int getOutputCoords() {\n return int(resultUV.y * ${texShape[0]}.0);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n return resTexRC.x * outTexShape[1] + resTexRC.y;\n }\n `;\n }\n return `\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n return resTexRC.x * ${texShape[1]} + resTexRC.y;\n }\n `;\n}\nfunction getOutputPacked3DCoords(shape, texShape, enableShapeUniforms) {\n if (enableShapeUniforms) {\n return `\n ivec3 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec3(b, r, c);\n }\n `;\n }\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n const texelsInLogicalRow = Math.ceil(shape[2] / 2);\n const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[1] / 2);\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y;\n\n int b = index / ${texelsInBatch};\n index -= b * ${texelsInBatch};\n\n int r = 2 * (index / ${texelsInLogicalRow});\n int c = imod(index, ${texelsInLogicalRow}) * 2;\n\n return ivec3(b, r, c);\n }\n `;\n}\nfunction getOutput3DCoords(shape, texShape, enableShapeUniforms) {\n if (enableShapeUniforms) {\n const coordsFromIndexSnippet = shader_util.getOutputLogicalCoordinatesFromFlatIndexByUniform(['r', 'c', 'd'], shape);\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n ${coordsFromIndexSnippet}\n return ivec3(r, c, d);\n }\n`;\n }\n const coordsFromIndexSnippet = shader_util.getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd'], shape);\n return `\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n ${coordsFromIndexSnippet}\n return ivec3(r, c, d);\n }\n `;\n}\nfunction getOutputPackedNDCoords(shape, texShape, enableShapeUniforms) {\n if (enableShapeUniforms) {\n // TODO: support 5d and 6d\n return `\n ivec4 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int texelsInLogicalRow = int(ceil(float(outShape[3]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatchN = texelsInBatch * outShape[1];\n\n int b2 = index / texelsInBatchN;\n index -= b2 * texelsInBatchN;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec4(b2, b, r, c);\n }\n `;\n }\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n const texelsInLogicalRow = Math.ceil(shape[shape.length - 1] / 2);\n const texelsInBatch = texelsInLogicalRow * Math.ceil(shape[shape.length - 2] / 2);\n let texelsInBatchN = texelsInBatch;\n let batches = ``;\n let coords = 'b, r, c';\n for (let b = 2; b < shape.length - 1; b++) {\n texelsInBatchN *= shape[shape.length - b - 1];\n batches = `\n int b${b} = index / ${texelsInBatchN};\n index -= b${b} * ${texelsInBatchN};\n ` + batches;\n coords = `b${b}, ` + coords;\n }\n return `\n ivec${shape.length} getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y;\n\n ${batches}\n\n int b = index / ${texelsInBatch};\n index -= b * ${texelsInBatch};\n\n int r = 2 * (index / ${texelsInLogicalRow});\n int c = imod(index, ${texelsInLogicalRow}) * 2;\n\n return ivec${shape.length}(${coords});\n }\n `;\n}\nfunction getOutput4DCoords(shape, texShape, enableShapeUniforms) {\n if (enableShapeUniforms) {\n const coordsFromIndexSnippet = shader_util.getOutputLogicalCoordinatesFromFlatIndexByUniform(['r', 'c', 'd', 'd2'], shape);\n return `\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n ${coordsFromIndexSnippet}\n return ivec4(r, c, d, d2);\n }\n `;\n }\n const coordsFromIndexSnippet = shader_util.getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2'], shape);\n return `\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n ${coordsFromIndexSnippet}\n return ivec4(r, c, d, d2);\n }\n `;\n}\nfunction getOutput5DCoords(shape, texShape) {\n const coordsFromIndexSnippet = shader_util.getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2', 'd3'], shape);\n return `\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(${texShape[0]},\n ${texShape[1]}));\n\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n\n ${coordsFromIndexSnippet}\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n `;\n}\nfunction getOutput6DCoords(shape, texShape) {\n const coordsFromIndexSnippet = shader_util.getLogicalCoordinatesFromFlatIndex(['r', 'c', 'd', 'd2', 'd3', 'd4'], shape);\n return `\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n\n ${coordsFromIndexSnippet}\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n `;\n}\nfunction getOutputPacked2DCoords(shape, texShape, enableShapeUniforms) {\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n if (util.arraysEqual(shape, texShape)) {\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n return 2 * ivec2(resultUV.yx * vec2(packedTexShape[0], packedTexShape[1]));\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n }\n `;\n }\n // texels needed to accommodate a logical row\n const texelsInLogicalRow = Math.ceil(shape[1] / 2);\n /**\n * getOutputCoords\n *\n * resTexRC: The rows and columns of the texels. If you move over one\n * texel to the right in the packed texture, you are moving over one column\n * (not two).\n *\n * index: The texel index\n */\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec2(r, c);\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${packedTexShape[0]}, ${packedTexShape[1]}));\n\n int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y;\n int r = 2 * (index / ${texelsInLogicalRow});\n int c = imod(index, ${texelsInLogicalRow}) * 2;\n\n return ivec2(r, c);\n }\n `;\n}\nfunction getOutput2DCoords(shape, texShape, enableShapeUniforms) {\n if (util.arraysEqual(shape, texShape)) {\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(outTexShape[0], outTexShape[1]));\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(${texShape[0]}, ${texShape[1]}));\n }\n `;\n }\n if (shape[1] === 1) {\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n return ivec2(index, 0);\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n return ivec2(index, 0);\n }\n `;\n }\n if (shape[0] === 1) {\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n return ivec2(0, index);\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n return ivec2(0, index);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(outTexShape[0], outTexShape[1]));\n int index = resTexRC.x * outTexShape[1] + resTexRC.y;\n int r = index / outShape[1];\n int c = index - r * outShape[1];\n return ivec2(r, c);\n }\n `;\n }\n return `\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${texShape[0]}, ${texShape[1]}));\n int index = resTexRC.x * ${texShape[1]} + resTexRC.y;\n int r = index / ${shape[1]};\n int c = index - r * ${shape[1]};\n return ivec2(r, c);\n }\n `;\n}\nfunction getFlatOffsetUniformName(texName) {\n return `offset${texName}`;\n}\nfunction getPackedSamplerScalar(inputInfo) {\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const glsl = getGlslDifferences();\n return `\n vec4 ${funcName}() {\n return ${glsl.texture2D}(${texName}, halfCR);\n }\n `;\n}\nfunction getSamplerScalar(inputInfo, enableShapeUniforms) {\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n if (inputInfo.shapeInfo.isUniform) {\n return `float ${funcName}() {return ${texName};}`;\n }\n const [texNumR, texNumC] = inputInfo.shapeInfo.texShape;\n if (texNumR === 1 && texNumC === 1) {\n return `\n float ${funcName}() {\n return sampleTexture(${texName}, halfCR);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n if (enableShapeUniforms) {\n return `\n float ${funcName}() {\n vec2 uv = uvFromFlat(${texName}TexShape[0], ${texName}TexShape[1], ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const [tNumR, tNumC] = inputInfo.shapeInfo.texShape;\n return `\n float ${funcName}() {\n vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getPackedSampler1D(inputInfo, enableShapeUniforms) {\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const texShape = inputInfo.shapeInfo.texShape;\n const glsl = getGlslDifferences();\n if (enableShapeUniforms) {\n return `\n vec4 ${funcName}(int index) {\n ivec2 packedTexShape = ivec2(ceil(float(${texName}TexShape[0]) / 2.0), ceil(float(${texName}TexShape[1]) / 2.0));\n vec2 uv = packedUVfrom1D(\n packedTexShape[0], packedTexShape[1], index);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n return `\n vec4 ${funcName}(int index) {\n vec2 uv = packedUVfrom1D(\n ${packedTexShape[0]}, ${packedTexShape[1]}, index);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n}\nfunction getSampler1D(inputInfo, enableShapeUniforms) {\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int index) {\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const texShape = inputInfo.shapeInfo.texShape;\n const tNumR = texShape[0];\n const tNumC = texShape[1];\n if (tNumC === 1 && tNumR === 1) {\n return `\n float ${funcName}(int index) {\n return sampleTexture(${texName}, halfCR);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n if (tNumC === 1) {\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int index) {\n vec2 uv = vec2(0.5, (float(index + ${offset}) + 0.5) / float(${texName}TexShape[0]));\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int index) {\n vec2 uv = vec2(0.5, (float(index + ${offset}) + 0.5) / ${tNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (tNumR === 1) {\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int index) {\n vec2 uv = vec2((float(index + ${offset}) + 0.5) / float(${texName}TexShape[1]), 0.5);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int index) {\n vec2 uv = vec2((float(index + ${offset}) + 0.5) / ${tNumC}.0, 0.5);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int index) {\n vec2 uv = uvFromFlat(${texName}TexShape[0], ${texName}TexShape[1], index + ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int index) {\n vec2 uv = uvFromFlat(${tNumR}, ${tNumC}, index + ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getPackedSampler2D(inputInfo, enableShapeUniforms) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const texShape = inputInfo.shapeInfo.texShape;\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n const glsl = getGlslDifferences();\n if (texShape != null && util.arraysEqual(shape, texShape)) {\n if (enableShapeUniforms) {\n return `\n vec4 ${funcName}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n return `\n vec4 ${funcName}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0);\n\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n vec4 ${funcName}(int row, int col) {\n ivec2 packedTexShape = ivec2(ceil(float(${texName}TexShape[0]) / 2.0), ceil(float(${texName}TexShape[1]) / 2.0));\n int valuesPerRow = int(ceil(float(${texName}Shape[1]) / 2.0));\n vec2 uv = packedUVfrom2D(valuesPerRow, packedTexShape[0], packedTexShape[1], row, col);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n const valuesPerRow = Math.ceil(shape[1] / 2);\n return `\n vec4 ${funcName}(int row, int col) {\n vec2 uv = packedUVfrom2D(${valuesPerRow}, ${packedTexShape[0]}, ${packedTexShape[1]}, row, col);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n}\nfunction getSampler2D(inputInfo, enableShapeUniforms) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const texShape = inputInfo.shapeInfo.texShape;\n if (texShape != null && util.arraysEqual(shape, texShape)) {\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n return `\n float ${funcName}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const { newShape, keptDims } = util.squeezeShape(shape);\n const squeezedShape = newShape;\n if (squeezedShape.length < shape.length) {\n const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape);\n const params = ['row', 'col'];\n return `\n ${getSamplerFromInInfo(newInputInfo, enableShapeUniforms)}\n float ${funcName}(int row, int col) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col) {\n int index = round(dot(vec2(row, col), vec2(${shape[1]}, 1)));\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n const offset = getFlatOffsetUniformName(texName);\n if (texNumC === 1) {\n // index is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col) {\n float index = dot(vec3(row, col, ${offset}), vec3(${texName}Shape[1], 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / float(${texName}TexShape[0]));\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col) {\n float index = dot(vec3(row, col, ${offset}), vec3(${shape[1]}, 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (texNumR === 1) {\n // index is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col) {\n float index = dot(vec3(row, col, ${offset}), vec3(${texName}Shape[1], 1, 1));\n vec2 uv = vec2((index + 0.5) / float(${texName}TexShape[1]), 0.5);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col) {\n float index = dot(vec3(row, col, ${offset}), vec3(${shape[1]}, 1, 1));\n vec2 uv = vec2((index + 0.5) / ${texNumC}.0, 0.5);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${texName}Shape[1] + col + ${offset};\n vec2 uv = uvFromFlat(${texName}TexShape[0], ${texName}TexShape[1], index);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${shape[1]} + col + ${offset};\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${texName}, uv);\n }\n`;\n}\nfunction getPackedSampler3D(inputInfo, enableShapeUniforms) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const texShape = inputInfo.shapeInfo.texShape;\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n if (shape[0] === 1) {\n const squeezedShape = shape.slice(1);\n const keptDims = [1, 2];\n const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape);\n const params = ['b', 'row', 'col'];\n return `\n ${getPackedSamplerFromInInfo(newInputInfo, enableShapeUniforms)}\n vec4 ${funcName}(int b, int row, int col) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n const glsl = getGlslDifferences();\n if (enableShapeUniforms) {\n return `\n vec4 ${funcName}(int b, int row, int col) {\n ivec2 packedTexShape = ivec2(ceil(float(${texName}TexShape[0]) / 2.0), ceil(float(${texName}TexShape[1]) / 2.0));\n int valuesPerRow = int(ceil(float(${texName}Shape[2]) / 2.0));\n int texelsInBatch = valuesPerRow * int(ceil(float(${texName}Shape[1]) / 2.0));\n vec2 uv = packedUVfrom3D(\n packedTexShape[0], packedTexShape[1], texelsInBatch, valuesPerRow, b, row, col);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n const texNumR = packedTexShape[0];\n const texNumC = packedTexShape[1];\n const valuesPerRow = Math.ceil(shape[2] / 2);\n const texelsInBatch = valuesPerRow * Math.ceil(shape[1] / 2);\n return `\n vec4 ${funcName}(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n ${texNumR}, ${texNumC}, ${texelsInBatch}, ${valuesPerRow}, b, row, col);\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n}\nfunction getSampler3D(inputInfo, enableShapeUniforms) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const stride0 = shape[1] * shape[2];\n const stride1 = shape[2];\n const { newShape, keptDims } = util.squeezeShape(shape);\n const squeezedShape = newShape;\n if (squeezedShape.length < shape.length) {\n const newInputInfo = squeezeInputInfo(inputInfo, squeezedShape);\n const params = ['row', 'col', 'depth'];\n return `\n ${getSamplerFromInInfo(newInputInfo, enableShapeUniforms)}\n float ${funcName}(int row, int col, int depth) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3(${stride0}, ${stride1}, 1)));\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const texShape = inputInfo.shapeInfo.texShape;\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n const flatOffset = inputInfo.shapeInfo.flatOffset;\n if (texNumC === stride0 && flatOffset == null) {\n // texC is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth) {\n int stride1 = ${texName}Shape[2];\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(stride1, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(${stride1}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (texNumC === stride1 && flatOffset == null) {\n // texR is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(${texName}Shape[1], 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(${shape[1]}, 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int stride0 = ${texName}Shape[1] * ${texName}Shape[2];\n int stride1 = ${texName}Shape[2];\n int index = row * stride0 + col * stride1 + depth + ${offset};\n vec2 uv = uvFromFlat(${texName}TexShape[0], ${texName}TexShape[1], index);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${stride0} + col * ${stride1} + depth + ${offset};\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getPackedSamplerND(inputInfo, enableShapeUniforms) {\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const glsl = getGlslDifferences();\n if (enableShapeUniforms) {\n // TODO: support 5d and 6d\n return `\n vec4 ${funcName}(int b2, int b, int row, int col) {\n int valuesPerRow = int(ceil(float(${texName}Shape[3]) / 2.0));\n int texelsInBatch = valuesPerRow * int(ceil(float(${texName}Shape[2]) / 2.0));\n int index = b * texelsInBatch + (row / 2) * valuesPerRow + (col / 2);\n texelsInBatch *= ${texName}Shape[1];\n index = b2 * texelsInBatch + index;\n ivec2 packedTexShape = ivec2(ceil(float(${texName}TexShape[0]) / 2.0), ceil(float(${texName}TexShape[1]) / 2.0));\n int texR = index / packedTexShape[1];\n int texC = index - texR * packedTexShape[1];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(packedTexShape[1], packedTexShape[0]); return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n }\n const shape = inputInfo.shapeInfo.logicalShape;\n const rank = shape.length;\n const texShape = inputInfo.shapeInfo.texShape;\n const packedTexShape = [Math.ceil(texShape[0] / 2), Math.ceil(texShape[1] / 2)];\n const texNumR = packedTexShape[0];\n const texNumC = packedTexShape[1];\n const valuesPerRow = Math.ceil(shape[rank - 1] / 2);\n let texelsInBatch = valuesPerRow * Math.ceil(shape[rank - 2] / 2);\n let params = `int b, int row, int col`;\n let index = `b * ${texelsInBatch} + (row / 2) * ${valuesPerRow} + (col / 2)`;\n for (let b = 2; b < rank - 1; b++) {\n params = `int b${b}, ` + params;\n texelsInBatch *= shape[rank - b - 1];\n index = `b${b} * ${texelsInBatch} + ` + index;\n }\n return `\n vec4 ${funcName}(${params}) {\n int index = ${index};\n int texR = index / ${texNumC};\n int texC = index - texR * ${texNumC};\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${texNumC}, ${texNumR});\n return ${glsl.texture2D}(${texName}, uv);\n }\n `;\n}\nfunction getSampler4D(inputInfo, enableShapeUniforms) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const stride2 = shape[3];\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n const { newShape, keptDims } = util.squeezeShape(shape);\n if (newShape.length < shape.length) {\n const newInputInfo = squeezeInputInfo(inputInfo, newShape);\n const params = ['row', 'col', 'depth', 'depth2'];\n return `\n ${getSamplerFromInInfo(newInputInfo, enableShapeUniforms)}\n float ${funcName}(int row, int col, int depth, int depth2) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4(${stride0}, ${stride1}, ${stride2}, 1)));\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const flatOffset = inputInfo.shapeInfo.flatOffset;\n const texShape = inputInfo.shapeInfo.texShape;\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n const stride2Str = `int stride2 = ${texName}Shape[3];`;\n const stride1Str = `int stride1 = ${texName}Shape[2] * stride2;`;\n const stride0Str = `int stride0 = ${texName}Shape[1] * stride1;`;\n if (texNumC === stride0 && flatOffset == null) {\n // texC is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n ${stride2Str}\n ${stride1Str}\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3(stride1, stride2, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3(${stride1}, ${stride2}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (texNumC === stride2 && flatOffset == null) {\n // texR is used directly as physical (no risk of float16 overflow).\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3(${texName}Shape[1] * ${texName}Shape[2], ${texName}Shape[2], 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texName}TexShape[1], ${texName}TexShape[0]);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3(${shape[1] * shape[2]}, ${shape[2]}, 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n if (enableShapeUniforms) {\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n ${stride2Str}\n ${stride1Str}\n ${stride0Str}\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2;\n vec2 uv = uvFromFlat(${texName}TexShape[0], ${texName}TexShape[1], index + ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n return `\n float ${funcName}(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${stride0} + col * ${stride1} +\n depth * ${stride2} + depth2;\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index + ${offset});\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getSampler5D(inputInfo) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const stride3 = shape[4];\n const stride2 = shape[3] * stride3;\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n const { newShape, keptDims } = util.squeezeShape(shape);\n if (newShape.length < shape.length) {\n const newInputInfo = squeezeInputInfo(inputInfo, newShape);\n const params = ['row', 'col', 'depth', 'depth2', 'depth3'];\n return `\n ${getSamplerFromInInfo(newInputInfo)}\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4(${stride0}, ${stride1}, ${stride2}, ${stride3})) +\n depth3;\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const flatOffset = inputInfo.shapeInfo.flatOffset;\n const texShape = inputInfo.shapeInfo.texShape;\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n if (texNumC === stride0 && flatOffset == null) {\n // texC is used directly as physical (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(${stride1}, ${stride2}, ${stride3}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (texNumC === stride3 && flatOffset == null) {\n // texR is used directly as physical (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4(${shape[1] * shape[2] * shape[3]},\n ${shape[2] * shape[3]}, ${shape[3]}, 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n return `\n float ${funcName}(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} +\n depth2 * ${stride3} + depth3 + ${offset};\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getSampler6D(inputInfo) {\n const shape = inputInfo.shapeInfo.logicalShape;\n const texName = inputInfo.name;\n const funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n const { newShape, keptDims } = util.squeezeShape(shape);\n if (newShape.length < shape.length) {\n const newInputInfo = squeezeInputInfo(inputInfo, newShape);\n const params = ['row', 'col', 'depth', 'depth2', 'depth3', 'depth4'];\n return `\n ${getSamplerFromInInfo(newInputInfo)}\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return ${funcName}(${getSqueezedParams(params, keptDims)});\n }\n `;\n }\n const stride4 = shape[5];\n const stride3 = shape[4] * stride4;\n const stride2 = shape[3] * stride3;\n const stride1 = shape[2] * stride2;\n const stride0 = shape[1] * stride1;\n if (inputInfo.shapeInfo.isUniform) {\n // Uniform arrays will be less than 65505 (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4(${stride0}, ${stride1}, ${stride2}, ${stride3})) +\n dot(\n vec2(depth3, depth4),\n vec2(${stride4}, 1)));\n ${getUniformSampler(inputInfo)}\n }\n `;\n }\n const flatOffset = inputInfo.shapeInfo.flatOffset;\n const texShape = inputInfo.shapeInfo.texShape;\n const texNumR = texShape[0];\n const texNumC = texShape[1];\n if (texNumC === stride0 && flatOffset == null) {\n // texC is used directly as physical (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4(${stride1}, ${stride2}, ${stride3}, ${stride4})) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n if (texNumC === stride4 && flatOffset == null) {\n // texR is used directly as physical (no risk of float16 overflow).\n return `\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4(${shape[1] * shape[2] * shape[3] * shape[4]},\n ${shape[2] * shape[3] * shape[4]},\n ${shape[3] * shape[4]},\n ${shape[4]})) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${texNumC}.0, ${texNumR}.0);\n return sampleTexture(${texName}, uv);\n }\n `;\n }\n const offset = getFlatOffsetUniformName(texName);\n return `\n float ${funcName}(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${stride0} + col * ${stride1} + depth * ${stride2} +\n depth2 * ${stride3} + depth3 * ${stride4} + depth4 + ${offset};\n vec2 uv = uvFromFlat(${texNumR}, ${texNumC}, index);\n return sampleTexture(${texName}, uv);\n }\n `;\n}\nfunction getUniformSampler(inputInfo) {\n const texName = inputInfo.name;\n const inSize = util.sizeFromShape(inputInfo.shapeInfo.logicalShape);\n if (inSize < 2) {\n return `return ${texName};`;\n }\n return `\n for (int i = 0; i < ${inSize}; i++) {\n if (i == index) {\n return ${texName}[i];\n }\n }\n `;\n}\nfunction getPackedSamplerAtOutputCoords(inputInfo, outShapeInfo) {\n const texName = inputInfo.name;\n const texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1);\n const funcName = 'get' + texFuncSnippet + 'AtOutCoords';\n const inRank = inputInfo.shapeInfo.logicalShape.length;\n const outRank = outShapeInfo.logicalShape.length;\n const broadcastDims = getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape);\n const type = getCoordsDataType(outRank);\n const rankDiff = outRank - inRank;\n let coordsSnippet;\n const fields = ['x', 'y', 'z', 'w', 'u', 'v'];\n if (inRank === 0) {\n coordsSnippet = '';\n }\n else if (outRank < 2 && broadcastDims.length >= 1) {\n coordsSnippet = 'coords = 0;';\n }\n else {\n coordsSnippet =\n broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`)\n .join('\\n');\n }\n let unpackedCoordsSnippet = '';\n if (outRank < 2 && inRank > 0) {\n unpackedCoordsSnippet = 'coords';\n }\n else {\n unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape\n .map((s, i) => `coords.${fields[i + rankDiff]}`)\n .join(', ');\n }\n let output = `return outputValue;`;\n const inSize = util.sizeFromShape(inputInfo.shapeInfo.logicalShape);\n const isInputScalar = inSize === 1;\n const outSize = util.sizeFromShape(outShapeInfo.logicalShape);\n const isOutputScalar = outSize === 1;\n if (inRank === 1 && !isInputScalar && !isOutputScalar) {\n output = `\n return vec4(outputValue.xy, outputValue.xy);\n `;\n }\n else if (isInputScalar && !isOutputScalar) {\n if (outRank === 1) {\n output = `\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n `;\n }\n else {\n output = `\n return vec4(outputValue.x);\n `;\n }\n }\n else if (broadcastDims.length) {\n const rows = inRank - 2;\n const cols = inRank - 1;\n if (broadcastDims.indexOf(rows) > -1 && broadcastDims.indexOf(cols) > -1) {\n output = `return vec4(outputValue.x);`;\n }\n else if (broadcastDims.indexOf(rows) > -1) {\n output = `return vec4(outputValue.x, outputValue.y, ` +\n `outputValue.x, outputValue.y);`;\n }\n else if (broadcastDims.indexOf(cols) > -1) {\n output = `return vec4(outputValue.xx, outputValue.zz);`;\n }\n }\n return `\n vec4 ${funcName}() {\n ${type} coords = getOutputCoords();\n ${coordsSnippet}\n vec4 outputValue = get${texFuncSnippet}(${unpackedCoordsSnippet});\n ${output}\n }\n `;\n}\nfunction getSamplerAtOutputCoords(inputInfo, outShapeInfo) {\n const texName = inputInfo.name;\n const texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1);\n const funcName = 'get' + texFuncSnippet + 'AtOutCoords';\n const outTexShape = outShapeInfo.texShape;\n const inTexShape = inputInfo.shapeInfo.texShape;\n const inRank = inputInfo.shapeInfo.logicalShape.length;\n const outRank = outShapeInfo.logicalShape.length;\n if (!inputInfo.shapeInfo.isUniform && inRank === outRank &&\n inputInfo.shapeInfo.flatOffset == null &&\n util.arraysEqual(inTexShape, outTexShape)) {\n return `\n float ${funcName}() {\n return sampleTexture(${texName}, resultUV);\n }\n `;\n }\n const type = getCoordsDataType(outRank);\n const broadcastDims = getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape);\n const rankDiff = outRank - inRank;\n let coordsSnippet;\n const fields = ['x', 'y', 'z', 'w', 'u', 'v'];\n if (inRank === 0) {\n coordsSnippet = '';\n }\n else if (outRank < 2 && broadcastDims.length >= 1) {\n coordsSnippet = 'coords = 0;';\n }\n else {\n coordsSnippet =\n broadcastDims.map(d => `coords.${fields[d + rankDiff]} = 0;`)\n .join('\\n');\n }\n let unpackedCoordsSnippet = '';\n if (outRank < 2 && inRank > 0) {\n unpackedCoordsSnippet = 'coords';\n }\n else {\n unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape\n .map((s, i) => `coords.${fields[i + rankDiff]}`)\n .join(', ');\n }\n return `\n float ${funcName}() {\n ${type} coords = getOutputCoords();\n ${coordsSnippet}\n return get${texFuncSnippet}(${unpackedCoordsSnippet});\n }\n `;\n}\nexport function getCoordsDataType(rank) {\n if (rank <= 1) {\n return 'int';\n }\n else if (rank === 2) {\n return 'ivec2';\n }\n else if (rank === 3) {\n return 'ivec3';\n }\n else if (rank === 4) {\n return 'ivec4';\n }\n else if (rank === 5) {\n return 'ivec5';\n }\n else if (rank === 6) {\n return 'ivec6';\n }\n else {\n throw Error(`GPU for rank ${rank} is not yet supported`);\n }\n}\nexport function getUniformInfoFromShape(isPacked, shape, texShape) {\n const { newShape, keptDims } = util.squeezeShape(shape);\n const rank = shape.length;\n const useSqueezePackedShape = isPacked && rank === 3 && shape[0] === 1;\n const squeezeShape = useSqueezePackedShape ? shape.slice(1) : newShape;\n const useSqueezeShape = (!isPacked && rank > 1 && !util.arraysEqual(shape, texShape) &&\n newShape.length < rank) ||\n useSqueezePackedShape;\n const uniformShape = useSqueezeShape ? squeezeShape : shape;\n return { useSqueezeShape, uniformShape, keptDims };\n}\n/** Returns a new input info (a copy) that has a squeezed logical shape. */\nexport function squeezeInputInfo(inInfo, squeezedShape) {\n // Deep copy.\n const newInputInfo = JSON.parse(JSON.stringify(inInfo));\n newInputInfo.shapeInfo.logicalShape = squeezedShape;\n return newInputInfo;\n}\nfunction getSqueezedParams(params, keptDims) {\n return keptDims.map(d => params[d]).join(', ');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyX2NvbXBpbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGZqcy1iYWNrZW5kLXdlYmdsL3NyYy9zaGFkZXJfY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsNEVBQTRFO0FBQzVFLDREQUE0RDtBQUU1RCxPQUFPLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE1BQU0sRUFBQyxnQkFBZ0IsRUFBQyxHQUFHLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssV0FBVyxNQUFNLHdCQUF3QixDQUFDO0FBMEJ0RCxNQUFNLFVBQVUsVUFBVSxDQUN0QixVQUF1QixFQUFFLFdBQXNCLEVBQy9DLE9BQXNCO0lBQ3hCLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUNwQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxRCwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUN6QixjQUFjLENBQUMsSUFBSSxDQUNmLGlCQUFpQixDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FB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QUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQzNELFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFxQixDQUFDO0lBQzFCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLE1BQWlCLEVBQUUsYUFBdUI7SUFDNUMsYUFBYTtJQUNiLE1BQU0sWUFBWSxHQUFjLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUNwRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxNQUFnQixFQUFFLFFBQWtCO0lBQzdELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqL1xuXG4vLyBQbGVhc2UgbWFrZSBzdXJlIHRoZSBzaGFrZXIga2V5IGluIG1ha2VTaGFkZXJLZXkgaW4gZ3BncHVfbWF0aC50cyBpcyB3ZWxsXG4vLyBtYXBwZWQgaWYgYW55IHNoYWRlciBzb3VyY2UgY29kZSBpcyBjaGFuZ2VkIGluIHRoaXMgZmlsZS5cblxuaW1wb3J0IHtiYWNrZW5kX3V0aWwsIHV0aWx9IGZyb20gJ0B0ZW5zb3JmbG93L3RmanMtY29yZSc7XG5jb25zdCB7Z2V0QnJvYWRjYXN0RGltc30gPSBiYWNrZW5kX3V0aWw7XG5pbXBvcnQge2dldEdsc2xEaWZmZXJlbmNlcywgR0xTTH0gZnJvbSAnLi9nbHNsX3ZlcnNpb24nO1xuaW1wb3J0ICogYXMgc2hhZGVyX3V0aWwgZnJvbSAnLi9zaGFkZXJfY29tcGlsZXJfdXRpbCc7XG5cbmV4cG9ydCB0eXBlIFNoYXBlSW5mbyA9IHtcbiAgbG9naWNhbFNoYXBlOiBudW1iZXJbXSxcbiAgdGV4U2hhcGU6IFtudW1iZXIsIG51bWJlcl0sXG4gIGlzVW5pZm9ybTogYm9vbGVhbixcbiAgaXNQYWNrZWQ6IGJvb2xlYW4sXG4gIGZsYXRPZmZzZXQ6IG51bWJlclxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRJbmZvID0ge1xuICBuYW1lOiBzdHJpbmcsXG4gIHNoYXBlSW5mbzogU2hhcGVJbmZvXG59O1xuXG5leHBvcnQgdHlwZSBVbmlmb3JtVHlwZSA9XG4gICAgJ2Zsb2F0J3wndmVjMid8J3ZlYzMnfCd2ZWM0J3wnaW50J3wnaXZlYzInfCdpdmVjMyd8J2l2ZWM0JztcblxuaW50ZXJmYWNlIFByb2dyYW1QYXJhbXMge1xuICB1c2VyQ29kZTogc3RyaW5nO1xuICBlbmFibGVTaGFwZVVuaWZvcm1zPzogYm9vbGVhbjtcbiAgcGFja2VkSW5wdXRzPzogYm9vbGVhbjtcbiAgY3VzdG9tVW5pZm9ybXM/OlxuICAgICAgQXJyYXk8e25hbWU6IHN0cmluZzsgYXJyYXlJbmRleD86IG51bWJlcjsgdHlwZTogVW5pZm9ybVR5cGU7fT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlU2hhZGVyKFxuICAgIGlucHV0c0luZm86IElucHV0SW5mb1tdLCBvdXRwdXRTaGFwZTogU2hhcGVJbmZvLFxuICAgIHByb2dyYW06IFByb2dyYW1QYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBwcmVmaXhTbmlwcGV0czogc3RyaW5nW10gPSBbXTtcbiAgaW5wdXRzSW5mby5mb3JFYWNoKHggPT4ge1xuICAgIGNvbnN0IHNpemUgPSB1dGlsLnNpemVGcm9tU2hhcGUoeC5zaGFwZUluZm8ubG9naWNhbFNoYXBlKTtcblxuICAgIC8vIFNuaXBwZXQgd2hlbiB3ZSBkZWNpZGVkIHRvIHVwbG9hZCB0aGUgdmFsdWVzIGFzIHVuaWZvcm0uXG4gICAgaWYgKHguc2hhcGVJbmZvLmlzVW5pZm9ybSkge1xuICAgICAgcHJlZml4U25pcHBldHMucHVzaChcbiAgICAgICAgICBgdW5pZm9ybSBmbG9hdCAke3gubmFtZX0ke3NpemUgPiAxID8gYFske3NpemV9XWAgOiAnJ307YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gc2FtcGxlcjJEICR7eC5uYW1lfTtgKTtcbiAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaW50IG9mZnNldCR7eC5uYW1lfTtgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvZ3JhbS5lbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICBjb25zdCB7dW5pZm9ybVNoYXBlfSA9IGdldFVuaWZvcm1JbmZvRnJvbVNoYXBlKFxuICAgICAgICAgIHByb2dyYW0ucGFja2VkSW5wdXRzLCB4LnNoYXBlSW5mby5sb2dpY2FsU2hhcGUsIHguc2hhcGVJbmZvLnRleFNoYXBlKTtcbiAgICAgIHN3aXRjaCAodW5pZm9ybVNoYXBlLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcHJlZml4U25pcHBldHMucHVzaChgdW5pZm9ybSBpbnQgJHt4Lm5hbWV9U2hhcGU7YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBwcmVmaXhTbmlwcGV0cy5wdXNoKGB1bmlmb3JtIGl2ZWMyICR7eC5uYW1lfVNoYXBlO2ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcHJlZml4U25pcHBldHMucHVzaChgdW5pZm9ybSBpdmVjMyAke3gubmFtZX1TaGFwZTtgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaXZlYzQgJHt4Lm5hbWV9U2hhcGU7YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBwcmVmaXhTbmlwcGV0cy5wdXNoKGB1bmlmb3JtIGl2ZWMyICR7eC5uYW1lfVRleFNoYXBlO2ApO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHByb2dyYW0uZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgIHN3aXRjaCAob3V0cHV0U2hhcGUubG9naWNhbFNoYXBlLmxlbmd0aCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBwcmVmaXhTbmlwcGV0cy5wdXNoKGB1bmlmb3JtIGludCBvdXRTaGFwZTtgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaXZlYzIgb3V0U2hhcGU7YCk7XG4gICAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaW50IG91dFNoYXBlU3RyaWRlcztgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaXZlYzMgb3V0U2hhcGU7YCk7XG4gICAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaXZlYzIgb3V0U2hhcGVTdHJpZGVzO2ApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcHJlZml4U25pcHBldHMucHVzaChgdW5pZm9ybSBpdmVjNCBvdXRTaGFwZTtgKTtcbiAgICAgICAgcHJlZml4U25pcHBldHMucHVzaChgdW5pZm9ybSBpdmVjMyBvdXRTaGFwZVN0cmlkZXM7YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gaXZlYzIgb3V0VGV4U2hhcGU7YCk7XG4gIH1cbiAgaWYgKHByb2dyYW0uY3VzdG9tVW5pZm9ybXMpIHtcbiAgICBwcm9ncmFtLmN1c3RvbVVuaWZvcm1zLmZvckVhY2goKGQpID0+IHtcbiAgICAgIHByZWZpeFNuaXBwZXRzLnB1c2goYHVuaWZvcm0gJHtkLnR5cGV9ICR7ZC5uYW1lfSR7XG4gICAgICAgICAgZC5hcnJheUluZGV4ID8gYFske2QuYXJyYXlJbmRleH1dYCA6ICcnfTtgKTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBpbnB1dFByZWZpeFNuaXBwZXQgPSBwcmVmaXhTbmlwcGV0cy5qb2luKCdcXG4nKTtcblxuICBjb25zdCBpbnB1dFNhbXBsaW5nU25pcHBldCA9IGlucHV0c0luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPT4gZ2V0SW5wdXRTYW1wbGluZ1NuaXBwZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgb3V0cHV0U2hhcGUsIHByb2dyYW0ucGFja2VkSW5wdXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uZW5hYmxlU2hhcGVVbmlmb3JtcykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgY29uc3Qgb3V0VGV4U2hhcGUgPSBvdXRwdXRTaGFwZS50ZXhTaGFwZTtcbiAgY29uc3QgZ2xzbCA9IGdldEdsc2xEaWZmZXJlbmNlcygpO1xuICBjb25zdCBmbG9hdFRleHR1cmVTYW1wbGVTbmlwcGV0ID0gZ2V0RmxvYXRUZXh0dXJlU2FtcGxlU25pcHBldChnbHNsKTtcbiAgbGV0IG91dHB1dFNhbXBsaW5nU25pcHBldDogc3RyaW5nO1xuICBsZXQgZmxvYXRUZXh0dXJlU2V0T3V0cHV0U25pcHBldDogc3RyaW5nO1xuICBsZXQgc2hhZGVyUHJlZml4ID0gZ2V0U2hhZGVyUHJlZml4KGdsc2wpO1xuXG4gIGlmIChvdXRwdXRTaGFwZS5pc1BhY2tlZCkge1xuICAgIG91dHB1dFNhbXBsaW5nU25pcHBldCA9IGdldFBhY2tlZE91dHB1dFNhbXBsaW5nU25pcHBldChcbiAgICAgICAgb3V0cHV0U2hhcGUubG9naWNhbFNoYXBlLCBvdXRUZXhTaGFwZSwgcHJvZ3JhbS5lbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBmbG9hdFRleHR1cmVTZXRPdXRwdXRTbmlwcGV0ID0gZ2V0RmxvYXRUZXh0dXJlU2V0UkdCQVNuaXBwZXQoZ2xzbCk7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0U2FtcGxpbmdTbmlwcGV0ID0gZ2V0T3V0cHV0U2FtcGxpbmdTbmlwcGV0KFxuICAgICAgICBvdXRwdXRTaGFwZS5sb2dpY2FsU2hhcGUsIG91dFRleFNoYXBlLCBwcm9ncmFtLmVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGZsb2F0VGV4dHVyZVNldE91dHB1dFNuaXBwZXQgPSBnZXRGbG9hdFRleHR1cmVTZXRSU25pcHBldChnbHNsKTtcbiAgfVxuXG4gIGlmIChwcm9ncmFtLnBhY2tlZElucHV0cykge1xuICAgIHNoYWRlclByZWZpeCArPSBTSEFERVJfUEFDS0VEX1BSRUZJWDtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IFtcbiAgICBzaGFkZXJQcmVmaXgsIGZsb2F0VGV4dHVyZVNhbXBsZVNuaXBwZXQsIGZsb2F0VGV4dHVyZVNldE91dHB1dFNuaXBwZXQsXG4gICAgaW5wdXRQcmVmaXhTbmlwcGV0LCBvdXRwdXRTYW1wbGluZ1NuaXBwZXQsIGlucHV0U2FtcGxpbmdTbmlwcGV0LFxuICAgIHByb2dyYW0udXNlckNvZGVcbiAgXS5qb2luKCdcXG4nKTtcbiAgcmV0dXJuIHNvdXJjZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2FtcGxlckZyb21JbkluZm8oXG4gICAgaW5JbmZvOiBJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMgPSBmYWxzZSk6IHN0cmluZyB7XG4gIGNvbnN0IHNoYXBlID0gaW5JbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIHN3aXRjaCAoc2hhcGUubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIGdldFNhbXBsZXJTY2FsYXIoaW5JbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gZ2V0U2FtcGxlcjFEKGluSW5mbywgZW5hYmxlU2hhcGVVbmlmb3Jtcyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIGdldFNhbXBsZXIyRChpbkluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBnZXRTYW1wbGVyM0QoaW5JbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZ2V0U2FtcGxlcjREKGluSW5mbywgZW5hYmxlU2hhcGVVbmlmb3Jtcyk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIGdldFNhbXBsZXI1RChpbkluZm8pO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiBnZXRTYW1wbGVyNkQoaW5JbmZvKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3NoYXBlLmxlbmd0aH0tRCBpbnB1dCBzYW1wbGluZ2AgK1xuICAgICAgICAgIGAgaXMgbm90IHlldCBzdXBwb3J0ZWRgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQYWNrZWRTYW1wbGVyRnJvbUluSW5mbyhcbiAgICBpbkluZm86IElucHV0SW5mbywgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IHNoYXBlID0gaW5JbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIHN3aXRjaCAoc2hhcGUubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIGdldFBhY2tlZFNhbXBsZXJTY2FsYXIoaW5JbmZvKTtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gZ2V0UGFja2VkU2FtcGxlcjFEKGluSW5mbywgZW5hYmxlU2hhcGVVbmlmb3Jtcyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIGdldFBhY2tlZFNhbXBsZXIyRChpbkluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBnZXRQYWNrZWRTYW1wbGVyM0QoaW5JbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGdldFBhY2tlZFNhbXBsZXJORChpbkluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldElucHV0U2FtcGxpbmdTbmlwcGV0KFxuICAgIGluSW5mbzogSW5wdXRJbmZvLCBvdXRTaGFwZUluZm86IFNoYXBlSW5mbywgdXNlc1BhY2tlZFRleHR1cmVzID0gZmFsc2UsXG4gICAgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGxldCByZXMgPSAnJztcbiAgaWYgKHVzZXNQYWNrZWRUZXh0dXJlcykge1xuICAgIHJlcyArPSBnZXRQYWNrZWRTYW1wbGVyRnJvbUluSW5mbyhpbkluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICB9IGVsc2Uge1xuICAgIHJlcyArPSBnZXRTYW1wbGVyRnJvbUluSW5mbyhpbkluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICB9XG5cbiAgY29uc3QgaW5TaGFwZSA9IGluSW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlO1xuICBjb25zdCBvdXRTaGFwZSA9IG91dFNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIGlmIChpblNoYXBlLmxlbmd0aCA8PSBvdXRTaGFwZS5sZW5ndGgpIHtcbiAgICBpZiAodXNlc1BhY2tlZFRleHR1cmVzKSB7XG4gICAgICByZXMgKz0gZ2V0UGFja2VkU2FtcGxlckF0T3V0cHV0Q29vcmRzKGluSW5mbywgb3V0U2hhcGVJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzICs9IGdldFNhbXBsZXJBdE91dHB1dENvb3JkcyhpbkluZm8sIG91dFNoYXBlSW5mbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGdldFBhY2tlZE91dHB1dFNhbXBsaW5nU25pcHBldChcbiAgICBvdXRTaGFwZTogbnVtYmVyW10sIG91dFRleFNoYXBlOiBbbnVtYmVyLCBudW1iZXJdLFxuICAgIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG91dFNoYXBlLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBnZXRPdXRwdXRTY2FsYXJDb29yZHMoKTtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0UGFja2VkMURDb29yZHMoXG4gICAgICAgICAgb3V0U2hhcGUgYXMgW251bWJlcl0sIG91dFRleFNoYXBlLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0UGFja2VkMkRDb29yZHMoXG4gICAgICAgICAgb3V0U2hhcGUgYXMgW251bWJlciwgbnVtYmVyXSwgb3V0VGV4U2hhcGUsIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBnZXRPdXRwdXRQYWNrZWQzRENvb3JkcyhcbiAgICAgICAgICBvdXRTaGFwZSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIG91dFRleFNoYXBlLFxuICAgICAgICAgIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0UGFja2VkTkRDb29yZHMoXG4gICAgICAgICAgb3V0U2hhcGUsIG91dFRleFNoYXBlLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRPdXRwdXRTYW1wbGluZ1NuaXBwZXQoXG4gICAgb3V0U2hhcGU6IG51bWJlcltdLCBvdXRUZXhTaGFwZTogW251bWJlciwgbnVtYmVyXSxcbiAgICBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgc3dpdGNoIChvdXRTaGFwZS5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0U2NhbGFyQ29vcmRzKCk7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGdldE91dHB1dDFEQ29vcmRzKFxuICAgICAgICAgIG91dFNoYXBlIGFzIFtudW1iZXJdLCBvdXRUZXhTaGFwZSwgZW5hYmxlU2hhcGVVbmlmb3Jtcyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIGdldE91dHB1dDJEQ29vcmRzKFxuICAgICAgICAgIG91dFNoYXBlIGFzIFtudW1iZXIsIG51bWJlcl0sIG91dFRleFNoYXBlLCBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0M0RDb29yZHMoXG4gICAgICAgICAgb3V0U2hhcGUgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCBvdXRUZXhTaGFwZSxcbiAgICAgICAgICBlbmFibGVTaGFwZVVuaWZvcm1zKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZ2V0T3V0cHV0NERDb29yZHMoXG4gICAgICAgICAgb3V0U2hhcGUgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIG91dFRleFNoYXBlLFxuICAgICAgICAgIGVuYWJsZVNoYXBlVW5pZm9ybXMpO1xuICAgIGNhc2UgNTpcbiAgICAgIHJldHVybiBnZXRPdXRwdXQ1RENvb3JkcyhcbiAgICAgICAgICBvdXRTaGFwZSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLCBvdXRUZXhTaGFwZSk7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIGdldE91dHB1dDZEQ29vcmRzKFxuICAgICAgICAgIG91dFNoYXBlIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICBvdXRUZXhTaGFwZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtvdXRTaGFwZS5sZW5ndGh9LUQgb3V0cHV0IHNhbXBsaW5nIGlzIG5vdCB5ZXQgc3VwcG9ydGVkYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RmxvYXRUZXh0dXJlU2FtcGxlU25pcHBldChnbHNsOiBHTFNMKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcbiAgICBmbG9hdCBzYW1wbGVUZXh0dXJlKHNhbXBsZXIyRCB0ZXh0dXJlU2FtcGxlciwgdmVjMiB1dikge1xuICAgICAgcmV0dXJuICR7Z2xzbC50ZXh0dXJlMkR9KHRleHR1cmVTYW1wbGVyLCB1dikucjtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldEZsb2F0VGV4dHVyZVNldFJTbmlwcGV0KGdsc2w6IEdMU0wpOiBzdHJpbmcge1xuICByZXR1cm4gYFxuICAgIHZvaWQgc2V0T3V0cHV0KGZsb2F0IHZhbCkge1xuICAgICAgJHtnbHNsLm91dHB1dH0gPSB2ZWM0KHZhbCwgMCwgMCwgMCk7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRGbG9hdFRleHR1cmVTZXRSR0JBU25pcHBldChnbHNsOiBHTFNMKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcbiAgICB2b2lkIHNldE91dHB1dCh2ZWM0IHZhbCkge1xuICAgICAgJHtnbHNsLm91dHB1dH0gPSB2YWw7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRTaGFkZXJQcmVmaXgoZ2xzbDogR0xTTCk6IHN0cmluZyB7XG4gIGNvbnN0IFNIQURFUl9QUkVGSVggPSBgJHtnbHNsLnZlcnNpb259XG4gICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7XG4gICAgcHJlY2lzaW9uIGhpZ2hwIHNhbXBsZXIyRDtcbiAgICAke2dsc2wudmFyeWluZ0ZzfSB2ZWMyIHJlc3VsdFVWO1xuICAgICR7Z2xzbC5kZWZpbmVPdXRwdXR9XG4gICAgY29uc3QgdmVjMiBoYWxmQ1IgPSB2ZWMyKDAuNSwgMC41KTtcblxuICAgIHN0cnVjdCBpdmVjNVxuICAgIHtcbiAgICAgIGludCB4O1xuICAgICAgaW50IHk7XG4gICAgICBpbnQgejtcbiAgICAgIGludCB3O1xuICAgICAgaW50IHU7XG4gICAgfTtcblxuICAgIHN0cnVjdCBpdmVjNlxuICAgIHtcbiAgICAgIGludCB4O1xuICAgICAgaW50IHk7XG4gICAgICBpbnQgejtcbiAgICAgIGludCB3O1xuICAgICAgaW50IHU7XG4gICAgICBpbnQgdjtcbiAgICB9O1xuXG4gICAgdW5pZm9ybSBmbG9hdCBOQU47XG4gICAgJHtnbHNsLmRlZmluZVNwZWNpYWxOYU59XG4gICAgJHtnbHNsLmRlZmluZVNwZWNpYWxJbmZ9XG4gICAgJHtnbHNsLmRlZmluZVJvdW5kfVxuXG4gICAgaW50IGltb2QoaW50IHgsIGludCB5KSB7XG4gICAgICByZXR1cm4geCAtIHkgKiAoeCAvIHkpO1xuICAgIH1cblxuICAgIGludCBpZGl2KGludCBhLCBpbnQgYiwgZmxvYXQgc2lnbikge1xuICAgICAgaW50IHJlcyA9IGEgLyBiO1xuICAgICAgaW50IG1vZCA9IGltb2QoYSwgYik7XG4gICAgICBpZiAoc2lnbiA8IDAuICYmIG1vZCAhPSAwKSB7XG4gICAgICAgIHJlcyAtPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvL0Jhc2VkIG9uIHRoZSB3b3JrIG9mIERhdmUgSG9za2luc1xuICAgIC8vaHR0cHM6Ly93d3cuc2hhZGVydG95LmNvbS92aWV3LzRkalNSV1xuICAgICNkZWZpbmUgSEFTSFNDQUxFMSA0NDMuODk3NVxuICAgIGZsb2F0IHJhbmRvbShmbG9hdCBzZWVkKXtcbiAgICAgIHZlYzIgcCA9IHJlc3VsdFVWICogc2VlZDtcbiAgICAgIHZlYzMgcDMgID0gZnJhY3QodmVjMyhwLnh5eCkgKiBIQVNIU0NBTEUxKTtcbiAgICAgIHAzICs9IGRvdChwMywgcDMueXp4ICsgMTkuMTkpO1xuICAgICAgcmV0dXJuIGZyYWN0KChwMy54ICsgcDMueSkgKiBwMy56KTtcbiAgICB9XG5cbiAgICAke1NBTVBMRV8xRF9TTklQUEVUfVxuICAgICR7U0FNUExFXzJEX1NOSVBQRVR9XG4gICAgJHtTQU1QTEVfM0RfU05JUFBFVH1cbiAgYDtcblxuICByZXR1cm4gU0hBREVSX1BSRUZJWDtcbn1cblxuY29uc3QgU0FNUExFXzFEX1NOSVBQRVQgPSBgXG52ZWMyIHV2RnJvbUZsYXQoaW50IHRleE51bVIsIGludCB0ZXhOdW1DLCBpbnQgaW5kZXgpIHtcbiAgaW50IHRleFIgPSBpbmRleCAvIHRleE51bUM7XG4gIGludCB0ZXhDID0gaW5kZXggLSB0ZXhSICogdGV4TnVtQztcbiAgcmV0dXJuICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvIHZlYzIodGV4TnVtQywgdGV4TnVtUik7XG59XG52ZWMyIHBhY2tlZFVWZnJvbTFEKGludCB0ZXhOdW1SLCBpbnQgdGV4TnVtQywgaW50IGluZGV4KSB7XG4gIGludCB0ZXhlbEluZGV4ID0gaW5kZXggLyAyO1xuICBpbnQgdGV4UiA9IHRleGVsSW5kZXggLyB0ZXhOdW1DO1xuICBpbnQgdGV4QyA9IHRleGVsSW5kZXggLSB0ZXhSICogdGV4TnVtQztcbiAgcmV0dXJuICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvIHZlYzIodGV4TnVtQywgdGV4TnVtUik7XG59XG5gO1xuXG5jb25zdCBTQU1QTEVfMkRfU05JUFBFVCA9IGBcbnZlYzIgcGFja2VkVVZmcm9tMkQoaW50IHRleGVsc0luTG9naWNhbFJvdywgaW50IHRleE51bVIsXG4gIGludCB0ZXhOdW1DLCBpbnQgcm93LCBpbnQgY29sKSB7XG4gIGludCB0ZXhlbEluZGV4ID0gKHJvdyAvIDIpICogdGV4ZWxzSW5Mb2dpY2FsUm93ICsgKGNvbCAvIDIpO1xuICBpbnQgdGV4UiA9IHRleGVsSW5kZXggLyB0ZXhOdW1DO1xuICBpbnQgdGV4QyA9IHRleGVsSW5kZXggLSB0ZXhSICogdGV4TnVtQztcbiAgcmV0dXJuICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvIHZlYzIodGV4TnVtQywgdGV4TnVtUik7XG59XG5gO1xuXG5jb25zdCBTQU1QTEVfM0RfU05JUFBFVCA9IGBcbnZlYzIgcGFja2VkVVZmcm9tM0QoaW50IHRleE51bVIsIGludCB0ZXhOdW1DLFxuICAgIGludCB0ZXhlbHNJbkJhdGNoLCBpbnQgdGV4ZWxzSW5Mb2dpY2FsUm93LCBpbnQgYixcbiAgICBpbnQgcm93LCBpbnQgY29sKSB7XG4gIGludCBpbmRleCA9IGIgKiB0ZXhlbHNJbkJhdGNoICsgKHJvdyAvIDIpICogdGV4ZWxzSW5Mb2dpY2FsUm93ICsgKGNvbCAvIDIpO1xuICBpbnQgdGV4UiA9IGluZGV4IC8gdGV4TnVtQztcbiAgaW50IHRleEMgPSBpbmRleCAtIHRleFIgKiB0ZXhOdW1DO1xuICByZXR1cm4gKHZlYzIodGV4QywgdGV4UikgKyBoYWxmQ1IpIC8gdmVjMih0ZXhOdW1DLCB0ZXhOdW1SKTtcbn1cbmA7XG5cbmNvbnN0IFNIQURFUl9QQUNLRURfUFJFRklYID0gYFxuICBmbG9hdCBnZXRDaGFubmVsKHZlYzQgZnJhZywgdmVjMiBpbm5lckRpbXMpIHtcbiAgICB2ZWMyIG1vZENvb3JkID0gbW9kKGlubmVyRGltcywgMi4pO1xuICAgIHJldHVybiBtb2RDb29yZC54ID09IDAuID9cbiAgICAgIChtb2RDb29yZC55ID09IDAuID8gZnJhZy5yIDogZnJhZy5nKSA6XG4gICAgICAobW9kQ29vcmQueSA9PSAwLiA/IGZyYWcuYiA6IGZyYWcuYSk7XG4gIH1cbiAgZmxvYXQgZ2V0Q2hhbm5lbCh2ZWM0IGZyYWcsIGludCBkaW0pIHtcbiAgICBmbG9hdCBtb2RDb29yZCA9IG1vZChmbG9hdChkaW0pLCAyLik7XG4gICAgcmV0dXJuIG1vZENvb3JkID09IDAuID8gZnJhZy5yIDogZnJhZy5nO1xuICB9XG5gO1xuXG5mdW5jdGlvbiBnZXRPdXRwdXRTY2FsYXJDb29yZHMoKSB7XG4gIHJldHVybiBgXG4gICAgaW50IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0UGFja2VkMURDb29yZHMoXG4gICAgc2hhcGU6IFtudW1iZXJdLCB0ZXhTaGFwZTogW251bWJlciwgbnVtYmVyXSxcbiAgICBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG4gIGlmIChwYWNrZWRUZXhTaGFwZVswXSA9PT0gMSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgaW50IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIDIgKiBpbnQocmVzdWx0VVYueCAqIGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYFxuICAgICAgaW50IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIDIgKiBpbnQocmVzdWx0VVYueCAqICR7cGFja2VkVGV4U2hhcGVbMV19LjApO1xuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBpZiAocGFja2VkVGV4U2hhcGVbMV0gPT09IDEpIHtcbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIHJldHVybiAyICogaW50KHJlc3VsdFVWLnkgKiBjZWlsKGZsb2F0KG91dFRleFNoYXBlWzBdKSAvIDIuMCkpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBcbiAgICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIHJldHVybiAyICogaW50KHJlc3VsdFVWLnkgKiAke3BhY2tlZFRleFNoYXBlWzBdfS4wKTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICByZXR1cm4gYFxuICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiBwYWNrZWRUZXhTaGFwZSA9IGl2ZWMyKGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMF0pIC8gMi4wKSwgY2VpbChmbG9hdChvdXRUZXhTaGFwZVsxXSkgLyAyLjApKTtcbiAgICAgIGl2ZWMyIHJlc1RleFJDID0gaXZlYzIocmVzdWx0VVYueXggKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyKHBhY2tlZFRleFNoYXBlWzBdLCBwYWNrZWRUZXhTaGFwZVsxXSkpO1xuICAgICAgcmV0dXJuIDIgKiAocmVzVGV4UkMueCAqIHBhY2tlZFRleFNoYXBlWzFdICsgcmVzVGV4UkMueSk7XG4gICAgfVxuICBgO1xuICB9XG5cbiAgcmV0dXJuIGBcbiAgICBpbnQgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcmVzVGV4UkMgPSBpdmVjMihyZXN1bHRVVi55eCAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIoJHtwYWNrZWRUZXhTaGFwZVswXX0sICR7cGFja2VkVGV4U2hhcGVbMV19KSk7XG4gICAgICByZXR1cm4gMiAqIChyZXNUZXhSQy54ICogJHtwYWNrZWRUZXhTaGFwZVsxXX0gKyByZXNUZXhSQy55KTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldE91dHB1dDFEQ29vcmRzKFxuICAgIHNoYXBlOiBbbnVtYmVyXSwgdGV4U2hhcGU6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmICh0ZXhTaGFwZVswXSA9PT0gMSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgaW50IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIGludChyZXN1bHRVVi54ICogZmxvYXQob3V0VGV4U2hhcGVbMV0pKTtcbiAgICAgIH1cbiAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gYFxuICAgICAgaW50IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIGludChyZXN1bHRVVi54ICogJHt0ZXhTaGFwZVsxXX0uMCk7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBpZiAodGV4U2hhcGVbMV0gPT09IDEpIHtcbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIHJldHVybiBpbnQocmVzdWx0VVYueSAqIGZsb2F0KG91dFRleFNoYXBlWzBdKSk7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcbiAgICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIHJldHVybiBpbnQocmVzdWx0VVYueSAqICR7dGV4U2hhcGVbMF19LjApO1xuICAgICAgfVxuICAgIGA7XG4gIH1cbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICByZXR1cm4gYFxuICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihvdXRUZXhTaGFwZVswXSwgb3V0VGV4U2hhcGVbMV0pKTtcbiAgICAgIHJldHVybiByZXNUZXhSQy54ICogb3V0VGV4U2hhcGVbMV0gKyByZXNUZXhSQy55O1xuICAgIH1cbiAgYDtcbiAgfVxuICByZXR1cm4gYFxuICAgIGludCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3RleFNoYXBlWzBdfSwgJHt0ZXhTaGFwZVsxXX0pKTtcbiAgICAgIHJldHVybiByZXNUZXhSQy54ICogJHt0ZXhTaGFwZVsxXX0gKyByZXNUZXhSQy55O1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0UGFja2VkM0RDb29yZHMoXG4gICAgc2hhcGU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSwgdGV4U2hhcGU6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICBpdmVjMyBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiBwYWNrZWRUZXhTaGFwZSA9IGl2ZWMyKGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMF0pIC8gMi4wKSwgY2VpbChmbG9hdChvdXRUZXhTaGFwZVsxXSkgLyAyLjApKTtcbiAgICAgIGludCB0ZXhlbHNJbkxvZ2ljYWxSb3cgPSBpbnQoY2VpbChmbG9hdChvdXRTaGFwZVsyXSkgLyAyLjApKTtcbiAgICAgIGludCB0ZXhlbHNJbkJhdGNoID0gdGV4ZWxzSW5Mb2dpY2FsUm93ICogaW50KGNlaWwoZmxvYXQob3V0U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihwYWNrZWRUZXhTaGFwZVswXSwgcGFja2VkVGV4U2hhcGVbMV0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiBwYWNrZWRUZXhTaGFwZVsxXSArIHJlc1RleFJDLnk7XG5cbiAgICAgIGludCBiID0gaW5kZXggLyB0ZXhlbHNJbkJhdGNoO1xuICAgICAgaW5kZXggLT0gYiAqIHRleGVsc0luQmF0Y2g7XG5cbiAgICAgIGludCByID0gMiAqIChpbmRleCAvIHRleGVsc0luTG9naWNhbFJvdyk7XG4gICAgICBpbnQgYyA9IGltb2QoaW5kZXgsIHRleGVsc0luTG9naWNhbFJvdykgKiAyO1xuXG4gICAgICByZXR1cm4gaXZlYzMoYiwgciwgYyk7XG4gICAgfVxuICBgO1xuICB9XG5cbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG4gIGNvbnN0IHRleGVsc0luTG9naWNhbFJvdyA9IE1hdGguY2VpbChzaGFwZVsyXSAvIDIpO1xuICBjb25zdCB0ZXhlbHNJbkJhdGNoID0gdGV4ZWxzSW5Mb2dpY2FsUm93ICogTWF0aC5jZWlsKHNoYXBlWzFdIC8gMik7XG5cbiAgcmV0dXJuIGBcbiAgICBpdmVjMyBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3BhY2tlZFRleFNoYXBlWzBdfSwgJHtwYWNrZWRUZXhTaGFwZVsxXX0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3BhY2tlZFRleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG5cbiAgICAgIGludCBiID0gaW5kZXggLyAke3RleGVsc0luQmF0Y2h9O1xuICAgICAgaW5kZXggLT0gYiAqICR7dGV4ZWxzSW5CYXRjaH07XG5cbiAgICAgIGludCByID0gMiAqIChpbmRleCAvICR7dGV4ZWxzSW5Mb2dpY2FsUm93fSk7XG4gICAgICBpbnQgYyA9IGltb2QoaW5kZXgsICR7dGV4ZWxzSW5Mb2dpY2FsUm93fSkgKiAyO1xuXG4gICAgICByZXR1cm4gaXZlYzMoYiwgciwgYyk7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRPdXRwdXQzRENvb3JkcyhcbiAgICBzaGFwZTogW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCB0ZXhTaGFwZTogW251bWJlciwgbnVtYmVyXSxcbiAgICBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICBjb25zdCBjb29yZHNGcm9tSW5kZXhTbmlwcGV0ID1cbiAgICAgICAgc2hhZGVyX3V0aWwuZ2V0T3V0cHV0TG9naWNhbENvb3JkaW5hdGVzRnJvbUZsYXRJbmRleEJ5VW5pZm9ybShcbiAgICAgICAgICAgIFsncicsICdjJywgJ2QnXSwgc2hhcGUpO1xuXG4gICAgcmV0dXJuIGBcbiAgaXZlYzMgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgIGl2ZWMyIHJlc1RleFJDID0gaXZlYzIocmVzdWx0VVYueXggKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihvdXRUZXhTaGFwZVswXSwgb3V0VGV4U2hhcGVbMV0pKTtcbiAgICBpbnQgaW5kZXggPSByZXNUZXhSQy54ICogb3V0VGV4U2hhcGVbMV0gKyByZXNUZXhSQy55O1xuICAgICR7Y29vcmRzRnJvbUluZGV4U25pcHBldH1cbiAgICByZXR1cm4gaXZlYzMociwgYywgZCk7XG4gIH1cbmA7XG4gIH1cbiAgY29uc3QgY29vcmRzRnJvbUluZGV4U25pcHBldCA9XG4gICAgICBzaGFkZXJfdXRpbC5nZXRMb2dpY2FsQ29vcmRpbmF0ZXNGcm9tRmxhdEluZGV4KFsncicsICdjJywgJ2QnXSwgc2hhcGUpO1xuXG4gIHJldHVybiBgXG4gICAgaXZlYzMgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcmVzVGV4UkMgPSBpdmVjMihyZXN1bHRVVi55eCAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhTaGFwZVswXX0sICR7dGV4U2hhcGVbMV19KSk7XG4gICAgICBpbnQgaW5kZXggPSByZXNUZXhSQy54ICogJHt0ZXhTaGFwZVsxXX0gKyByZXNUZXhSQy55O1xuICAgICAgJHtjb29yZHNGcm9tSW5kZXhTbmlwcGV0fVxuICAgICAgcmV0dXJuIGl2ZWMzKHIsIGMsIGQpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0UGFja2VkTkRDb29yZHMoXG4gICAgc2hhcGU6IG51bWJlcltdLCB0ZXhTaGFwZTogW251bWJlciwgbnVtYmVyXSxcbiAgICBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICAvLyBUT0RPOiBzdXBwb3J0IDVkIGFuZCA2ZFxuICAgIHJldHVybiBgXG4gICAgaXZlYzQgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcGFja2VkVGV4U2hhcGUgPSBpdmVjMihjZWlsKGZsb2F0KG91dFRleFNoYXBlWzBdKSAvIDIuMCksIGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihwYWNrZWRUZXhTaGFwZVswXSwgcGFja2VkVGV4U2hhcGVbMV0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiBwYWNrZWRUZXhTaGFwZVsxXSArIHJlc1RleFJDLnk7XG5cbiAgICAgIGludCB0ZXhlbHNJbkxvZ2ljYWxSb3cgPSBpbnQoY2VpbChmbG9hdChvdXRTaGFwZVszXSkgLyAyLjApKTtcbiAgICAgIGludCB0ZXhlbHNJbkJhdGNoID0gdGV4ZWxzSW5Mb2dpY2FsUm93ICogaW50KGNlaWwoZmxvYXQob3V0U2hhcGVbMl0pIC8gMi4wKSk7XG4gICAgICBpbnQgdGV4ZWxzSW5CYXRjaE4gPSB0ZXhlbHNJbkJhdGNoICogb3V0U2hhcGVbMV07XG5cbiAgICAgIGludCBiMiA9IGluZGV4IC8gdGV4ZWxzSW5CYXRjaE47XG4gICAgICBpbmRleCAtPSBiMiAqIHRleGVsc0luQmF0Y2hOO1xuXG4gICAgICBpbnQgYiA9IGluZGV4IC8gdGV4ZWxzSW5CYXRjaDtcbiAgICAgIGluZGV4IC09IGIgKiB0ZXhlbHNJbkJhdGNoO1xuXG4gICAgICBpbnQgciA9IDIgKiAoaW5kZXggLyB0ZXhlbHNJbkxvZ2ljYWxSb3cpO1xuICAgICAgaW50IGMgPSBpbW9kKGluZGV4LCB0ZXhlbHNJbkxvZ2ljYWxSb3cpICogMjtcblxuICAgICAgcmV0dXJuIGl2ZWM0KGIyLCBiLCByLCBjKTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG5cbiAgY29uc3QgdGV4ZWxzSW5Mb2dpY2FsUm93ID0gTWF0aC5jZWlsKHNoYXBlW3NoYXBlLmxlbmd0aCAtIDFdIC8gMik7XG4gIGNvbnN0IHRleGVsc0luQmF0Y2ggPVxuICAgICAgdGV4ZWxzSW5Mb2dpY2FsUm93ICogTWF0aC5jZWlsKHNoYXBlW3NoYXBlLmxlbmd0aCAtIDJdIC8gMik7XG4gIGxldCB0ZXhlbHNJbkJhdGNoTiA9IHRleGVsc0luQmF0Y2g7XG4gIGxldCBiYXRjaGVzID0gYGA7XG4gIGxldCBjb29yZHMgPSAnYiwgciwgYyc7XG5cbiAgZm9yIChsZXQgYiA9IDI7IGIgPCBzaGFwZS5sZW5ndGggLSAxOyBiKyspIHtcbiAgICB0ZXhlbHNJbkJhdGNoTiAqPSBzaGFwZVtzaGFwZS5sZW5ndGggLSBiIC0gMV07XG4gICAgYmF0Y2hlcyA9IGBcbiAgICAgIGludCBiJHtifSA9IGluZGV4IC8gJHt0ZXhlbHNJbkJhdGNoTn07XG4gICAgICBpbmRleCAtPSBiJHtifSAqICR7dGV4ZWxzSW5CYXRjaE59O1xuICAgIGAgKyBiYXRjaGVzO1xuICAgIGNvb3JkcyA9IGBiJHtifSwgYCArIGNvb3JkcztcbiAgfVxuXG4gIHJldHVybiBgXG4gICAgaXZlYyR7c2hhcGUubGVuZ3RofSBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3BhY2tlZFRleFNoYXBlWzBdfSwgJHtwYWNrZWRUZXhTaGFwZVsxXX0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3BhY2tlZFRleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG5cbiAgICAgICR7YmF0Y2hlc31cblxuICAgICAgaW50IGIgPSBpbmRleCAvICR7dGV4ZWxzSW5CYXRjaH07XG4gICAgICBpbmRleCAtPSBiICogJHt0ZXhlbHNJbkJhdGNofTtcblxuICAgICAgaW50IHIgPSAyICogKGluZGV4IC8gJHt0ZXhlbHNJbkxvZ2ljYWxSb3d9KTtcbiAgICAgIGludCBjID0gaW1vZChpbmRleCwgJHt0ZXhlbHNJbkxvZ2ljYWxSb3d9KSAqIDI7XG5cbiAgICAgIHJldHVybiBpdmVjJHtzaGFwZS5sZW5ndGh9KCR7Y29vcmRzfSk7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRPdXRwdXQ0RENvb3JkcyhcbiAgICBzaGFwZTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIHRleFNoYXBlOiBbbnVtYmVyLCBudW1iZXJdLFxuICAgIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgIGNvbnN0IGNvb3Jkc0Zyb21JbmRleFNuaXBwZXQgPVxuICAgICAgICBzaGFkZXJfdXRpbC5nZXRPdXRwdXRMb2dpY2FsQ29vcmRpbmF0ZXNGcm9tRmxhdEluZGV4QnlVbmlmb3JtKFxuICAgICAgICAgICAgWydyJywgJ2MnLCAnZCcsICdkMiddLCBzaGFwZSk7XG5cbiAgICByZXR1cm4gYFxuICAgIGl2ZWM0IGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgIGl2ZWMyIHJlc1RleFJDID0gaXZlYzIocmVzdWx0VVYueXggKlxuICAgICAgICB2ZWMyKG91dFRleFNoYXBlWzBdLCBvdXRUZXhTaGFwZVsxXSkpO1xuICAgICAgaW50IGluZGV4ID0gcmVzVGV4UkMueCAqIG91dFRleFNoYXBlWzFdICsgcmVzVGV4UkMueTtcbiAgICAgICR7Y29vcmRzRnJvbUluZGV4U25pcHBldH1cbiAgICAgIHJldHVybiBpdmVjNChyLCBjLCBkLCBkMik7XG4gICAgfVxuICBgO1xuICB9XG4gIGNvbnN0IGNvb3Jkc0Zyb21JbmRleFNuaXBwZXQgPSBzaGFkZXJfdXRpbC5nZXRMb2dpY2FsQ29vcmRpbmF0ZXNGcm9tRmxhdEluZGV4KFxuICAgICAgWydyJywgJ2MnLCAnZCcsICdkMiddLCBzaGFwZSk7XG5cbiAgcmV0dXJuIGBcbiAgICBpdmVjNCBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgdmVjMigke3RleFNoYXBlWzBdfSwgJHt0ZXhTaGFwZVsxXX0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3RleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG4gICAgICAke2Nvb3Jkc0Zyb21JbmRleFNuaXBwZXR9XG4gICAgICByZXR1cm4gaXZlYzQociwgYywgZCwgZDIpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0NURDb29yZHMoXG4gICAgc2hhcGU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gICAgdGV4U2hhcGU6IFtudW1iZXIsIG51bWJlcl0pOiBzdHJpbmcge1xuICBjb25zdCBjb29yZHNGcm9tSW5kZXhTbmlwcGV0ID0gc2hhZGVyX3V0aWwuZ2V0TG9naWNhbENvb3JkaW5hdGVzRnJvbUZsYXRJbmRleChcbiAgICAgIFsncicsICdjJywgJ2QnLCAnZDInLCAnZDMnXSwgc2hhcGUpO1xuXG4gIHJldHVybiBgXG4gICAgaXZlYzUgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcmVzVGV4UkMgPSBpdmVjMihyZXN1bHRVVi55eCAqIHZlYzIoJHt0ZXhTaGFwZVswXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGV4U2hhcGVbMV19KSk7XG5cbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3RleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG5cbiAgICAgICR7Y29vcmRzRnJvbUluZGV4U25pcHBldH1cblxuICAgICAgaXZlYzUgb3V0U2hhcGUgPSBpdmVjNShyLCBjLCBkLCBkMiwgZDMpO1xuICAgICAgcmV0dXJuIG91dFNoYXBlO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0NkRDb29yZHMoXG4gICAgc2hhcGU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgICB0ZXhTaGFwZTogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB7XG4gIGNvbnN0IGNvb3Jkc0Zyb21JbmRleFNuaXBwZXQgPSBzaGFkZXJfdXRpbC5nZXRMb2dpY2FsQ29vcmRpbmF0ZXNGcm9tRmxhdEluZGV4KFxuICAgICAgWydyJywgJ2MnLCAnZCcsICdkMicsICdkMycsICdkNCddLCBzaGFwZSk7XG5cbiAgcmV0dXJuIGBcbiAgICBpdmVjNiBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgdmVjMigke3RleFNoYXBlWzBdfSwgJHt0ZXhTaGFwZVsxXX0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3RleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG5cbiAgICAgICR7Y29vcmRzRnJvbUluZGV4U25pcHBldH1cblxuICAgICAgaXZlYzYgcmVzdWx0ID0gaXZlYzYociwgYywgZCwgZDIsIGQzLCBkNCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0UGFja2VkMkRDb29yZHMoXG4gICAgc2hhcGU6IFtudW1iZXIsIG51bWJlcl0sIHRleFNoYXBlOiBbbnVtYmVyLCBudW1iZXJdLFxuICAgIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBwYWNrZWRUZXhTaGFwZSA9XG4gICAgICBbTWF0aC5jZWlsKHRleFNoYXBlWzBdIC8gMiksIE1hdGguY2VpbCh0ZXhTaGFwZVsxXSAvIDIpXTtcbiAgaWYgKHV0aWwuYXJyYXlzRXF1YWwoc2hhcGUsIHRleFNoYXBlKSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgICBpdmVjMiBwYWNrZWRUZXhTaGFwZSA9IGl2ZWMyKGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMF0pIC8gMi4wKSwgY2VpbChmbG9hdChvdXRUZXhTaGFwZVsxXSkgLyAyLjApKTtcbiAgICAgICAgcmV0dXJuIDIgKiBpdmVjMihyZXN1bHRVVi55eCAqIHZlYzIocGFja2VkVGV4U2hhcGVbMF0sIHBhY2tlZFRleFNoYXBlWzFdKSk7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYFxuICAgICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgICByZXR1cm4gMiAqIGl2ZWMyKHJlc3VsdFVWLnl4ICogdmVjMigke3BhY2tlZFRleFNoYXBlWzBdfSwgJHtcbiAgICAgICAgcGFja2VkVGV4U2hhcGVbMV19KSk7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIC8vIHRleGVscyBuZWVkZWQgdG8gYWNjb21tb2RhdGUgYSBsb2dpY2FsIHJvd1xuICBjb25zdCB0ZXhlbHNJbkxvZ2ljYWxSb3cgPSBNYXRoLmNlaWwoc2hhcGVbMV0gLyAyKTtcblxuICAvKipcbiAgICogZ2V0T3V0cHV0Q29vcmRzXG4gICAqXG4gICAqIHJlc1RleFJDOiBUaGUgcm93cyBhbmQgY29sdW1ucyBvZiB0aGUgdGV4ZWxzLiBJZiB5b3UgbW92ZSBvdmVyIG9uZVxuICAgKiB0ZXhlbCB0byB0aGUgcmlnaHQgaW4gdGhlIHBhY2tlZCB0ZXh0dXJlLCB5b3UgYXJlIG1vdmluZyBvdmVyIG9uZSBjb2x1bW5cbiAgICogKG5vdCB0d28pLlxuICAgKlxuICAgKiBpbmRleDogVGhlIHRleGVsIGluZGV4XG4gICAqL1xuICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgIHJldHVybiBgXG4gICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcGFja2VkVGV4U2hhcGUgPSBpdmVjMihjZWlsKGZsb2F0KG91dFRleFNoYXBlWzBdKSAvIDIuMCksIGNlaWwoZmxvYXQob3V0VGV4U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICBpbnQgdGV4ZWxzSW5Mb2dpY2FsUm93ID0gaW50KGNlaWwoZmxvYXQob3V0U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihwYWNrZWRUZXhTaGFwZVswXSwgcGFja2VkVGV4U2hhcGVbMV0pKTtcblxuICAgICAgaW50IGluZGV4ID0gcmVzVGV4UkMueCAqIHBhY2tlZFRleFNoYXBlWzFdICsgcmVzVGV4UkMueTtcbiAgICAgIGludCByID0gMiAqIChpbmRleCAvIHRleGVsc0luTG9naWNhbFJvdyk7XG4gICAgICBpbnQgYyA9IGltb2QoaW5kZXgsIHRleGVsc0luTG9naWNhbFJvdykgKiAyO1xuXG4gICAgICByZXR1cm4gaXZlYzIociwgYyk7XG4gICAgfVxuICBgO1xuICB9XG5cbiAgcmV0dXJuIGBcbiAgICBpdmVjMiBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3BhY2tlZFRleFNoYXBlWzBdfSwgJHtwYWNrZWRUZXhTaGFwZVsxXX0pKTtcblxuICAgICAgaW50IGluZGV4ID0gcmVzVGV4UkMueCAqICR7cGFja2VkVGV4U2hhcGVbMV19ICsgcmVzVGV4UkMueTtcbiAgICAgIGludCByID0gMiAqIChpbmRleCAvICR7dGV4ZWxzSW5Mb2dpY2FsUm93fSk7XG4gICAgICBpbnQgYyA9IGltb2QoaW5kZXgsICR7dGV4ZWxzSW5Mb2dpY2FsUm93fSkgKiAyO1xuXG4gICAgICByZXR1cm4gaXZlYzIociwgYyk7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRPdXRwdXQyRENvb3JkcyhcbiAgICBzaGFwZTogW251bWJlciwgbnVtYmVyXSwgdGV4U2hhcGU6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmICh1dGlsLmFycmF5c0VxdWFsKHNoYXBlLCB0ZXhTaGFwZSkpIHtcbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGl2ZWMyIGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIGl2ZWMyKHJlc3VsdFVWLnl4ICogdmVjMihvdXRUZXhTaGFwZVswXSwgb3V0VGV4U2hhcGVbMV0pKTtcbiAgICAgIH1cbiAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gYFxuICAgICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgICByZXR1cm4gaXZlYzIocmVzdWx0VVYueXggKiB2ZWMyKCR7dGV4U2hhcGVbMF19LCAke3RleFNoYXBlWzFdfSkpO1xuICAgICAgfVxuICAgIGA7XG4gIH1cbiAgaWYgKHNoYXBlWzFdID09PSAxKSB7XG4gICAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICBpdmVjMiBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIGl2ZWMyIHJlc1RleFJDID0gaXZlYzIocmVzdWx0VVYueXggKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIob3V0VGV4U2hhcGVbMF0sIG91dFRleFNoYXBlWzFdKSk7XG4gICAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiBvdXRUZXhTaGFwZVsxXSArIHJlc1RleFJDLnk7XG4gICAgICAgIHJldHVybiBpdmVjMihpbmRleCwgMCk7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcbiAgICAgIGl2ZWMyIGdldE91dHB1dENvb3JkcygpIHtcbiAgICAgICAgaXZlYzIgcmVzVGV4UkMgPSBpdmVjMihyZXN1bHRVVi55eCAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3RleFNoYXBlWzBdfSwgJHt0ZXhTaGFwZVsxXX0pKTtcbiAgICAgICAgaW50IGluZGV4ID0gcmVzVGV4UkMueCAqICR7dGV4U2hhcGVbMV19ICsgcmVzVGV4UkMueTtcbiAgICAgICAgcmV0dXJuIGl2ZWMyKGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG4gIGlmIChzaGFwZVswXSA9PT0gMSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyKG91dFRleFNoYXBlWzBdLCBvdXRUZXhTaGFwZVsxXSkpO1xuICAgICAgICBpbnQgaW5kZXggPSByZXNUZXhSQy54ICogb3V0VGV4U2hhcGVbMV0gKyByZXNUZXhSQy55O1xuICAgICAgICByZXR1cm4gaXZlYzIoMCwgaW5kZXgpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBgXG4gICAgICBpdmVjMiBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICAgIGl2ZWMyIHJlc1RleFJDID0gaXZlYzIocmVzdWx0VVYueXggKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhTaGFwZVswXX0sICR7dGV4U2hhcGVbMV19KSk7XG4gICAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3RleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG4gICAgICAgIHJldHVybiBpdmVjMigwLCBpbmRleCk7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgIHJldHVybiBgXG4gICAgaXZlYzIgZ2V0T3V0cHV0Q29vcmRzKCkge1xuICAgICAgaXZlYzIgcmVzVGV4UkMgPSBpdmVjMihyZXN1bHRVVi55eCAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIob3V0VGV4U2hhcGVbMF0sIG91dFRleFNoYXBlWzFdKSk7XG4gICAgICBpbnQgaW5kZXggPSByZXNUZXhSQy54ICogb3V0VGV4U2hhcGVbMV0gKyByZXNUZXhSQy55O1xuICAgICAgaW50IHIgPSBpbmRleCAvIG91dFNoYXBlWzFdO1xuICAgICAgaW50IGMgPSBpbmRleCAtIHIgKiBvdXRTaGFwZVsxXTtcbiAgICAgIHJldHVybiBpdmVjMihyLCBjKTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgcmV0dXJuIGBcbiAgICBpdmVjMiBnZXRPdXRwdXRDb29yZHMoKSB7XG4gICAgICBpdmVjMiByZXNUZXhSQyA9IGl2ZWMyKHJlc3VsdFVWLnl4ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMigke3RleFNoYXBlWzBdfSwgJHt0ZXhTaGFwZVsxXX0pKTtcbiAgICAgIGludCBpbmRleCA9IHJlc1RleFJDLnggKiAke3RleFNoYXBlWzFdfSArIHJlc1RleFJDLnk7XG4gICAgICBpbnQgciA9IGluZGV4IC8gJHtzaGFwZVsxXX07XG4gICAgICBpbnQgYyA9IGluZGV4IC0gciAqICR7c2hhcGVbMV19O1xuICAgICAgcmV0dXJuIGl2ZWMyKHIsIGMpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0RmxhdE9mZnNldFVuaWZvcm1OYW1lKHRleE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgb2Zmc2V0JHt0ZXhOYW1lfWA7XG59XG5cbmZ1bmN0aW9uIGdldFBhY2tlZFNhbXBsZXJTY2FsYXIoaW5wdXRJbmZvOiBJbnB1dEluZm8pOiBzdHJpbmcge1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4TmFtZS5zbGljZSgxKTtcbiAgY29uc3QgZ2xzbCA9IGdldEdsc2xEaWZmZXJlbmNlcygpO1xuICByZXR1cm4gYFxuICAgIHZlYzQgJHtmdW5jTmFtZX0oKSB7XG4gICAgICByZXR1cm4gJHtnbHNsLnRleHR1cmUyRH0oJHt0ZXhOYW1lfSwgaGFsZkNSKTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNhbXBsZXJTY2FsYXIoXG4gICAgaW5wdXRJbmZvOiBJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4TmFtZS5zbGljZSgxKTtcbiAgaWYgKGlucHV0SW5mby5zaGFwZUluZm8uaXNVbmlmb3JtKSB7XG4gICAgcmV0dXJuIGBmbG9hdCAke2Z1bmNOYW1lfSgpIHtyZXR1cm4gJHt0ZXhOYW1lfTt9YDtcbiAgfVxuICBjb25zdCBbdGV4TnVtUiwgdGV4TnVtQ10gPSBpbnB1dEluZm8uc2hhcGVJbmZvLnRleFNoYXBlO1xuICBpZiAodGV4TnVtUiA9PT0gMSAmJiB0ZXhOdW1DID09PSAxKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KCkge1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCBoYWxmQ1IpO1xuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfSgpIHtcbiAgICAgIHZlYzIgdXYgPSB1dkZyb21GbGF0KCR7dGV4TmFtZX1UZXhTaGFwZVswXSwgJHt0ZXhOYW1lfVRleFNoYXBlWzFdLCAke1xuICAgICAgICBvZmZzZXR9KTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cblxuICBjb25zdCBbdE51bVIsIHROdW1DXSA9IGlucHV0SW5mby5zaGFwZUluZm8udGV4U2hhcGU7XG4gIHJldHVybiBgXG4gICAgZmxvYXQgJHtmdW5jTmFtZX0oKSB7XG4gICAgICB2ZWMyIHV2ID0gdXZGcm9tRmxhdCgke3ROdW1SfSwgJHt0TnVtQ30sICR7b2Zmc2V0fSk7XG4gICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRQYWNrZWRTYW1wbGVyMUQoXG4gICAgaW5wdXRJbmZvOiBJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4TmFtZS5zbGljZSgxKTtcbiAgY29uc3QgdGV4U2hhcGUgPSBpbnB1dEluZm8uc2hhcGVJbmZvLnRleFNoYXBlO1xuICBjb25zdCBnbHNsID0gZ2V0R2xzbERpZmZlcmVuY2VzKCk7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICB2ZWM0ICR7ZnVuY05hbWV9KGludCBpbmRleCkge1xuICAgICAgaXZlYzIgcGFja2VkVGV4U2hhcGUgPSBpdmVjMihjZWlsKGZsb2F0KCR7XG4gICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMF0pIC8gMi4wKSwgY2VpbChmbG9hdCgke3RleE5hbWV9VGV4U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICB2ZWMyIHV2ID0gcGFja2VkVVZmcm9tMUQoXG4gICAgICAgIHBhY2tlZFRleFNoYXBlWzBdLCBwYWNrZWRUZXhTaGFwZVsxXSwgaW5kZXgpO1xuICAgICAgcmV0dXJuICR7Z2xzbC50ZXh0dXJlMkR9KCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG4gIHJldHVybiBgXG4gICAgdmVjNCAke2Z1bmNOYW1lfShpbnQgaW5kZXgpIHtcbiAgICAgIHZlYzIgdXYgPSBwYWNrZWRVVmZyb20xRChcbiAgICAgICAgJHtwYWNrZWRUZXhTaGFwZVswXX0sICR7cGFja2VkVGV4U2hhcGVbMV19LCBpbmRleCk7XG4gICAgICByZXR1cm4gJHtnbHNsLnRleHR1cmUyRH0oJHt0ZXhOYW1lfSwgdXYpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0U2FtcGxlcjFEKFxuICAgIGlucHV0SW5mbzogSW5wdXRJbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3QgdGV4TmFtZSA9IGlucHV0SW5mby5uYW1lO1xuICBjb25zdCBmdW5jTmFtZSA9ICdnZXQnICsgdGV4TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleE5hbWUuc2xpY2UoMSk7XG5cbiAgaWYgKGlucHV0SW5mby5zaGFwZUluZm8uaXNVbmlmb3JtKSB7XG4gICAgLy8gVW5pZm9ybSBhcnJheXMgd2lsbCBiZSBsZXNzIHRoYW4gNjU1MDUgKG5vIHJpc2sgb2YgZmxvYXQxNiBvdmVyZmxvdykuXG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCBpbmRleCkge1xuICAgICAgICAke2dldFVuaWZvcm1TYW1wbGVyKGlucHV0SW5mbyl9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgdE51bVIgPSB0ZXhTaGFwZVswXTtcbiAgY29uc3QgdE51bUMgPSB0ZXhTaGFwZVsxXTtcblxuICBpZiAodE51bUMgPT09IDEgJiYgdE51bVIgPT09IDEpIHtcbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IGluZGV4KSB7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIGhhbGZDUik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIGlmICh0TnVtQyA9PT0gMSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IGluZGV4KSB7XG4gICAgICAgIHZlYzIgdXYgPSB2ZWMyKDAuNSwgKGZsb2F0KGluZGV4ICsgJHtvZmZzZXR9KSArIDAuNSkgLyBmbG9hdCgke1xuICAgICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMF0pKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCBpbmRleCkge1xuICAgICAgICB2ZWMyIHV2ID0gdmVjMigwLjUsIChmbG9hdChpbmRleCArICR7b2Zmc2V0fSkgKyAwLjUpIC8gJHt0TnVtUn0uMCk7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG4gIGlmICh0TnVtUiA9PT0gMSkge1xuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IGluZGV4KSB7XG4gICAgICAgIHZlYzIgdXYgPSB2ZWMyKChmbG9hdChpbmRleCArICR7b2Zmc2V0fSkgKyAwLjUpIC8gZmxvYXQoJHtcbiAgICAgICAgICB0ZXhOYW1lfVRleFNoYXBlWzFdKSwgMC41KTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCBpbmRleCkge1xuICAgICAgICB2ZWMyIHV2ID0gdmVjMigoZmxvYXQoaW5kZXggKyAke29mZnNldH0pICsgMC41KSAvICR7dE51bUN9LjAsIDAuNSk7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICByZXR1cm4gYFxuICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCBpbmRleCkge1xuICAgICAgdmVjMiB1diA9IHV2RnJvbUZsYXQoJHt0ZXhOYW1lfVRleFNoYXBlWzBdLCAke1xuICAgICAgICB0ZXhOYW1lfVRleFNoYXBlWzFdLCBpbmRleCArICR7b2Zmc2V0fSk7XG4gICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgfVxuICBgO1xuICB9XG5cbiAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgaW5kZXgpIHtcbiAgICAgIHZlYzIgdXYgPSB1dkZyb21GbGF0KCR7dE51bVJ9LCAke3ROdW1DfSwgaW5kZXggKyAke29mZnNldH0pO1xuICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0UGFja2VkU2FtcGxlcjJEKFxuICAgIGlucHV0SW5mbzogSW5wdXRJbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hhcGUgPSBpbnB1dEluZm8uc2hhcGVJbmZvLmxvZ2ljYWxTaGFwZTtcbiAgY29uc3QgdGV4TmFtZSA9IGlucHV0SW5mby5uYW1lO1xuICBjb25zdCBmdW5jTmFtZSA9ICdnZXQnICsgdGV4TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleE5hbWUuc2xpY2UoMSk7XG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcblxuICBjb25zdCB0ZXhOdW1SID0gdGV4U2hhcGVbMF07XG4gIGNvbnN0IHRleE51bUMgPSB0ZXhTaGFwZVsxXTtcbiAgY29uc3QgZ2xzbCA9IGdldEdsc2xEaWZmZXJlbmNlcygpO1xuICBpZiAodGV4U2hhcGUgIT0gbnVsbCAmJiB1dGlsLmFycmF5c0VxdWFsKHNoYXBlLCB0ZXhTaGFwZSkpIHtcbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIHZlYzQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICB2ZWMyIHV2ID0gKHZlYzIoY29sLCByb3cpICsgaGFsZkNSKSAvIHZlYzIoJHt0ZXhOYW1lfVRleFNoYXBlWzFdLCAke1xuICAgICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMF0pO1xuXG4gICAgICAgIHJldHVybiAke2dsc2wudGV4dHVyZTJEfSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcbiAgICAgIHZlYzQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICB2ZWMyIHV2ID0gKHZlYzIoY29sLCByb3cpICsgaGFsZkNSKSAvIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuXG4gICAgICAgIHJldHVybiAke2dsc2wudGV4dHVyZTJEfSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICB2ZWM0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wpIHtcbiAgICAgIGl2ZWMyIHBhY2tlZFRleFNoYXBlID0gaXZlYzIoY2VpbChmbG9hdCgke1xuICAgICAgICB0ZXhOYW1lfVRleFNoYXBlWzBdKSAvIDIuMCksIGNlaWwoZmxvYXQoJHt0ZXhOYW1lfVRleFNoYXBlWzFdKSAvIDIuMCkpO1xuICAgICAgaW50IHZhbHVlc1BlclJvdyA9IGludChjZWlsKGZsb2F0KCR7dGV4TmFtZX1TaGFwZVsxXSkgLyAyLjApKTtcbiAgICAgIHZlYzIgdXYgPSBwYWNrZWRVVmZyb20yRCh2YWx1ZXNQZXJSb3csIHBhY2tlZFRleFNoYXBlWzBdLCBwYWNrZWRUZXhTaGFwZVsxXSwgcm93LCBjb2wpO1xuICAgICAgcmV0dXJuICR7Z2xzbC50ZXh0dXJlMkR9KCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG4gIGNvbnN0IHZhbHVlc1BlclJvdyA9IE1hdGguY2VpbChzaGFwZVsxXSAvIDIpO1xuXG4gIHJldHVybiBgXG4gICAgdmVjNCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sKSB7XG4gICAgICB2ZWMyIHV2ID0gcGFja2VkVVZmcm9tMkQoJHt2YWx1ZXNQZXJSb3d9LCAke3BhY2tlZFRleFNoYXBlWzBdfSwgJHtcbiAgICAgIHBhY2tlZFRleFNoYXBlWzFdfSwgcm93LCBjb2wpO1xuICAgICAgcmV0dXJuICR7Z2xzbC50ZXh0dXJlMkR9KCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNhbXBsZXIyRChcbiAgICBpbnB1dEluZm86IElucHV0SW5mbywgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IHNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIGNvbnN0IHRleE5hbWUgPSBpbnB1dEluZm8ubmFtZTtcbiAgY29uc3QgZnVuY05hbWUgPSAnZ2V0JyArIHRleE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXhOYW1lLnNsaWNlKDEpO1xuICBjb25zdCB0ZXhTaGFwZSA9IGlucHV0SW5mby5zaGFwZUluZm8udGV4U2hhcGU7XG5cbiAgaWYgKHRleFNoYXBlICE9IG51bGwgJiYgdXRpbC5hcnJheXNFcXVhbChzaGFwZSwgdGV4U2hhcGUpKSB7XG4gICAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sKSB7XG4gICAgICAgIHZlYzIgdXYgPSAodmVjMihjb2wsIHJvdykgKyBoYWxmQ1IpIC8gdmVjMigke3RleE5hbWV9VGV4U2hhcGVbMV0sICR7XG4gICAgICAgICAgdGV4TmFtZX1UZXhTaGFwZVswXSk7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgIH1cbiAgICBgO1xuICAgIH1cblxuICAgIGNvbnN0IHRleE51bVIgPSB0ZXhTaGFwZVswXTtcbiAgICBjb25zdCB0ZXhOdW1DID0gdGV4U2hhcGVbMV07XG4gICAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sKSB7XG4gICAgICB2ZWMyIHV2ID0gKHZlYzIoY29sLCByb3cpICsgaGFsZkNSKSAvIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgIH1cbiAgYDtcbiAgfVxuXG4gIGNvbnN0IHtuZXdTaGFwZSwga2VwdERpbXN9ID0gdXRpbC5zcXVlZXplU2hhcGUoc2hhcGUpO1xuICBjb25zdCBzcXVlZXplZFNoYXBlID0gbmV3U2hhcGU7XG4gIGlmIChzcXVlZXplZFNoYXBlLmxlbmd0aCA8IHNoYXBlLmxlbmd0aCkge1xuICAgIGNvbnN0IG5ld0lucHV0SW5mbyA9IHNxdWVlemVJbnB1dEluZm8oaW5wdXRJbmZvLCBzcXVlZXplZFNoYXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbJ3JvdycsICdjb2wnXTtcbiAgICByZXR1cm4gYFxuICAgICAgJHtnZXRTYW1wbGVyRnJvbUluSW5mbyhuZXdJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpfVxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICByZXR1cm4gJHtmdW5jTmFtZX0oJHtnZXRTcXVlZXplZFBhcmFtcyhwYXJhbXMsIGtlcHREaW1zKX0pO1xuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBpZiAoaW5wdXRJbmZvLnNoYXBlSW5mby5pc1VuaWZvcm0pIHtcbiAgICAvLyBVbmlmb3JtIGFycmF5cyB3aWxsIGJlIGxlc3MgdGhhbiA2NTUwNSAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICBpbnQgaW5kZXggPSByb3VuZChkb3QodmVjMihyb3csIGNvbCksIHZlYzIoJHtzaGFwZVsxXX0sIDEpKSk7XG4gICAgICAgICR7Z2V0VW5pZm9ybVNhbXBsZXIoaW5wdXRJbmZvKX1cbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgY29uc3QgdGV4TnVtUiA9IHRleFNoYXBlWzBdO1xuICBjb25zdCB0ZXhOdW1DID0gdGV4U2hhcGVbMV07XG4gIGNvbnN0IG9mZnNldCA9IGdldEZsYXRPZmZzZXRVbmlmb3JtTmFtZSh0ZXhOYW1lKTtcbiAgaWYgKHRleE51bUMgPT09IDEpIHtcbiAgICAvLyBpbmRleCBpcyB1c2VkIGRpcmVjdGx5IGFzIHBoeXNpY2FsIChubyByaXNrIG9mIGZsb2F0MTYgb3ZlcmZsb3cpLlxuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICBmbG9hdCBpbmRleCA9IGRvdCh2ZWMzKHJvdywgY29sLCAke29mZnNldH0pLCB2ZWMzKCR7XG4gICAgICAgICAgdGV4TmFtZX1TaGFwZVsxXSwgMSwgMSkpO1xuICAgICAgICB2ZWMyIHV2ID0gdmVjMigwLjUsIChpbmRleCArIDAuNSkgLyBmbG9hdCgke3RleE5hbWV9VGV4U2hhcGVbMF0pKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBgXG4gICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgZmxvYXQgaW5kZXggPSBkb3QodmVjMyhyb3csIGNvbCwgJHtvZmZzZXR9KSwgdmVjMygke3NoYXBlWzFdfSwgMSwgMSkpO1xuICAgICAgdmVjMiB1diA9IHZlYzIoMC41LCAoaW5kZXggKyAwLjUpIC8gJHt0ZXhOdW1SfS4wKTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgaWYgKHRleE51bVIgPT09IDEpIHtcbiAgICAvLyBpbmRleCBpcyB1c2VkIGRpcmVjdGx5IGFzIHBoeXNpY2FsIChubyByaXNrIG9mIGZsb2F0MTYgb3ZlcmZsb3cpLlxuICAgIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgICBmbG9hdCBpbmRleCA9IGRvdCh2ZWMzKHJvdywgY29sLCAke29mZnNldH0pLCB2ZWMzKCR7XG4gICAgICAgICAgdGV4TmFtZX1TaGFwZVsxXSwgMSwgMSkpO1xuICAgICAgICB2ZWMyIHV2ID0gdmVjMigoaW5kZXggKyAwLjUpIC8gZmxvYXQoJHt0ZXhOYW1lfVRleFNoYXBlWzFdKSwgMC41KTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBgXG4gICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgZmxvYXQgaW5kZXggPSBkb3QodmVjMyhyb3csIGNvbCwgJHtvZmZzZXR9KSwgdmVjMygke3NoYXBlWzFdfSwgMSwgMSkpO1xuICAgICAgdmVjMiB1diA9IHZlYzIoKGluZGV4ICsgMC41KSAvICR7dGV4TnVtQ30uMCwgMC41KTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cblxuICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sKSB7XG4gICAgICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICAgICAgaW50IGluZGV4ID0gcm93ICogJHt0ZXhOYW1lfVNoYXBlWzFdICsgY29sICsgJHtvZmZzZXR9O1xuICAgICAgICB2ZWMyIHV2ID0gdXZGcm9tRmxhdCgke3RleE5hbWV9VGV4U2hhcGVbMF0sICR7XG4gICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMV0sIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gIH1cbiAgcmV0dXJuIGBcbiAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCkge1xuICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICBpbnQgaW5kZXggPSByb3cgKiAke3NoYXBlWzFdfSArIGNvbCArICR7b2Zmc2V0fTtcbiAgICB2ZWMyIHV2ID0gdXZGcm9tRmxhdCgke3RleE51bVJ9LCAke3RleE51bUN9LCBpbmRleCk7XG4gICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICB9XG5gO1xufVxuXG5mdW5jdGlvbiBnZXRQYWNrZWRTYW1wbGVyM0QoXG4gICAgaW5wdXRJbmZvOiBJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBjb25zdCBzaGFwZSA9IGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlO1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4TmFtZS5zbGljZSgxKTtcbiAgY29uc3QgdGV4U2hhcGUgPSBpbnB1dEluZm8uc2hhcGVJbmZvLnRleFNoYXBlO1xuICBjb25zdCBwYWNrZWRUZXhTaGFwZSA9XG4gICAgICBbTWF0aC5jZWlsKHRleFNoYXBlWzBdIC8gMiksIE1hdGguY2VpbCh0ZXhTaGFwZVsxXSAvIDIpXTtcblxuICBpZiAoc2hhcGVbMF0gPT09IDEpIHtcbiAgICBjb25zdCBzcXVlZXplZFNoYXBlID0gc2hhcGUuc2xpY2UoMSk7XG4gICAgY29uc3Qga2VwdERpbXMgPSBbMSwgMl07XG4gICAgY29uc3QgbmV3SW5wdXRJbmZvID0gc3F1ZWV6ZUlucHV0SW5mbyhpbnB1dEluZm8sIHNxdWVlemVkU2hhcGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFsnYicsICdyb3cnLCAnY29sJ107XG4gICAgcmV0dXJuIGBcbiAgICAgICAgJHtnZXRQYWNrZWRTYW1wbGVyRnJvbUluSW5mbyhuZXdJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpfVxuICAgICAgICB2ZWM0ICR7ZnVuY05hbWV9KGludCBiLCBpbnQgcm93LCBpbnQgY29sKSB7XG4gICAgICAgICAgcmV0dXJuICR7ZnVuY05hbWV9KCR7Z2V0U3F1ZWV6ZWRQYXJhbXMocGFyYW1zLCBrZXB0RGltcyl9KTtcbiAgICAgICAgfVxuICAgICAgYDtcbiAgfVxuXG4gIGNvbnN0IGdsc2wgPSBnZXRHbHNsRGlmZmVyZW5jZXMoKTtcbiAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICByZXR1cm4gYFxuICAgIHZlYzQgJHtmdW5jTmFtZX0oaW50IGIsIGludCByb3csIGludCBjb2wpIHtcbiAgICAgIGl2ZWMyIHBhY2tlZFRleFNoYXBlID0gaXZlYzIoY2VpbChmbG9hdCgke1xuICAgICAgICB0ZXhOYW1lfVRleFNoYXBlWzBdKSAvIDIuMCksIGNlaWwoZmxvYXQoJHt0ZXhOYW1lfVRleFNoYXBlWzFdKSAvIDIuMCkpO1xuICAgICAgaW50IHZhbHVlc1BlclJvdyA9IGludChjZWlsKGZsb2F0KCR7dGV4TmFtZX1TaGFwZVsyXSkgLyAyLjApKTtcbiAgICAgIGludCB0ZXhlbHNJbkJhdGNoID0gdmFsdWVzUGVyUm93ICogaW50KGNlaWwoZmxvYXQoJHtcbiAgICAgICAgdGV4TmFtZX1TaGFwZVsxXSkgLyAyLjApKTtcbiAgICAgIHZlYzIgdXYgPSBwYWNrZWRVVmZyb20zRChcbiAgICAgICAgcGFja2VkVGV4U2hhcGVbMF0sIHBhY2tlZFRleFNoYXBlWzFdLCB0ZXhlbHNJbkJhdGNoLCB2YWx1ZXNQZXJSb3csIGIsIHJvdywgY29sKTtcbiAgICAgIHJldHVybiAke2dsc2wudGV4dHVyZTJEfSgke3RleE5hbWV9LCB1dik7XG4gICAgfVxuICBgO1xuICB9XG5cbiAgY29uc3QgdGV4TnVtUiA9IHBhY2tlZFRleFNoYXBlWzBdO1xuICBjb25zdCB0ZXhOdW1DID0gcGFja2VkVGV4U2hhcGVbMV07XG5cbiAgY29uc3QgdmFsdWVzUGVyUm93ID0gTWF0aC5jZWlsKHNoYXBlWzJdIC8gMik7XG4gIGNvbnN0IHRleGVsc0luQmF0Y2ggPSB2YWx1ZXNQZXJSb3cgKiBNYXRoLmNlaWwoc2hhcGVbMV0gLyAyKTtcblxuICByZXR1cm4gYFxuICAgIHZlYzQgJHtmdW5jTmFtZX0oaW50IGIsIGludCByb3csIGludCBjb2wpIHtcbiAgICAgIHZlYzIgdXYgPSBwYWNrZWRVVmZyb20zRChcbiAgICAgICAgJHt0ZXhOdW1SfSwgJHt0ZXhOdW1DfSwgJHt0ZXhlbHNJbkJhdGNofSwgJHt2YWx1ZXNQZXJSb3d9LCBiLCByb3csIGNvbCk7XG4gICAgICByZXR1cm4gJHtnbHNsLnRleHR1cmUyRH0oJHt0ZXhOYW1lfSwgdXYpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0U2FtcGxlcjNEKFxuICAgIGlucHV0SW5mbzogSW5wdXRJbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zOiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hhcGUgPSBpbnB1dEluZm8uc2hhcGVJbmZvLmxvZ2ljYWxTaGFwZTtcbiAgY29uc3QgdGV4TmFtZSA9IGlucHV0SW5mby5uYW1lO1xuICBjb25zdCBmdW5jTmFtZSA9ICdnZXQnICsgdGV4TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleE5hbWUuc2xpY2UoMSk7XG4gIGNvbnN0IHN0cmlkZTAgPSBzaGFwZVsxXSAqIHNoYXBlWzJdO1xuICBjb25zdCBzdHJpZGUxID0gc2hhcGVbMl07XG5cbiAgY29uc3Qge25ld1NoYXBlLCBrZXB0RGltc30gPSB1dGlsLnNxdWVlemVTaGFwZShzaGFwZSk7XG4gIGNvbnN0IHNxdWVlemVkU2hhcGUgPSBuZXdTaGFwZTtcbiAgaWYgKHNxdWVlemVkU2hhcGUubGVuZ3RoIDwgc2hhcGUubGVuZ3RoKSB7XG4gICAgY29uc3QgbmV3SW5wdXRJbmZvID0gc3F1ZWV6ZUlucHV0SW5mbyhpbnB1dEluZm8sIHNxdWVlemVkU2hhcGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFsncm93JywgJ2NvbCcsICdkZXB0aCddO1xuICAgIHJldHVybiBgXG4gICAgICAgICR7Z2V0U2FtcGxlckZyb21JbkluZm8obmV3SW5wdXRJbmZvLCBlbmFibGVTaGFwZVVuaWZvcm1zKX1cbiAgICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoKSB7XG4gICAgICAgICAgcmV0dXJuICR7ZnVuY05hbWV9KCR7Z2V0U3F1ZWV6ZWRQYXJhbXMocGFyYW1zLCBrZXB0RGltcyl9KTtcbiAgICAgICAgfVxuICAgICAgYDtcbiAgfVxuXG4gIGlmIChpbnB1dEluZm8uc2hhcGVJbmZvLmlzVW5pZm9ybSkge1xuICAgIC8vIFVuaWZvcm0gYXJyYXlzIHdpbGwgYmUgbGVzcyB0aGFuIDY1NTA1IChubyByaXNrIG9mIGZsb2F0MTYgb3ZlcmZsb3cpLlxuICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgpIHtcbiAgICAgICAgaW50IGluZGV4ID0gcm91bmQoZG90KHZlYzMocm93LCBjb2wsIGRlcHRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMygke3N0cmlkZTB9LCAke3N0cmlkZTF9LCAxKSkpO1xuICAgICAgICAke2dldFVuaWZvcm1TYW1wbGVyKGlucHV0SW5mbyl9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgdGV4TnVtUiA9IHRleFNoYXBlWzBdO1xuICBjb25zdCB0ZXhOdW1DID0gdGV4U2hhcGVbMV07XG4gIGNvbnN0IGZsYXRPZmZzZXQgPSBpbnB1dEluZm8uc2hhcGVJbmZvLmZsYXRPZmZzZXQ7XG4gIGlmICh0ZXhOdW1DID09PSBzdHJpZGUwICYmIGZsYXRPZmZzZXQgPT0gbnVsbCkge1xuICAgIC8vIHRleEMgaXMgdXNlZCBkaXJlY3RseSBhcyBwaHlzaWNhbCAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCkge1xuICAgICAgICBpbnQgc3RyaWRlMSA9ICR7dGV4TmFtZX1TaGFwZVsyXTtcbiAgICAgICAgZmxvYXQgdGV4UiA9IGZsb2F0KHJvdyk7XG4gICAgICAgIGZsb2F0IHRleEMgPSBkb3QodmVjMihjb2wsIGRlcHRoKSwgdmVjMihzdHJpZGUxLCAxKSk7XG4gICAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgL1xuICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOYW1lfVRleFNoYXBlWzFdLCAke3RleE5hbWV9VGV4U2hhcGVbMF0pO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcbiAgICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoKSB7XG4gICAgICAgICAgZmxvYXQgdGV4UiA9IGZsb2F0KHJvdyk7XG4gICAgICAgICAgZmxvYXQgdGV4QyA9IGRvdCh2ZWMyKGNvbCwgZGVwdGgpLCB2ZWMyKCR7c3RyaWRlMX0sIDEpKTtcbiAgICAgICAgICB2ZWMyIHV2ID0gKHZlYzIodGV4QywgdGV4UikgKyBoYWxmQ1IpIC9cbiAgICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgICAgfVxuICAgICAgYDtcbiAgfVxuXG4gIGlmICh0ZXhOdW1DID09PSBzdHJpZGUxICYmIGZsYXRPZmZzZXQgPT0gbnVsbCkge1xuICAgIC8vIHRleFIgaXMgdXNlZCBkaXJlY3RseSBhcyBwaHlzaWNhbCAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCkge1xuICAgICAgICBmbG9hdCB0ZXhSID0gZG90KHZlYzIocm93LCBjb2wpLCB2ZWMyKCR7dGV4TmFtZX1TaGFwZVsxXSwgMSkpO1xuICAgICAgICBmbG9hdCB0ZXhDID0gZmxvYXQoZGVwdGgpO1xuICAgICAgICB2ZWMyIHV2ID0gKHZlYzIodGV4QywgdGV4UikgKyBoYWxmQ1IpIC8gdmVjMigke3RleE5hbWV9VGV4U2hhcGVbMV0sICR7XG4gICAgICAgICAgdGV4TmFtZX1UZXhTaGFwZVswXSk7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgIH1cbiAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gYFxuICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCkge1xuICAgICAgZmxvYXQgdGV4UiA9IGRvdCh2ZWMyKHJvdywgY29sKSwgdmVjMigke3NoYXBlWzFdfSwgMSkpO1xuICAgICAgZmxvYXQgdGV4QyA9IGZsb2F0KGRlcHRoKTtcbiAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgLyB2ZWMyKCR7dGV4TnVtQ30uMCwgJHt0ZXhOdW1SfS4wKTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgpIHtcbiAgICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICAgIGludCBzdHJpZGUwID0gJHt0ZXhOYW1lfVNoYXBlWzFdICogJHt0ZXhOYW1lfVNoYXBlWzJdO1xuICAgICAgaW50IHN0cmlkZTEgPSAke3RleE5hbWV9U2hhcGVbMl07XG4gICAgICBpbnQgaW5kZXggPSByb3cgKiBzdHJpZGUwICsgY29sICogc3RyaWRlMSArIGRlcHRoICsgJHtvZmZzZXR9O1xuICAgICAgdmVjMiB1diA9IHV2RnJvbUZsYXQoJHt0ZXhOYW1lfVRleFNoYXBlWzBdLCAke3RleE5hbWV9VGV4U2hhcGVbMV0sIGluZGV4KTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gICAgYDtcbiAgfVxuICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoKSB7XG4gICAgICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICAgICAgaW50IGluZGV4ID0gcm93ICogJHtzdHJpZGUwfSArIGNvbCAqICR7c3RyaWRlMX0gKyBkZXB0aCArICR7b2Zmc2V0fTtcbiAgICAgICAgdmVjMiB1diA9IHV2RnJvbUZsYXQoJHt0ZXhOdW1SfSwgJHt0ZXhOdW1DfSwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFBhY2tlZFNhbXBsZXJORChcbiAgICBpbnB1dEluZm86IElucHV0SW5mbywgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IHRleE5hbWUgPSBpbnB1dEluZm8ubmFtZTtcbiAgY29uc3QgZnVuY05hbWUgPSAnZ2V0JyArIHRleE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXhOYW1lLnNsaWNlKDEpO1xuICBjb25zdCBnbHNsID0gZ2V0R2xzbERpZmZlcmVuY2VzKCk7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgLy8gVE9ETzogc3VwcG9ydCA1ZCBhbmQgNmRcbiAgICByZXR1cm4gYFxuICAgIHZlYzQgJHtmdW5jTmFtZX0oaW50IGIyLCBpbnQgYiwgaW50IHJvdywgaW50IGNvbCkge1xuICAgICAgaW50IHZhbHVlc1BlclJvdyA9IGludChjZWlsKGZsb2F0KCR7dGV4TmFtZX1TaGFwZVszXSkgLyAyLjApKTtcbiAgICAgIGludCB0ZXhlbHNJbkJhdGNoID0gdmFsdWVzUGVyUm93ICogaW50KGNlaWwoZmxvYXQoJHtcbiAgICAgICAgdGV4TmFtZX1TaGFwZVsyXSkgLyAyLjApKTtcbiAgICAgIGludCBpbmRleCA9IGIgKiB0ZXhlbHNJbkJhdGNoICsgKHJvdyAvIDIpICogdmFsdWVzUGVyUm93ICsgKGNvbCAvIDIpO1xuICAgICAgdGV4ZWxzSW5CYXRjaCAqPSAke3RleE5hbWV9U2hhcGVbMV07XG4gICAgICBpbmRleCA9IGIyICogdGV4ZWxzSW5CYXRjaCArIGluZGV4O1xuICAgICAgaXZlYzIgcGFja2VkVGV4U2hhcGUgPSBpdmVjMihjZWlsKGZsb2F0KCR7XG4gICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMF0pIC8gMi4wKSwgY2VpbChmbG9hdCgke3RleE5hbWV9VGV4U2hhcGVbMV0pIC8gMi4wKSk7XG4gICAgICBpbnQgdGV4UiA9IGluZGV4IC8gcGFja2VkVGV4U2hhcGVbMV07XG4gICAgICBpbnQgdGV4QyA9IGluZGV4IC0gdGV4UiAqIHBhY2tlZFRleFNoYXBlWzFdO1xuICAgICAgdmVjMiB1diA9ICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvIHZlYzIocGFja2VkVGV4U2hhcGVbMV0sIHBhY2tlZFRleFNoYXBlWzBdKTsgcmV0dXJuICR7XG4gICAgICAgIGdsc2wudGV4dHVyZTJEfSgke3RleE5hbWV9LCB1dik7XG4gICAgfVxuICBgO1xuICB9XG4gIGNvbnN0IHNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIGNvbnN0IHJhbmsgPSBzaGFwZS5sZW5ndGg7XG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgcGFja2VkVGV4U2hhcGUgPVxuICAgICAgW01hdGguY2VpbCh0ZXhTaGFwZVswXSAvIDIpLCBNYXRoLmNlaWwodGV4U2hhcGVbMV0gLyAyKV07XG4gIGNvbnN0IHRleE51bVIgPSBwYWNrZWRUZXhTaGFwZVswXTtcbiAgY29uc3QgdGV4TnVtQyA9IHBhY2tlZFRleFNoYXBlWzFdO1xuXG4gIGNvbnN0IHZhbHVlc1BlclJvdyA9IE1hdGguY2VpbChzaGFwZVtyYW5rIC0gMV0gLyAyKTtcbiAgbGV0IHRleGVsc0luQmF0Y2ggPSB2YWx1ZXNQZXJSb3cgKiBNYXRoLmNlaWwoc2hhcGVbcmFuayAtIDJdIC8gMik7XG4gIGxldCBwYXJhbXMgPSBgaW50IGIsIGludCByb3csIGludCBjb2xgO1xuICBsZXQgaW5kZXggPSBgYiAqICR7dGV4ZWxzSW5CYXRjaH0gKyAocm93IC8gMikgKiAke3ZhbHVlc1BlclJvd30gKyAoY29sIC8gMilgO1xuICBmb3IgKGxldCBiID0gMjsgYiA8IHJhbmsgLSAxOyBiKyspIHtcbiAgICBwYXJhbXMgPSBgaW50IGIke2J9LCBgICsgcGFyYW1zO1xuICAgIHRleGVsc0luQmF0Y2ggKj0gc2hhcGVbcmFuayAtIGIgLSAxXTtcbiAgICBpbmRleCA9IGBiJHtifSAqICR7dGV4ZWxzSW5CYXRjaH0gKyBgICsgaW5kZXg7XG4gIH1cbiAgcmV0dXJuIGBcbiAgICB2ZWM0ICR7ZnVuY05hbWV9KCR7cGFyYW1zfSkge1xuICAgICAgaW50IGluZGV4ID0gJHtpbmRleH07XG4gICAgICBpbnQgdGV4UiA9IGluZGV4IC8gJHt0ZXhOdW1DfTtcbiAgICAgIGludCB0ZXhDID0gaW5kZXggLSB0ZXhSICogJHt0ZXhOdW1DfTtcbiAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgLyB2ZWMyKCR7dGV4TnVtQ30sICR7dGV4TnVtUn0pO1xuICAgICAgcmV0dXJuICR7Z2xzbC50ZXh0dXJlMkR9KCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNhbXBsZXI0RChcbiAgICBpbnB1dEluZm86IElucHV0SW5mbywgZW5hYmxlU2hhcGVVbmlmb3JtczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGNvbnN0IHNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIGNvbnN0IHRleE5hbWUgPSBpbnB1dEluZm8ubmFtZTtcbiAgY29uc3QgZnVuY05hbWUgPSAnZ2V0JyArIHRleE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXhOYW1lLnNsaWNlKDEpO1xuICBjb25zdCBzdHJpZGUyID0gc2hhcGVbM107XG4gIGNvbnN0IHN0cmlkZTEgPSBzaGFwZVsyXSAqIHN0cmlkZTI7XG4gIGNvbnN0IHN0cmlkZTAgPSBzaGFwZVsxXSAqIHN0cmlkZTE7XG5cbiAgY29uc3Qge25ld1NoYXBlLCBrZXB0RGltc30gPSB1dGlsLnNxdWVlemVTaGFwZShzaGFwZSk7XG4gIGlmIChuZXdTaGFwZS5sZW5ndGggPCBzaGFwZS5sZW5ndGgpIHtcbiAgICBjb25zdCBuZXdJbnB1dEluZm8gPSBzcXVlZXplSW5wdXRJbmZvKGlucHV0SW5mbywgbmV3U2hhcGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFsncm93JywgJ2NvbCcsICdkZXB0aCcsICdkZXB0aDInXTtcbiAgICByZXR1cm4gYFxuICAgICAgJHtnZXRTYW1wbGVyRnJvbUluSW5mbyhuZXdJbnB1dEluZm8sIGVuYWJsZVNoYXBlVW5pZm9ybXMpfVxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLCBpbnQgZGVwdGgyKSB7XG4gICAgICAgIHJldHVybiAke2Z1bmNOYW1lfSgke2dldFNxdWVlemVkUGFyYW1zKHBhcmFtcywga2VwdERpbXMpfSk7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGlmIChpbnB1dEluZm8uc2hhcGVJbmZvLmlzVW5pZm9ybSkge1xuICAgIC8vIFVuaWZvcm0gYXJyYXlzIHdpbGwgYmUgbGVzcyB0aGFuIDY1NTA1IChubyByaXNrIG9mIGZsb2F0MTYgb3ZlcmZsb3cpLlxuICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIpIHtcbiAgICAgICAgaW50IGluZGV4ID0gcm91bmQoZG90KHZlYzQocm93LCBjb2wsIGRlcHRoLCBkZXB0aDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWM0KCR7c3RyaWRlMH0sICR7c3RyaWRlMX0sICR7c3RyaWRlMn0sIDEpKSk7XG4gICAgICAgICR7Z2V0VW5pZm9ybVNhbXBsZXIoaW5wdXRJbmZvKX1cbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgY29uc3QgZmxhdE9mZnNldCA9IGlucHV0SW5mby5zaGFwZUluZm8uZmxhdE9mZnNldDtcbiAgY29uc3QgdGV4U2hhcGUgPSBpbnB1dEluZm8uc2hhcGVJbmZvLnRleFNoYXBlO1xuICBjb25zdCB0ZXhOdW1SID0gdGV4U2hhcGVbMF07XG4gIGNvbnN0IHRleE51bUMgPSB0ZXhTaGFwZVsxXTtcblxuICBjb25zdCBzdHJpZGUyU3RyID0gYGludCBzdHJpZGUyID0gJHt0ZXhOYW1lfVNoYXBlWzNdO2A7XG4gIGNvbnN0IHN0cmlkZTFTdHIgPSBgaW50IHN0cmlkZTEgPSAke3RleE5hbWV9U2hhcGVbMl0gKiBzdHJpZGUyO2A7XG4gIGNvbnN0IHN0cmlkZTBTdHIgPSBgaW50IHN0cmlkZTAgPSAke3RleE5hbWV9U2hhcGVbMV0gKiBzdHJpZGUxO2A7XG4gIGlmICh0ZXhOdW1DID09PSBzdHJpZGUwICYmIGZsYXRPZmZzZXQgPT0gbnVsbCkge1xuICAgIC8vIHRleEMgaXMgdXNlZCBkaXJlY3RseSBhcyBwaHlzaWNhbCAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICBpZiAoZW5hYmxlU2hhcGVVbmlmb3Jtcykge1xuICAgICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCwgaW50IGRlcHRoMikge1xuICAgICAgICAke3N0cmlkZTJTdHJ9XG4gICAgICAgICR7c3RyaWRlMVN0cn1cbiAgICAgICAgZmxvYXQgdGV4UiA9IGZsb2F0KHJvdyk7XG4gICAgICAgIGZsb2F0IHRleEMgPVxuICAgICAgICAgICAgZG90KHZlYzMoY29sLCBkZXB0aCwgZGVwdGgyKSxcbiAgICAgICAgICAgICAgICB2ZWMzKHN0cmlkZTEsIHN0cmlkZTIsIDEpKTtcbiAgICAgICAgdmVjMiB1diA9ICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvXG4gICAgICAgICAgICAgICAgICAgdmVjMigke3RleE5hbWV9VGV4U2hhcGVbMV0sICR7dGV4TmFtZX1UZXhTaGFwZVswXSk7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICAgIH1cbiAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLCBpbnQgZGVwdGgyKSB7XG4gICAgICAgIGZsb2F0IHRleFIgPSBmbG9hdChyb3cpO1xuICAgICAgICBmbG9hdCB0ZXhDID1cbiAgICAgICAgICAgIGRvdCh2ZWMzKGNvbCwgZGVwdGgsIGRlcHRoMiksXG4gICAgICAgICAgICAgICAgdmVjMygke3N0cmlkZTF9LCAke3N0cmlkZTJ9LCAxKSk7XG4gICAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgL1xuICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBpZiAodGV4TnVtQyA9PT0gc3RyaWRlMiAmJiBmbGF0T2Zmc2V0ID09IG51bGwpIHtcbiAgICAvLyB0ZXhSIGlzIHVzZWQgZGlyZWN0bHkgYXMgcGh5c2ljYWwgKG5vIHJpc2sgb2YgZmxvYXQxNiBvdmVyZmxvdykuXG4gICAgaWYgKGVuYWJsZVNoYXBlVW5pZm9ybXMpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIpIHtcbiAgICAgICAgZmxvYXQgdGV4UiA9IGRvdCh2ZWMzKHJvdywgY29sLCBkZXB0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVjMygke3RleE5hbWV9U2hhcGVbMV0gKiAke3RleE5hbWV9U2hhcGVbMl0sICR7XG4gICAgICAgICAgdGV4TmFtZX1TaGFwZVsyXSwgMSkpO1xuICAgICAgICBmbG9hdCB0ZXhDID0gZmxvYXQoZGVwdGgyKTtcbiAgICAgICAgdmVjMiB1diA9ICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvXG4gICAgICAgICAgICAgICAgICB2ZWMyKCR7dGV4TmFtZX1UZXhTaGFwZVsxXSwgJHt0ZXhOYW1lfVRleFNoYXBlWzBdKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIpIHtcbiAgICAgICAgZmxvYXQgdGV4UiA9IGRvdCh2ZWMzKHJvdywgY29sLCBkZXB0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVjMygke3NoYXBlWzFdICogc2hhcGVbMl19LCAke3NoYXBlWzJdfSwgMSkpO1xuICAgICAgICBmbG9hdCB0ZXhDID0gZmxvYXQoZGVwdGgyKTtcbiAgICAgICAgdmVjMiB1diA9ICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvXG4gICAgICAgICAgICAgICAgICB2ZWMyKCR7dGV4TnVtQ30uMCwgJHt0ZXhOdW1SfS4wKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIGlmIChlbmFibGVTaGFwZVVuaWZvcm1zKSB7XG4gICAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIpIHtcbiAgICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICAgICR7c3RyaWRlMlN0cn1cbiAgICAgICR7c3RyaWRlMVN0cn1cbiAgICAgICR7c3RyaWRlMFN0cn1cbiAgICAgIGludCBpbmRleCA9IHJvdyAqIHN0cmlkZTAgKyBjb2wgKiBzdHJpZGUxICtcbiAgICAgICAgICBkZXB0aCAqIHN0cmlkZTIgKyBkZXB0aDI7XG4gICAgICB2ZWMyIHV2ID0gdXZGcm9tRmxhdCgke3RleE5hbWV9VGV4U2hhcGVbMF0sICR7XG4gICAgICAgIHRleE5hbWV9VGV4U2hhcGVbMV0sIGluZGV4ICsgJHtvZmZzZXR9KTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG4gIH1cbiAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIpIHtcbiAgICAgIC8vIEV4cGxpY2l0bHkgdXNlIGludGVnZXIgb3BlcmF0aW9ucyBhcyBkb3QoKSBvbmx5IHdvcmtzIG9uIGZsb2F0cy5cbiAgICAgIGludCBpbmRleCA9IHJvdyAqICR7c3RyaWRlMH0gKyBjb2wgKiAke3N0cmlkZTF9ICtcbiAgICAgICAgICBkZXB0aCAqICR7c3RyaWRlMn0gKyBkZXB0aDI7XG4gICAgICB2ZWMyIHV2ID0gdXZGcm9tRmxhdCgke3RleE51bVJ9LCAke3RleE51bUN9LCBpbmRleCArICR7b2Zmc2V0fSk7XG4gICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgfVxuICBgO1xufVxuXG5mdW5jdGlvbiBnZXRTYW1wbGVyNUQoaW5wdXRJbmZvOiBJbnB1dEluZm8pOiBzdHJpbmcge1xuICBjb25zdCBzaGFwZSA9IGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlO1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4TmFtZS5zbGljZSgxKTtcbiAgY29uc3Qgc3RyaWRlMyA9IHNoYXBlWzRdO1xuICBjb25zdCBzdHJpZGUyID0gc2hhcGVbM10gKiBzdHJpZGUzO1xuICBjb25zdCBzdHJpZGUxID0gc2hhcGVbMl0gKiBzdHJpZGUyO1xuICBjb25zdCBzdHJpZGUwID0gc2hhcGVbMV0gKiBzdHJpZGUxO1xuXG4gIGNvbnN0IHtuZXdTaGFwZSwga2VwdERpbXN9ID0gdXRpbC5zcXVlZXplU2hhcGUoc2hhcGUpO1xuICBpZiAobmV3U2hhcGUubGVuZ3RoIDwgc2hhcGUubGVuZ3RoKSB7XG4gICAgY29uc3QgbmV3SW5wdXRJbmZvID0gc3F1ZWV6ZUlucHV0SW5mbyhpbnB1dEluZm8sIG5ld1NoYXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbJ3JvdycsICdjb2wnLCAnZGVwdGgnLCAnZGVwdGgyJywgJ2RlcHRoMyddO1xuICAgIHJldHVybiBgXG4gICAgICAke2dldFNhbXBsZXJGcm9tSW5JbmZvKG5ld0lucHV0SW5mbyl9XG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIsIGludCBkZXB0aDMpIHtcbiAgICAgICAgcmV0dXJuICR7ZnVuY05hbWV9KCR7Z2V0U3F1ZWV6ZWRQYXJhbXMocGFyYW1zLCBrZXB0RGltcyl9KTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgaWYgKGlucHV0SW5mby5zaGFwZUluZm8uaXNVbmlmb3JtKSB7XG4gICAgLy8gVW5pZm9ybSBhcnJheXMgd2lsbCBiZSBsZXNzIHRoYW4gNjU1MDUgKG5vIHJpc2sgb2YgZmxvYXQxNiBvdmVyZmxvdykuXG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCwgaW50IGRlcHRoMiwgaW50IGRlcHRoMykge1xuICAgICAgICBmbG9hdCBpbmRleCA9IGRvdChcbiAgICAgICAgICB2ZWM0KHJvdywgY29sLCBkZXB0aCwgZGVwdGgyKSxcbiAgICAgICAgICB2ZWM0KCR7c3RyaWRlMH0sICR7c3RyaWRlMX0sICR7c3RyaWRlMn0sICR7c3RyaWRlM30pKSArXG4gICAgICAgICAgZGVwdGgzO1xuICAgICAgICAke2dldFVuaWZvcm1TYW1wbGVyKGlucHV0SW5mbyl9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IGZsYXRPZmZzZXQgPSBpbnB1dEluZm8uc2hhcGVJbmZvLmZsYXRPZmZzZXQ7XG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgdGV4TnVtUiA9IHRleFNoYXBlWzBdO1xuICBjb25zdCB0ZXhOdW1DID0gdGV4U2hhcGVbMV07XG5cbiAgaWYgKHRleE51bUMgPT09IHN0cmlkZTAgJiYgZmxhdE9mZnNldCA9PSBudWxsKSB7XG4gICAgLy8gdGV4QyBpcyB1c2VkIGRpcmVjdGx5IGFzIHBoeXNpY2FsIChubyByaXNrIG9mIGZsb2F0MTYgb3ZlcmZsb3cpLlxuICAgIHJldHVybiBgXG4gICAgICBmbG9hdCAke2Z1bmNOYW1lfShpbnQgcm93LCBpbnQgY29sLCBpbnQgZGVwdGgsIGludCBkZXB0aDIsIGludCBkZXB0aDMpIHtcbiAgICAgICAgaW50IHRleFIgPSByb3c7XG4gICAgICAgIGZsb2F0IHRleEMgPSBkb3QodmVjNChjb2wsIGRlcHRoLCBkZXB0aDIsIGRlcHRoMyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmVjNCgke3N0cmlkZTF9LCAke3N0cmlkZTJ9LCAke3N0cmlkZTN9LCAxKSk7XG4gICAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgL1xuICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGlmICh0ZXhOdW1DID09PSBzdHJpZGUzICYmIGZsYXRPZmZzZXQgPT0gbnVsbCkge1xuICAgIC8vIHRleFIgaXMgdXNlZCBkaXJlY3RseSBhcyBwaHlzaWNhbCAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLCBpbnQgZGVwdGgyLCBpbnQgZGVwdGgzKSB7XG4gICAgICAgIGZsb2F0IHRleFIgPSBkb3QoXG4gICAgICAgICAgdmVjNChyb3csIGNvbCwgZGVwdGgsIGRlcHRoMiksXG4gICAgICAgICAgdmVjNCgke3NoYXBlWzFdICogc2hhcGVbMl0gKiBzaGFwZVszXX0sXG4gICAgICAgICAgICAgICAke3NoYXBlWzJdICogc2hhcGVbM119LCAke3NoYXBlWzNdfSwgMSkpO1xuICAgICAgICBpbnQgdGV4QyA9IGRlcHRoMztcbiAgICAgICAgdmVjMiB1diA9ICh2ZWMyKHRleEMsIHRleFIpICsgaGFsZkNSKSAvXG4gICAgICAgICAgICAgICAgICB2ZWMyKCR7dGV4TnVtQ30uMCwgJHt0ZXhOdW1SfS4wKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIHJldHVybiBgXG4gICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLCBpbnQgZGVwdGgyLCBpbnQgZGVwdGgzKSB7XG4gICAgICAvLyBFeHBsaWNpdGx5IHVzZSBpbnRlZ2VyIG9wZXJhdGlvbnMgYXMgZG90KCkgb25seSB3b3JrcyBvbiBmbG9hdHMuXG4gICAgICBpbnQgaW5kZXggPSByb3cgKiAke3N0cmlkZTB9ICsgY29sICogJHtzdHJpZGUxfSArIGRlcHRoICogJHtzdHJpZGUyfSArXG4gICAgICAgICAgZGVwdGgyICogJHtzdHJpZGUzfSArIGRlcHRoMyArICR7b2Zmc2V0fTtcbiAgICAgIHZlYzIgdXYgPSB1dkZyb21GbGF0KCR7dGV4TnVtUn0sICR7dGV4TnVtQ30sIGluZGV4KTtcbiAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHV2KTtcbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNhbXBsZXI2RChpbnB1dEluZm86IElucHV0SW5mbyk6IHN0cmluZyB7XG4gIGNvbnN0IHNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGU7XG4gIGNvbnN0IHRleE5hbWUgPSBpbnB1dEluZm8ubmFtZTtcbiAgY29uc3QgZnVuY05hbWUgPSAnZ2V0JyArIHRleE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXhOYW1lLnNsaWNlKDEpO1xuXG4gIGNvbnN0IHtuZXdTaGFwZSwga2VwdERpbXN9ID0gdXRpbC5zcXVlZXplU2hhcGUoc2hhcGUpO1xuICBpZiAobmV3U2hhcGUubGVuZ3RoIDwgc2hhcGUubGVuZ3RoKSB7XG4gICAgY29uc3QgbmV3SW5wdXRJbmZvID0gc3F1ZWV6ZUlucHV0SW5mbyhpbnB1dEluZm8sIG5ld1NoYXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbJ3JvdycsICdjb2wnLCAnZGVwdGgnLCAnZGVwdGgyJywgJ2RlcHRoMycsICdkZXB0aDQnXTtcbiAgICByZXR1cm4gYFxuICAgICAgJHtnZXRTYW1wbGVyRnJvbUluSW5mbyhuZXdJbnB1dEluZm8pfVxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgyLCBpbnQgZGVwdGgzLCBpbnQgZGVwdGg0KSB7XG4gICAgICAgIHJldHVybiAke2Z1bmNOYW1lfSgke2dldFNxdWVlemVkUGFyYW1zKHBhcmFtcywga2VwdERpbXMpfSk7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IHN0cmlkZTQgPSBzaGFwZVs1XTtcbiAgY29uc3Qgc3RyaWRlMyA9IHNoYXBlWzRdICogc3RyaWRlNDtcbiAgY29uc3Qgc3RyaWRlMiA9IHNoYXBlWzNdICogc3RyaWRlMztcbiAgY29uc3Qgc3RyaWRlMSA9IHNoYXBlWzJdICogc3RyaWRlMjtcbiAgY29uc3Qgc3RyaWRlMCA9IHNoYXBlWzFdICogc3RyaWRlMTtcblxuICBpZiAoaW5wdXRJbmZvLnNoYXBlSW5mby5pc1VuaWZvcm0pIHtcbiAgICAvLyBVbmlmb3JtIGFycmF5cyB3aWxsIGJlIGxlc3MgdGhhbiA2NTUwNSAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgaW50IGRlcHRoMiwgaW50IGRlcHRoMywgaW50IGRlcHRoNCkge1xuICAgICAgICBpbnQgaW5kZXggPSByb3VuZChkb3QoXG4gICAgICAgICAgdmVjNChyb3csIGNvbCwgZGVwdGgsIGRlcHRoMiksXG4gICAgICAgICAgdmVjNCgke3N0cmlkZTB9LCAke3N0cmlkZTF9LCAke3N0cmlkZTJ9LCAke3N0cmlkZTN9KSkgK1xuICAgICAgICAgIGRvdChcbiAgICAgICAgICAgIHZlYzIoZGVwdGgzLCBkZXB0aDQpLFxuICAgICAgICAgICAgdmVjMigke3N0cmlkZTR9LCAxKSkpO1xuICAgICAgICAke2dldFVuaWZvcm1TYW1wbGVyKGlucHV0SW5mbyl9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IGZsYXRPZmZzZXQgPSBpbnB1dEluZm8uc2hhcGVJbmZvLmZsYXRPZmZzZXQ7XG4gIGNvbnN0IHRleFNoYXBlID0gaW5wdXRJbmZvLnNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgdGV4TnVtUiA9IHRleFNoYXBlWzBdO1xuICBjb25zdCB0ZXhOdW1DID0gdGV4U2hhcGVbMV07XG4gIGlmICh0ZXhOdW1DID09PSBzdHJpZGUwICYmIGZsYXRPZmZzZXQgPT0gbnVsbCkge1xuICAgIC8vIHRleEMgaXMgdXNlZCBkaXJlY3RseSBhcyBwaHlzaWNhbCAobm8gcmlzayBvZiBmbG9hdDE2IG92ZXJmbG93KS5cbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgyLCBpbnQgZGVwdGgzLCBpbnQgZGVwdGg0KSB7XG4gICAgICAgIGludCB0ZXhSID0gcm93O1xuICAgICAgICBmbG9hdCB0ZXhDID0gZG90KHZlYzQoY29sLCBkZXB0aCwgZGVwdGgyLCBkZXB0aDMpLFxuICAgICAgICAgIHZlYzQoJHtzdHJpZGUxfSwgJHtzdHJpZGUyfSwgJHtzdHJpZGUzfSwgJHtzdHJpZGU0fSkpICtcbiAgICAgICAgICAgICAgIGZsb2F0KGRlcHRoNCk7XG4gICAgICAgIHZlYzIgdXYgPSAodmVjMih0ZXhDLCB0ZXhSKSArIGhhbGZDUikgL1xuICAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBpZiAodGV4TnVtQyA9PT0gc3RyaWRlNCAmJiBmbGF0T2Zmc2V0ID09IG51bGwpIHtcbiAgICAvLyB0ZXhSIGlzIHVzZWQgZGlyZWN0bHkgYXMgcGh5c2ljYWwgKG5vIHJpc2sgb2YgZmxvYXQxNiBvdmVyZmxvdykuXG4gICAgcmV0dXJuIGBcbiAgICAgIGZsb2F0ICR7ZnVuY05hbWV9KGludCByb3csIGludCBjb2wsIGludCBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgaW50IGRlcHRoMiwgaW50IGRlcHRoMywgaW50IGRlcHRoNCkge1xuICAgICAgICBmbG9hdCB0ZXhSID0gZG90KHZlYzQocm93LCBjb2wsIGRlcHRoLCBkZXB0aDIpLFxuICAgICAgICAgIHZlYzQoJHtzaGFwZVsxXSAqIHNoYXBlWzJdICogc2hhcGVbM10gKiBzaGFwZVs0XX0sXG4gICAgICAgICAgICAgICAke3NoYXBlWzJdICogc2hhcGVbM10gKiBzaGFwZVs0XX0sXG4gICAgICAgICAgICAgICAke3NoYXBlWzNdICogc2hhcGVbNF19LFxuICAgICAgICAgICAgICAgJHtzaGFwZVs0XX0pKSArIGZsb2F0KGRlcHRoMyk7XG4gICAgICAgIGludCB0ZXhDID0gZGVwdGg0O1xuICAgICAgICB2ZWMyIHV2ID0gKHZlYzIodGV4QywgdGV4UikgKyBoYWxmQ1IpIC9cbiAgICAgICAgICAgICAgICAgIHZlYzIoJHt0ZXhOdW1DfS4wLCAke3RleE51bVJ9LjApO1xuICAgICAgICByZXR1cm4gc2FtcGxlVGV4dHVyZSgke3RleE5hbWV9LCB1dik7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuICBjb25zdCBvZmZzZXQgPSBnZXRGbGF0T2Zmc2V0VW5pZm9ybU5hbWUodGV4TmFtZSk7XG4gIHJldHVybiBgXG4gICAgZmxvYXQgJHtmdW5jTmFtZX0oaW50IHJvdywgaW50IGNvbCwgaW50IGRlcHRoLFxuICAgICAgICAgICAgICAgICAgaW50IGRlcHRoMiwgaW50IGRlcHRoMywgaW50IGRlcHRoNCkge1xuICAgICAgLy8gRXhwbGljaXRseSB1c2UgaW50ZWdlciBvcGVyYXRpb25zIGFzIGRvdCgpIG9ubHkgd29ya3Mgb24gZmxvYXRzLlxuICAgICAgaW50IGluZGV4ID0gcm93ICogJHtzdHJpZGUwfSArIGNvbCAqICR7c3RyaWRlMX0gKyBkZXB0aCAqICR7c3RyaWRlMn0gK1xuICAgICAgICAgIGRlcHRoMiAqICR7c3RyaWRlM30gKyBkZXB0aDMgKiAke3N0cmlkZTR9ICsgZGVwdGg0ICsgJHtvZmZzZXR9O1xuICAgICAgdmVjMiB1diA9IHV2RnJvbUZsYXQoJHt0ZXhOdW1SfSwgJHt0ZXhOdW1DfSwgaW5kZXgpO1xuICAgICAgcmV0dXJuIHNhbXBsZVRleHR1cmUoJHt0ZXhOYW1lfSwgdXYpO1xuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0VW5pZm9ybVNhbXBsZXIoaW5wdXRJbmZvOiBJbnB1dEluZm8pOiBzdHJpbmcge1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IGluU2l6ZSA9IHV0aWwuc2l6ZUZyb21TaGFwZShpbnB1dEluZm8uc2hhcGVJbmZvLmxvZ2ljYWxTaGFwZSk7XG5cbiAgaWYgKGluU2l6ZSA8IDIpIHtcbiAgICByZXR1cm4gYHJldHVybiAke3RleE5hbWV9O2A7XG4gIH1cblxuICByZXR1cm4gYFxuICAgIGZvciAoaW50IGkgPSAwOyBpIDwgJHtpblNpemV9OyBpKyspIHtcbiAgICAgIGlmIChpID09IGluZGV4KSB7XG4gICAgICAgIHJldHVybiAke3RleE5hbWV9W2ldO1xuICAgICAgfVxuICAgIH1cbiAgYDtcbn1cblxuZnVuY3Rpb24gZ2V0UGFja2VkU2FtcGxlckF0T3V0cHV0Q29vcmRzKFxuICAgIGlucHV0SW5mbzogSW5wdXRJbmZvLCBvdXRTaGFwZUluZm86IFNoYXBlSW5mbykge1xuICBjb25zdCB0ZXhOYW1lID0gaW5wdXRJbmZvLm5hbWU7XG4gIGNvbnN0IHRleEZ1bmNTbmlwcGV0ID0gdGV4TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleE5hbWUuc2xpY2UoMSk7XG4gIGNvbnN0IGZ1bmNOYW1lID0gJ2dldCcgKyB0ZXhGdW5jU25pcHBldCArICdBdE91dENvb3Jkcyc7XG4gIGNvbnN0IGluUmFuayA9IGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlLmxlbmd0aDtcbiAgY29uc3Qgb3V0UmFuayA9IG91dFNoYXBlSW5mby5sb2dpY2FsU2hhcGUubGVuZ3RoO1xuXG4gIGNvbnN0IGJyb2FkY2FzdERpbXMgPSBnZXRCcm9hZGNhc3REaW1zKFxuICAgICAgaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGUsIG91dFNoYXBlSW5mby5sb2dpY2FsU2hhcGUpO1xuXG4gIGNvbnN0IHR5cGUgPSBnZXRDb29yZHNEYXRhVHlwZShvdXRSYW5rKTtcbiAgY29uc3QgcmFua0RpZmYgPSBvdXRSYW5rIC0gaW5SYW5rO1xuICBsZXQgY29vcmRzU25pcHBldDogc3RyaW5nO1xuICBjb25zdCBmaWVsZHMgPSBbJ3gnLCAneScsICd6JywgJ3cnLCAndScsICd2J107XG5cbiAgaWYgKGluUmFuayA9PT0gMCkge1xuICAgIGNvb3Jkc1NuaXBwZXQgPSAnJztcbiAgfSBlbHNlIGlmIChvdXRSYW5rIDwgMiAmJiBicm9hZGNhc3REaW1zLmxlbmd0aCA+PSAxKSB7XG4gICAgY29vcmRzU25pcHBldCA9ICdjb29yZHMgPSAwOyc7XG4gIH0gZWxzZSB7XG4gICAgY29vcmRzU25pcHBldCA9XG4gICAgICAgIGJyb2FkY2FzdERpbXMubWFwKGQgPT4gYGNvb3Jkcy4ke2ZpZWxkc1tkICsgcmFua0RpZmZdfSA9IDA7YClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgfVxuICBsZXQgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gJyc7XG4gIGlmIChvdXRSYW5rIDwgMiAmJiBpblJhbmsgPiAwKSB7XG4gICAgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gJ2Nvb3Jkcyc7XG4gIH0gZWxzZSB7XG4gICAgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgocywgaSkgPT4gYGNvb3Jkcy4ke2ZpZWxkc1tpICsgcmFua0RpZmZdfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgbGV0IG91dHB1dCA9IGByZXR1cm4gb3V0cHV0VmFsdWU7YDtcbiAgY29uc3QgaW5TaXplID0gdXRpbC5zaXplRnJvbVNoYXBlKGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlKTtcbiAgY29uc3QgaXNJbnB1dFNjYWxhciA9IGluU2l6ZSA9PT0gMTtcbiAgY29uc3Qgb3V0U2l6ZSA9IHV0aWwuc2l6ZUZyb21TaGFwZShvdXRTaGFwZUluZm8ubG9naWNhbFNoYXBlKTtcbiAgY29uc3QgaXNPdXRwdXRTY2FsYXIgPSBvdXRTaXplID09PSAxO1xuXG4gIGlmIChpblJhbmsgPT09IDEgJiYgIWlzSW5wdXRTY2FsYXIgJiYgIWlzT3V0cHV0U2NhbGFyKSB7XG4gICAgb3V0cHV0ID0gYFxuICAgICAgcmV0dXJuIHZlYzQob3V0cHV0VmFsdWUueHksIG91dHB1dFZhbHVlLnh5KTtcbiAgICBgO1xuICB9IGVsc2UgaWYgKGlzSW5wdXRTY2FsYXIgJiYgIWlzT3V0cHV0U2NhbGFyKSB7XG4gICAgaWYgKG91dFJhbmsgPT09IDEpIHtcbiAgICAgIG91dHB1dCA9IGBcbiAgICAgICAgcmV0dXJuIHZlYzQob3V0cHV0VmFsdWUueCwgb3V0cHV0VmFsdWUueCwgMC4sIDAuKTtcbiAgICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9IGBcbiAgICAgICAgcmV0dXJuIHZlYzQob3V0cHV0VmFsdWUueCk7XG4gICAgICBgO1xuICAgIH1cbiAgfSBlbHNlIGlmIChicm9hZGNhc3REaW1zLmxlbmd0aCkge1xuICAgIGNvbnN0IHJvd3MgPSBpblJhbmsgLSAyO1xuICAgIGNvbnN0IGNvbHMgPSBpblJhbmsgLSAxO1xuXG4gICAgaWYgKGJyb2FkY2FzdERpbXMuaW5kZXhPZihyb3dzKSA+IC0xICYmIGJyb2FkY2FzdERpbXMuaW5kZXhPZihjb2xzKSA+IC0xKSB7XG4gICAgICBvdXRwdXQgPSBgcmV0dXJuIHZlYzQob3V0cHV0VmFsdWUueCk7YDtcbiAgICB9IGVsc2UgaWYgKGJyb2FkY2FzdERpbXMuaW5kZXhPZihyb3dzKSA+IC0xKSB7XG4gICAgICBvdXRwdXQgPSBgcmV0dXJuIHZlYzQob3V0cHV0VmFsdWUueCwgb3V0cHV0VmFsdWUueSwgYCArXG4gICAgICAgICAgYG91dHB1dFZhbHVlLngsIG91dHB1dFZhbHVlLnkpO2A7XG4gICAgfSBlbHNlIGlmIChicm9hZGNhc3REaW1zLmluZGV4T2YoY29scykgPiAtMSkge1xuICAgICAgb3V0cHV0ID0gYHJldHVybiB2ZWM0KG91dHB1dFZhbHVlLnh4LCBvdXRwdXRWYWx1ZS56eik7YDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYFxuICAgIHZlYzQgJHtmdW5jTmFtZX0oKSB7XG4gICAgICAke3R5cGV9IGNvb3JkcyA9IGdldE91dHB1dENvb3JkcygpO1xuICAgICAgJHtjb29yZHNTbmlwcGV0fVxuICAgICAgdmVjNCBvdXRwdXRWYWx1ZSA9IGdldCR7dGV4RnVuY1NuaXBwZXR9KCR7dW5wYWNrZWRDb29yZHNTbmlwcGV0fSk7XG4gICAgICAke291dHB1dH1cbiAgICB9XG4gIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNhbXBsZXJBdE91dHB1dENvb3JkcyhcbiAgICBpbnB1dEluZm86IElucHV0SW5mbywgb3V0U2hhcGVJbmZvOiBTaGFwZUluZm8pIHtcbiAgY29uc3QgdGV4TmFtZSA9IGlucHV0SW5mby5uYW1lO1xuICBjb25zdCB0ZXhGdW5jU25pcHBldCA9IHRleE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXhOYW1lLnNsaWNlKDEpO1xuICBjb25zdCBmdW5jTmFtZSA9ICdnZXQnICsgdGV4RnVuY1NuaXBwZXQgKyAnQXRPdXRDb29yZHMnO1xuICBjb25zdCBvdXRUZXhTaGFwZSA9IG91dFNoYXBlSW5mby50ZXhTaGFwZTtcbiAgY29uc3QgaW5UZXhTaGFwZSA9IGlucHV0SW5mby5zaGFwZUluZm8udGV4U2hhcGU7XG4gIGNvbnN0IGluUmFuayA9IGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlLmxlbmd0aDtcbiAgY29uc3Qgb3V0UmFuayA9IG91dFNoYXBlSW5mby5sb2dpY2FsU2hhcGUubGVuZ3RoO1xuXG4gIGlmICghaW5wdXRJbmZvLnNoYXBlSW5mby5pc1VuaWZvcm0gJiYgaW5SYW5rID09PSBvdXRSYW5rICYmXG4gICAgICBpbnB1dEluZm8uc2hhcGVJbmZvLmZsYXRPZmZzZXQgPT0gbnVsbCAmJlxuICAgICAgdXRpbC5hcnJheXNFcXVhbChpblRleFNoYXBlLCBvdXRUZXhTaGFwZSkpIHtcbiAgICByZXR1cm4gYFxuICAgICAgZmxvYXQgJHtmdW5jTmFtZX0oKSB7XG4gICAgICAgIHJldHVybiBzYW1wbGVUZXh0dXJlKCR7dGV4TmFtZX0sIHJlc3VsdFVWKTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGdldENvb3Jkc0RhdGFUeXBlKG91dFJhbmspO1xuICBjb25zdCBicm9hZGNhc3REaW1zID0gZ2V0QnJvYWRjYXN0RGltcyhcbiAgICAgIGlucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlLCBvdXRTaGFwZUluZm8ubG9naWNhbFNoYXBlKTtcbiAgY29uc3QgcmFua0RpZmYgPSBvdXRSYW5rIC0gaW5SYW5rO1xuICBsZXQgY29vcmRzU25pcHBldDogc3RyaW5nO1xuICBjb25zdCBmaWVsZHMgPSBbJ3gnLCAneScsICd6JywgJ3cnLCAndScsICd2J107XG5cbiAgaWYgKGluUmFuayA9PT0gMCkge1xuICAgIGNvb3Jkc1NuaXBwZXQgPSAnJztcbiAgfSBlbHNlIGlmIChvdXRSYW5rIDwgMiAmJiBicm9hZGNhc3REaW1zLmxlbmd0aCA+PSAxKSB7XG4gICAgY29vcmRzU25pcHBldCA9ICdjb29yZHMgPSAwOyc7XG4gIH0gZWxzZSB7XG4gICAgY29vcmRzU25pcHBldCA9XG4gICAgICAgIGJyb2FkY2FzdERpbXMubWFwKGQgPT4gYGNvb3Jkcy4ke2ZpZWxkc1tkICsgcmFua0RpZmZdfSA9IDA7YClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgfVxuICBsZXQgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gJyc7XG4gIGlmIChvdXRSYW5rIDwgMiAmJiBpblJhbmsgPiAwKSB7XG4gICAgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gJ2Nvb3Jkcyc7XG4gIH0gZWxzZSB7XG4gICAgdW5wYWNrZWRDb29yZHNTbmlwcGV0ID0gaW5wdXRJbmZvLnNoYXBlSW5mby5sb2dpY2FsU2hhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgocywgaSkgPT4gYGNvb3Jkcy4ke2ZpZWxkc1tpICsgcmFua0RpZmZdfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgcmV0dXJuIGBcbiAgICBmbG9hdCAke2Z1bmNOYW1lfSgpIHtcbiAgICAgICR7dHlwZX0gY29vcmRzID0gZ2V0T3V0cHV0Q29vcmRzKCk7XG4gICAgICAke2Nvb3Jkc1NuaXBwZXR9XG4gICAgICByZXR1cm4gZ2V0JHt0ZXhGdW5jU25pcHBldH0oJHt1bnBhY2tlZENvb3Jkc1NuaXBwZXR9KTtcbiAgICB9XG4gIGA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb29yZHNEYXRhVHlwZShyYW5rOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAocmFuayA8PSAxKSB7XG4gICAgcmV0dXJuICdpbnQnO1xuICB9IGVsc2UgaWYgKHJhbmsgPT09IDIpIHtcbiAgICByZXR1cm4gJ2l2ZWMyJztcbiAgfSBlbHNlIGlmIChyYW5rID09PSAzKSB7XG4gICAgcmV0dXJuICdpdmVjMyc7XG4gIH0gZWxzZSBpZiAocmFuayA9PT0gNCkge1xuICAgIHJldHVybiAnaXZlYzQnO1xuICB9IGVsc2UgaWYgKHJhbmsgPT09IDUpIHtcbiAgICByZXR1cm4gJ2l2ZWM1JztcbiAgfSBlbHNlIGlmIChyYW5rID09PSA2KSB7XG4gICAgcmV0dXJuICdpdmVjNic7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoYEdQVSBmb3IgcmFuayAke3Jhbmt9IGlzIG5vdCB5ZXQgc3VwcG9ydGVkYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuaWZvcm1JbmZvRnJvbVNoYXBlKFxuICAgIGlzUGFja2VkOiBib29sZWFuLCBzaGFwZTogbnVtYmVyW10sIHRleFNoYXBlOiBudW1iZXJbXSkge1xuICBjb25zdCB7bmV3U2hhcGUsIGtlcHREaW1zfSA9IHV0aWwuc3F1ZWV6ZVNoYXBlKHNoYXBlKTtcbiAgY29uc3QgcmFuayA9IHNoYXBlLmxlbmd0aDtcbiAgY29uc3QgdXNlU3F1ZWV6ZVBhY2tlZFNoYXBlID0gaXNQYWNrZWQgJiYgcmFuayA9PT0gMyAmJiBzaGFwZVswXSA9PT0gMTtcbiAgY29uc3Qgc3F1ZWV6ZVNoYXBlID0gdXNlU3F1ZWV6ZVBhY2tlZFNoYXBlID8gc2hhcGUuc2xpY2UoMSkgOiBuZXdTaGFwZTtcbiAgY29uc3QgdXNlU3F1ZWV6ZVNoYXBlID1cbiAgICAgICghaXNQYWNrZWQgJiYgcmFuayA+IDEgJiYgIXV0aWwuYXJyYXlzRXF1YWwoc2hhcGUsIHRleFNoYXBlKSAmJlxuICAgICAgIG5ld1NoYXBlLmxlbmd0aCA8IHJhbmspIHx8XG4gICAgICB1c2VTcXVlZXplUGFja2VkU2hhcGU7XG4gIGNvbnN0IHVuaWZvcm1TaGFwZSA9IHVzZVNxdWVlemVTaGFwZSA/IHNxdWVlemVTaGFwZSA6IHNoYXBlO1xuICByZXR1cm4ge3VzZVNxdWVlemVTaGFwZSwgdW5pZm9ybVNoYXBlLCBrZXB0RGltc307XG59XG5cbi8qKiBSZXR1cm5zIGEgbmV3IGlucHV0IGluZm8gKGEgY29weSkgdGhhdCBoYXMgYSBzcXVlZXplZCBsb2dpY2FsIHNoYXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNxdWVlemVJbnB1dEluZm8oXG4gICAgaW5JbmZvOiBJbnB1dEluZm8sIHNxdWVlemVkU2hhcGU6IG51bWJlcltdKTogSW5wdXRJbmZvIHtcbiAgLy8gRGVlcCBjb3B5LlxuICBjb25zdCBuZXdJbnB1dEluZm86IElucHV0SW5mbyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5JbmZvKSk7XG4gIG5ld0lucHV0SW5mby5zaGFwZUluZm8ubG9naWNhbFNoYXBlID0gc3F1ZWV6ZWRTaGFwZTtcbiAgcmV0dXJuIG5ld0lucHV0SW5mbztcbn1cblxuZnVuY3Rpb24gZ2V0U3F1ZWV6ZWRQYXJhbXMocGFyYW1zOiBzdHJpbmdbXSwga2VwdERpbXM6IG51bWJlcltdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGtlcHREaW1zLm1hcChkID0+IHBhcmFtc1tkXSkuam9pbignLCAnKTtcbn1cbiJdfQ=="],"names":["getBroadcastDims","backend_util","makeShader","inputsInfo","outputShape","program","prefixSnippets","x","size","util.sizeFromShape","uniformShape","getUniformInfoFromShape","d","inputPrefixSnippet","inputSamplingSnippet","getInputSamplingSnippet","outTexShape","glsl","getGlslDifferences","floatTextureSampleSnippet","getFloatTextureSampleSnippet","outputSamplingSnippet","floatTextureSetOutputSnippet","shaderPrefix","getShaderPrefix","getPackedOutputSamplingSnippet","getFloatTextureSetRGBASnippet","getOutputSamplingSnippet","getFloatTextureSetRSnippet","SHADER_PACKED_PREFIX","getSamplerFromInInfo","inInfo","enableShapeUniforms","shape","getSamplerScalar","getSampler1D","getSampler2D","getSampler3D","getSampler4D","getSampler5D","getSampler6D","getPackedSamplerFromInInfo","getPackedSamplerScalar","getPackedSampler1D","getPackedSampler2D","getPackedSampler3D","getPackedSamplerND","outShapeInfo","usesPackedTextures","res","inShape","outShape","getPackedSamplerAtOutputCoords","getSamplerAtOutputCoords","getOutputScalarCoords","getOutputPacked1DCoords","getOutputPacked2DCoords","getOutputPacked3DCoords","getOutputPackedNDCoords","getOutput1DCoords","getOutput2DCoords","getOutput3DCoords","getOutput4DCoords","getOutput5DCoords","getOutput6DCoords","SAMPLE_1D_SNIPPET","SAMPLE_2D_SNIPPET","SAMPLE_3D_SNIPPET","texShape","packedTexShape","texelsInLogicalRow","texelsInBatch","shader_util.getOutputLogicalCoordinatesFromFlatIndexByUniform","coordsFromIndexSnippet","shader_util.getLogicalCoordinatesFromFlatIndex","texelsInBatchN","batches","coords","b","util.arraysEqual","getFlatOffsetUniformName","texName","inputInfo","funcName","texNumR","texNumC","offset","tNumR","tNumC","getUniformSampler","valuesPerRow","newShape","keptDims","util.squeezeShape","squeezedShape","newInputInfo","squeezeInputInfo","params","getSqueezedParams","stride0","stride1","flatOffset","rank","index","stride2","stride2Str","stride1Str","stride0Str","stride3","stride4","inSize","texFuncSnippet","inRank","outRank","broadcastDims","type","getCoordsDataType","rankDiff","coordsSnippet","fields","unpackedCoordsSnippet","s","i","output","isInputScalar","isOutputScalar","rows","cols","inTexShape","isPacked","useSqueezePackedShape","squeezeShape","useSqueezeShape"],"mappings":"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","x_google_ignoreList":[0]}