@solidtv/renderer 1.3.1 → 1.3.2

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 (69) hide show
  1. package/dist/src/core/CoreNode.d.ts +0 -8
  2. package/dist/src/core/CoreNode.js +7 -14
  3. package/dist/src/core/CoreNode.js.map +1 -1
  4. package/dist/src/core/Stage.d.ts +7 -15
  5. package/dist/src/core/Stage.js +22 -39
  6. package/dist/src/core/Stage.js.map +1 -1
  7. package/dist/src/core/TextureMemoryManager.js +4 -3
  8. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  9. package/dist/src/core/lib/utils.d.ts +0 -1
  10. package/dist/src/core/lib/utils.js +0 -3
  11. package/dist/src/core/lib/utils.js.map +1 -1
  12. package/dist/src/core/platforms/web/WebPlatform.js +1 -0
  13. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  14. package/dist/src/core/renderers/CoreShaderNode.d.ts +16 -0
  15. package/dist/src/core/renderers/CoreShaderNode.js +22 -0
  16. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  17. package/dist/src/core/renderers/canvas/CanvasRenderer.js +23 -3
  18. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  19. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -1
  20. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -1
  21. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  22. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -1
  23. package/dist/src/core/renderers/canvas/CanvasTexture.js +25 -6
  24. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  25. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -1
  26. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -1
  27. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  28. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +1 -0
  29. package/dist/src/core/text-rendering/CanvasTextRenderer.js +23 -0
  30. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  31. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +1 -0
  32. package/dist/src/core/text-rendering/SdfTextRenderer.js +27 -0
  33. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  34. package/dist/src/core/text-rendering/TextRenderer.d.ts +7 -0
  35. package/dist/src/core/textures/ImageTexture.js +11 -0
  36. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  37. package/dist/src/core/textures/SubTexture.d.ts +1 -0
  38. package/dist/src/core/textures/SubTexture.js +12 -0
  39. package/dist/src/core/textures/SubTexture.js.map +1 -1
  40. package/dist/src/core/textures/Texture.js +10 -0
  41. package/dist/src/core/textures/Texture.js.map +1 -1
  42. package/dist/src/main-api/Renderer.d.ts +16 -0
  43. package/dist/src/main-api/Renderer.js +2 -0
  44. package/dist/src/main-api/Renderer.js.map +1 -1
  45. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  46. package/package.json +1 -1
  47. package/src/core/CoreNode.ts +8 -23
  48. package/src/core/Stage.ts +24 -47
  49. package/src/core/TextureMemoryManager.ts +4 -3
  50. package/src/core/lib/utils.ts +0 -4
  51. package/src/core/platforms/web/WebPlatform.outOfMemory.test.ts +1 -0
  52. package/src/core/platforms/web/WebPlatform.ts +1 -0
  53. package/src/core/renderers/CoreShaderNode.test.ts +53 -0
  54. package/src/core/renderers/CoreShaderNode.ts +23 -0
  55. package/src/core/renderers/canvas/CanvasRenderer.test.ts +34 -0
  56. package/src/core/renderers/canvas/CanvasRenderer.ts +33 -4
  57. package/src/core/renderers/canvas/CanvasShaderNode.ts +0 -1
  58. package/src/core/renderers/canvas/CanvasTexture.test.ts +31 -0
  59. package/src/core/renderers/canvas/CanvasTexture.ts +35 -7
  60. package/src/core/renderers/webgl/WebGlShaderNode.ts +0 -1
  61. package/src/core/text-rendering/CanvasTextRenderer.ts +26 -0
  62. package/src/core/text-rendering/SdfTextRenderer.test.ts +133 -0
  63. package/src/core/text-rendering/SdfTextRenderer.ts +30 -0
  64. package/src/core/text-rendering/TextRenderer.ts +7 -0
  65. package/src/core/textures/ImageTexture.ts +18 -0
  66. package/src/core/textures/SubTexture.test.ts +45 -0
  67. package/src/core/textures/SubTexture.ts +13 -0
  68. package/src/core/textures/Texture.ts +12 -0
  69. package/src/main-api/Renderer.ts +19 -0
@@ -1 +1 @@
1
- {"fileNames":["../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/env.d.ts","../src/core/lib/contextspy.ts","../src/utils.ts","../src/common/ianimationcontroller.ts","../src/core/utils.ts","../src/core/animations/animationmanager.ts","../src/core/renderers/coreshadernode.ts","../src/core/renderers/coreshaderprogram.ts","../src/core/coreshadermanager.ts","../src/core/renderers/webgl/internal/webglutils.ts","../src/core/lib/webglcontextwrapper.ts","../src/core/renderers/webgl/internal/shaderutils.ts","../src/core/lib/utils.ts","../src/core/lib/texturecompression.ts","../src/core/lib/texturesvg.ts","../src/core/textures/imagetexture.ts","../src/core/textures/subtexture.ts","../src/common/ieventemitter.ts","../src/common/eventemitter.ts","../src/core/texturememorymanager.ts","../src/core/renderers/corecontexttexture.ts","../src/core/textureerror.ts","../src/core/textures/texture.ts","../src/core/renderers/corerenderer.ts","../src/core/lib/matrix3d.ts","../src/core/coretextnode.ts","../src/core/renderers/corerenderop.ts","../src/core/renderers/webgl/internal/rendererutils.ts","../src/core/renderers/webgl/webglctxtexture.ts","../src/core/renderers/webgl/webglctxsubtexture.ts","../src/core/renderers/webgl/internal/buffercollection.ts","../src/core/renderers/webgl/webglshadernode.ts","../src/core/shaders/webgl/default.ts","../src/core/renderers/webgl/webglshaderprogram.ts","../src/core/textures/rendertexture.ts","../src/core/renderers/webgl/webglctxrendertexture.ts","../src/core/renderers/webgl/webglrenderer.ts","../src/core/renderers/webgl/sdfrenderop.ts","../src/core/text-rendering/textrenderer.ts","../src/core/text-rendering/textlayoutengine.ts","../src/main-api/utils.ts","../src/core/textures/colortexture.ts","../src/core/platforms/web/webplatform.ts","../src/core/animations/coreanimation.ts","../src/main-api/inode.ts","../src/core/lib/colorparser.ts","../src/core/renderers/canvas/canvastexture.ts","../src/core/lib/colorcache.ts","../src/core/renderers/canvas/canvasshadernode.ts","../src/core/renderers/canvas/canvasrenderer.ts","../src/main-api/inspector.ts","../src/main-api/renderer.ts","../src/core/stage.ts","../src/core/platforms/platform.ts","../src/core/lib/validateimagebitmap.ts","../src/core/lib/imageworker.ts","../src/core/textures/noisetexture.ts","../src/core/coretexturemanager.ts","../src/core/lib/rendercoords.ts","../src/core/autosizer.ts","../src/core/lib/collectionutils.ts","../src/core/corenode.ts","../src/common/commontypes.ts","../src/core/shaders/utils.ts","../src/core/shaders/templates/blurtemplate.ts","../src/core/shaders/canvas/blur.ts","../src/core/shaders/templates/bordertemplate.ts","../src/core/shaders/canvas/border.ts","../src/core/shaders/templates/holepunchtemplate.ts","../src/core/shaders/canvas/utils/render.ts","../src/core/shaders/canvas/holepunch.ts","../src/core/shaders/templates/lineargradienttemplate.ts","../src/core/shaders/canvas/lineargradient.ts","../src/core/shaders/templates/radialgradienttemplate.ts","../src/core/shaders/canvas/radialgradient.ts","../src/core/shaders/templates/radialprogresstemplate.ts","../src/core/shaders/canvas/radialprogress.ts","../src/core/shaders/templates/roundedtemplate.ts","../src/core/shaders/canvas/rounded.ts","../src/core/shaders/templates/roundedwithbordertemplate.ts","../src/core/shaders/canvas/roundedwithborder.ts","../src/core/shaders/templates/shadowtemplate.ts","../src/core/shaders/templates/roundedwithborderandshadowtemplate.ts","../src/core/shaders/canvas/shadow.ts","../src/core/shaders/canvas/roundedwithborderandshadow.ts","../src/core/shaders/templates/roundedwithshadowtemplate.ts","../src/core/shaders/canvas/roundedwithshadow.ts","../src/core/shaders/webgl/blur.ts","../src/core/shaders/webgl/border.ts","../src/core/shaders/webgl/holepunch.ts","../src/core/shaders/webgl/lineargradient.ts","../src/core/shaders/webgl/radialgradient.ts","../src/core/shaders/webgl/radialprogress.ts","../src/core/shaders/webgl/rounded.ts","../src/core/shaders/webgl/roundedwithborder.ts","../src/core/shaders/webgl/roundedwithborderandshadow.ts","../src/core/shaders/webgl/roundedwithshadow.ts","../src/core/shaders/webgl/sdfshader.ts","../src/core/shaders/webgl/shadow.ts","../src/core/text-rendering/utils.ts","../src/core/text-rendering/canvasfonthandler.ts","../src/core/text-rendering/canvastextrenderer.ts","../src/core/text-rendering/sdffonthandler.ts","../src/core/text-rendering/sdftextrenderer.ts","../exports/canvas-shaders.ts","../exports/canvas.ts","../exports/index.ts","../exports/inspector.ts","../exports/utils.ts","../exports/webgl-shaders.ts","../exports/webgl.ts"],"fileIdsList":[[107,124,126,129,131,133,135,137,139,142,143,145],[105,107,108,160],[62,63,65,70,74,78,80,81,87,92,95,102,103,109,110,111,116,120,121,125,127,130,132,136,140],[109],[61,63,71,77],[90,91,146,147,148,149,150,151,152,153,154,155,157],[87,90,95,162,168],[80,120],[76],[61,62,63,120],[63,64,120],[71,120],[61,62,64,65,71,77,81,82,83,87,89,95,102,111,116,117,118,119,121],[61,65,66,111],[61,71,81,82,83,97,111,120,121],[74,75,77,80,81,82,93,100,111,112,113,114,115],[120],[104],[81,113],[69,81],[61,71,81],[70],[112],[68,70],[111],[111,112],[75,79,81,82,104,105,106,107,120,121],[65,106,111,120],[61,79,104,121],[78,81],[60,65,66,79,81,111,120],[61,111,120],[69],[61,71,85,87,89,90,95,111,121],[69,71,78,87,93,121],[61,69,75,78,81,87,121],[61,69,71,72,78,79,81,86,121],[61,69,71,75,79,81,82,86,87,88,89,90,91,92,93,94,96,97,120,121],[65,70,71,92,95,111,120],[61,66,69,70,87,89,90,91,95,120],[107,123],[70,71,104,107,125],[70,71,107,127,128],[107,130],[107,132],[107,134],[70,71,107,128,136],[70,71,107,126,128,137,138],[70,71,107,128,139,141,142],[70,71,107,128,137,142,144],[70,107,128,140],[65],[65,70,122],[65,122],[65,122,125,136,140],[65,122,125,136],[65,122,136,140],[61,70],[90,123],[70,90,125],[90],[70,71,90,127],[71,90,95,130],[71,90,95,120,132],[71,90,95,120,134],[70,71,90,120,136],[70,71,90,120,138],[70,71,90,120,141],[70,71,90,120,144],[90,140],[60,61,64,65,67,71,77,78,81,82,83,84,97,98,99,100,101,110,112,116,120,121],[84,97,98,111,120,158],[61,84,97,98,111,158,159],[61,74,80,84,97,98,111,120,158],[61,71,82,84,87,90,95,97,98,111,121,156,158,161],[97],[71,82,84,96,111,121],[61,63,81,111],[81,116],[61,71,72,73,81,112,116],[61,74,81,116],[71,75,77,79,80,116,121],[62,65,84,102,120],[61,62,81,84,102,110,120],[61,65,67,77,78,84,95,97,101,103,108,109,111,112,116,120],[60]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5ba0a094f93834bf1d227ddfb621d45ffe5b37e4dfe0b8518cdb769713f86633","affectsGlobalScope":true,"impliedFormat":99},{"version":"0fb789e71544b33050f556c483b82704450a1f5ed8277c35674891aaaa6a95ef","signature":"826d87ec474ecd59c827441df44d49f420dbe099333c3344e31dfada8cc39902","impliedFormat":99},{"version":"49e958d30eddbc54789eb540bd08c00b6ec4782a488935e8f29218796375fae6","signature":"f881a1a2b219f636190a264c5e6c61c8860b5f4c8a803d76d3729cfd97072d13","impliedFormat":99},{"version":"725cf9cb38ff2000cd2156e28dc06fb265cb6fc79f3a9d83141940b502f0fca6","signature":"fa40725ac8d2fe1f3e11590e2f2bd0ac523256d9f6805bc425c2286c7c93f894","impliedFormat":99},{"version":"0dcf0b8b29a5e0a4f5a592adea458990b22354a1a4c2766d0b024df0aebd71ff","signature":"ee40f42d658eb673fa53ff333ab90b838d3d4397fcf6a4ce49cfba5202f7c4ab","impliedFormat":99},{"version":"eea8be5c1eea68d449669b540be53f89e6cb749871fd8c13f2ae7869e167dbed","signature":"8d84c9cf16816327dc926a3b63fb8eb67ad6b2bb632f524154189b7320c30863","impliedFormat":99},{"version":"6ae1dbd5661f184b6f78a55e139365b2fbee940b12e895fe16b272a850ff3459","signature":"c1a0fd4511bbf56aedef22aba390ce4fffcef26adaec16684eea65a35e408b66","impliedFormat":99},{"version":"26eee6d5475b7bf6ab5b0e8ee2cbefddd6c4d34a6b80ca12ee6511c943c7bb43","signature":"97326a2f5f0fce22509018fe77795cb2313d61f1ef71eff134612c81ec2ac600","impliedFormat":99},{"version":"37a82a1b7644b8436ffc2874bf3d0409421e2a8f75d46c3a4be4efc4e4b6f5db","signature":"6dde36af67f486d0925af4ba0339e7a66b7f71fd36f1a4d928869ccbf4dfdda0","impliedFormat":99},{"version":"c8f5eef1076cae8cad73dd1a8190f82c97d6a1de46e9938c72dcb4b81a5ed39a","signature":"8e859e1af27f614aae3f8d163c831280e842bda6c53f11c60b78deaedcff6d92","impliedFormat":99},{"version":"4390f97af17953beb997b03612d879037f6eb6ca5d07bf936d3eb1d320988335","signature":"f545065826625494d5c4c06f4adb3d185eb09cd9bf2e10b350d8be29e0ad253a","impliedFormat":99},{"version":"484020cbddfda5f115d9b125cfbdfcc78c12d6c29df37619ef061265c12ec452","signature":"180c58440d1372a281aec09fb5ab5c917f3533457b4338a8b3e4c7725fd8b3ec","impliedFormat":99},{"version":"7f60a8144692040141d8ad8b40f3d51a0319a4534418e2c336de5cf3cd9a85d3","signature":"b27c828b11871b674bd5db3bd09361c457ad98622683c1738f9481d6a70206af","impliedFormat":99},{"version":"8c72604442ade45e80db4becc8b15cb6a62279797dba0aa114ab8b830befbf4e","signature":"afcf49d3e0bfb93f7ba0802ac21a8cdee4cb9f08e66aeef6dd7de60e5db2754b","impliedFormat":99},{"version":"83d66848c8099c9fa05d49999db1dc0ee07072bdbd98675055a0ee8e48c61431","signature":"4fe26dc4bac065bdc055fd26f9ab411f282f020052ef557761cd96160810f442","impliedFormat":99},{"version":"8c3788b3cff20b5d8fb3bd347894549ef85e1d533f32c5ceedc190f39ed0a977","signature":"9aa36325cd99649318217f9f9a87ad3cf4951520cfae47869cebc1e7d80820f4","impliedFormat":99},{"version":"43047924269396afc5170868cdb10570c26543a7a06c70f147bbd8f65d3c265f","signature":"178bbaca724c8e19c6e3be26bbacb719daad5c0f3a5e3a2a645bae5b187edc48","impliedFormat":99},{"version":"e73d693dbc420ea2f5525275bf48a1a958c00c14f4d310938c6ff562171084b4","signature":"11f10eef6b087b59bd9e527db506274380a36587a1bff3450e220ad7ec2ce45e","impliedFormat":99},{"version":"3ab55b4335654f11edfac43e7479c2113cec980539ab9f184b95f75a5e516e4c","signature":"4b877099c30f57cee49f5563d6c98ef6aa28f558549d6390ad542b7d7aee6a57","impliedFormat":99},{"version":"a91a68c4bc84852a2e1065796b42e734822f742ede186adc80969f03db866dde","signature":"9b29b1389b6d0736a97e2533c09e6084b696d4a5df83ae1289082c54d9b75f49","impliedFormat":99},{"version":"b1aa12a696499aec7886bad670c0d61ab1bbfb7010f509aad0a33976a43bb7a7","signature":"7fa0036a92ef198a2140758b695b615596e7860cde2f8f50dc8772f1ae23fde0","impliedFormat":99},{"version":"8751c170b7d20979afe81c6848afa318cd65c3d9026a4addb68b5f3271d21844","signature":"5fbb8d7443bd5a5b303f62cef8ce4b65cd729647d59916fb69f202c60db3f562","impliedFormat":99},{"version":"9bd418a3b1f15c943ef303056a6a3b41bb842df1e83d15c37acbd17f08f904b4","signature":"fbc5a1c492e70c7900022a3d16cb26fc667e8d737e73ac8843228d0bd6430d78","impliedFormat":99},{"version":"620c8b4f5c54dace2084670794f6605c1534cefe9483039800c81479cd65c977","signature":"b7cb1a2407bb175fd4d74fcd72dedd16d3c7c9e1b0c5ef6b88e1a65350218d4c","impliedFormat":99},{"version":"619f7047ca3a1ec65a3398cd2d71717f6ecb3a579a46268366854142afad55a5","signature":"5a652125462bca72ea748d3bc73c458a9776fb3ad492674336f6d83df791c42d","impliedFormat":99},{"version":"8c3d3f7bbe1a90ead329bacae504d84d27a5e25ef21d34bfb8d796c62c983e1f","signature":"ed16135617242f809c2200d4c4b18610b4d0d7b7043903373da1f7cb27e394e8","impliedFormat":99},{"version":"03eb47e1e2969c3fc52fa7fdbd5c5841ffc3f7139fffc30d771d2b87e855b2fe","signature":"21248172fdb4c3ce859fa761a360940384895116a845e10fb20812ef4d29431c","impliedFormat":99},{"version":"8aa68ab45644a07f6fe68c029b00e26bd5b5f7e827746bebc732d8e2b1eed9f5","signature":"09c1c14f42b1256cbaf80ca607b054643c379418bd61468f996d16be81823aeb","impliedFormat":99},{"version":"6a05a62105154317ffd4f9deca628c8c3d2bbb7ef34b92c61b994a5929a7a70b","signature":"655c31a1722747d229233819701c97a0d0eb45de1c402d2af099ef6209823228","impliedFormat":99},{"version":"35a18cb45a375acffd7fd9924694a0fe490aff7e0456eaecfd8f06967b9b75a5","signature":"4d678bf8cab921c2d080b75126762897254dcc9424dd4527d9ed232a69258b11","impliedFormat":99},{"version":"412a870bb718eb9415faec7bc11ec73e104ded0dd8bacd66184ac0474dc806e8","signature":"c71fac303272beaa89b727174d0aa688665f420a8fbfdbdabd70d37ff1306ec2","impliedFormat":99},{"version":"2d3f1fc034914539bd2bad14c8f0dd12d4f3e832f52cd23c152d57a44e6666b6","signature":"b820bb0c5f5a8b50f7d5392f0a1f0457b9ec986cc00f3284f5f5bdf5cdb5876f","impliedFormat":99},{"version":"e1c1814eeb96c78e2437e92b81bdf82840424b0a4b22b600fd80c0c4ea936069","signature":"11d90ddf914600d7cdba80dc93576c8e4b9590b42542a4e4db56e36af1c3c341","impliedFormat":99},{"version":"67b5a4da6a79c61edcd3a85fe124d649e01625241aa3afe1fca4ffb5c941d786","signature":"a9b406401e27ed6a749e670f16fc41f52dbf9bc15d8f798d15288292978b113c","impliedFormat":99},{"version":"b63eef02fb6f5bc004aeb338f6cb4fb6648cafcf9841396432738f2f3cfecf07","signature":"8adbddff6d8303fdf5de01602f8c2b9a28efc3bf60530eeba3857aa7f550f655","impliedFormat":99},{"version":"309b37dd89c078c27286180d57ef951f21363d029e475d9f8d6b436e2a31a62e","signature":"babf579da841813feb2c91dcd842f39537eb0371fb903b24eda3cdecba2bf14f","impliedFormat":99},{"version":"c507578a1b316fff21bc0a21930ae009942b209b8961cc8af86c6710df02dd74","signature":"d3ad4b3aae41da585f932381d803a5b2a8098df145f6258082573f4a5bf056fe","impliedFormat":99},{"version":"61fd0c318cdcb7d3c33b1a4ce9672b8265622a5df2ad6c9afdccbc9f4c1c0c0b","signature":"31f1e85b7793907da145a21c1b8a4b197c4e83ca8071c41f866224d5c85a34e1","impliedFormat":99},{"version":"aa94f2208e3f629a8ca43fdec9c93599f1836d4e700ae3ccd86410eaf97aa073","signature":"000ce5f4e14f39fbcbbf39ef99a9eac02954e0e1d67798972d9ca15b5d1bd98b","impliedFormat":99},{"version":"f914faa3b6c2fe1ce1f307a5d780f2021ff2211737e17adc3de047ea242e9e54","signature":"3eaee23f112a80139af770d0a6b7623f33675966ec3dca3cdab74a0ea071064b","impliedFormat":99},{"version":"7f6e6e6104931e7907c74e53d336094350978646d9c02c2a205ffcea90b58e61","signature":"f02942f8ae408270e572fa4c23aca8f42b496b83a836bfc8cec4f559e8ce1125","impliedFormat":99},{"version":"45a3d03cb79677851a1597d31d0936c706cb80d3731b68677012520d555de2e6","signature":"68cfd7feb1396181cc75d8cfbd95ae5e76e2ffee3c99aeb04e4d3175737c7a97","impliedFormat":99},{"version":"0d7b8a9c2a84f62cd9bbba64661f8e976d06caa37a2daac5d791aa57b062a966","signature":"4efda82c758514a08d950cbc7079752d18f74223fd28014d62a9009694c019dd","impliedFormat":99},{"version":"7381e02deaa54cca84fd5829a7abe72b9aea79739cef50d2ef45e7133e46a245","signature":"bdfe37f9178a0c445385afef820471496de4d62381ceab44090e1d2f7cbf9d57","impliedFormat":99},{"version":"d41aef2354b7b9bbbd538909867a16826b1111f88d82b3db7669904d88f01938","signature":"378b818788219a531c09232dc8246ed3d0b70113a75770eb1d2847084edc7eae","impliedFormat":99},{"version":"5e65666e88324e800f5351c15893a29855f637211aca9e1cd3f7cccd372e9370","signature":"566b53d6bd25dd8a6d93ef387b4a0ae8a795c1ea4854298c3a328fc6712aebb5","impliedFormat":99},{"version":"6312d7814c2348514827f1f6b942395cc4a850c951cf9f16225c6629482c85f7","signature":"a3802aaf9d8320c01fa1156886402ae5383f9e49f104c261b1e3203c72c89dbc","impliedFormat":99},{"version":"f309bd228e2982f60f7ed817323e80d1187c1520248ae02059bd93d23eaa1acf","signature":"2885b4f117dd1d518624b16d3993749c17042fe5d799b60a46d9654d45fc1be1","impliedFormat":99},{"version":"210f9a2eb41a6287335c968326b468b84a3e17bfc55d32df581203ec83601a1e","signature":"70dd0bd75de1a7b08011eddfacc2d0f1787ff28e7c588b860af4579a0dbc941f","impliedFormat":99},{"version":"b83a8270b6bbbfa2e7e083f55ddf266dd9ec186202a59bf1b151f05915c7c173","signature":"2db98de1d14bef065e3e3c8d46de848d2afd1b503df129cee35e41ad04ef05d9","impliedFormat":99},{"version":"1385d95114ceab2550ef26b7b997d8e83c05fe2e6df7ca75d42068fbd97b3118","signature":"0ac7bb457ac07cb746a4cd0f9056cd13d06ac92515df7f4d04fdb426c0d04789","impliedFormat":99},{"version":"d072f63f00f7197f4dd55583a0b995f9ad2791c7a66c6bf18d52013dae21fe6c","signature":"97fc8e183db09053617cee9e1aa3613c52e95593ab83d89bcdacdcb93bc82109","impliedFormat":99},{"version":"c8244eda43f79abceb8477803e9b6db5deaa38fd1444ab1c1e65d94a218126d6","signature":"3f8ec2883b15909c5186c120ebc75d02cc1be5dcf8b5fe81d5399981882d688d","impliedFormat":99},{"version":"9fd52944f4d0748affc7601ddcd21af6e8c622d2e2855c9a5ad215ca3e09a7ae","signature":"1bc91777d9c68f9f46697b1859f11ea39e6c51e1eb135336d81289eb25c97623","impliedFormat":99},{"version":"7f4d58b40b9fb2850c7807263b7f76ab025ee11099ce8f193f5ee4a6fbc48023","signature":"9b5e43a8d86d0bd41f3efb075e415d1f239702b02afb90e34abb868d82a0f5d6","impliedFormat":99},{"version":"f8f8cb7ad87c549b0eeb9a74478f7ed75e347aca8db55989162ccba37d6308d6","signature":"bb577b7c883e070fa151937440e054902e74ed58186bd044296f2e1b4be386ce","impliedFormat":99},{"version":"5bc4d797c4c00430b4e7cea2ca1ffa7d8e3223fb526997bb4a3b73b556b344f5","signature":"46d6995fa6153325dae9fcaf8eb7fdc183936a42a3fb851efcda43cc0bf7edef","impliedFormat":99},{"version":"c82e75185b0709ec0b4ba2b1dc62ec92b60c064c457510e2de266f9cea2ef22a","signature":"95e6bad556a8ac48fc21c4587a5d4ab66d736dd1859ca05d5f62cf76558f7a1b","impliedFormat":99},{"version":"1e434b5f963ca54162c007922a664c33c058045e1f8258bc47ca7b10b0df25a3","signature":"9b47d61d6e847112cf7e9f2fb1631d36e81d966b79b46ede120eaf85058f6a97","impliedFormat":99},{"version":"d3601402d82e419617b77fb8364e5192eb7f1d685288f09ff39d63cde4c9e51c","signature":"3ea67cb40367de619dc4addce96f4d5e80160ea305c6afe526d44a1b7988a3ea","impliedFormat":99},{"version":"6dd145cdae9cca3d1dd9c077f79bf64f486a5d6dd851a80b53a638c3ed0353fb","signature":"bd205ae001b9e85aad4aeb1755b24591dc12372fe660fe31ee315074062eea0d","impliedFormat":99},{"version":"c1322f87621775e300aa72037d45c58105bc1a8cbe1198be0e5f463864499241","signature":"0c09a9bd6f678b6a20bfa0281004aa3b7d01a962f98394047698acdbdb5b17c4","impliedFormat":99},{"version":"dac0403c3ff87860d7b130e4d46797b3a14b8491a2d483cdd3939b36a465c71c","signature":"b76a00a0d000ba2ad5b9ecaf389922e8135c8087180aa769fd517bd404ad5459","impliedFormat":99},{"version":"ef58c75d40fb4394e68971549eb3351058cb0b275db2738ae67df13ffc150cc8","signature":"6b38678a012f8055e5f0a8aa9c1ca13d8a6d60110541d60e244a132b31f1fec2","impliedFormat":99},{"version":"387288e860f965c2862d17c155ad361b1c2ceaff5f97761d179262336b88580d","signature":"872937c6cd92ad2ca1548878c5c2325dc0ba3339a93a31ed1947884908dd8aa8","impliedFormat":99},{"version":"f47ba4df2de5c263e2a7c95464685602b0db64ad88bc1f62a477dc98311f88ab","signature":"98a1f2a3ec600dc06f82c4fe120b7d2ef6aa8ec258b1c4fb77e44a913cc6e233","impliedFormat":99},{"version":"4c92257cc7c9b722720be143ed2b5b8387267854c67017372b09e2bcbbea6063","signature":"c0e70bcea10f408ecc8833d2aa2c3af825d13e470d74990ba538d0a81cf56a7b","impliedFormat":99},{"version":"c3c7389b117ec2f370d63fd673a8fc379b335b73666ea9c481848043d27e85d3","signature":"47e1b725b6d55b6284e63568e9074f195005f8b79e066b28449663aef9aed95c","impliedFormat":99},{"version":"3c0e1904a08a9f573980fc9cabc22e76657990ee395bac9a6bb50a6c102e52bd","signature":"42e936ecc3b9b7ad5a489eeaea7c25af8d7b71162a08e00ad638648e87a7ee51","impliedFormat":99},{"version":"77099443b054b22cb41374e020cf0ec8bbc3b077c25d5afb2d73e2207c661b80","signature":"e6f972dc162ead1d86897a3488316aab8b034472695d40eac74b6557e184919d","impliedFormat":99},{"version":"ea4c2e9deca942ae568c64e85d74cd5eb67c40b827956fd9a82e81d70e70585c","signature":"d91415fa00b3eef01ae2e08e8ffaf7cef9fa568515c83ac1474a22cc55bb3718","impliedFormat":99},{"version":"137618331aa4f4dd38c93e26a20b43dc8dc25a95485cdfd496f1a104b1b07c3b","signature":"912202a19d5e8972357af639e5e65d06c9171e30d4bf077fcdfe184c30effc7c","impliedFormat":99},{"version":"aa7446683810dffa2f3379a2e3a4ad3bcdc59d8da258ceac844ad6b68d3b418a","signature":"16ea4109bf543dd521c2e9cd4ff0f8c498250ce26f6fe55739e077e0761c8807","impliedFormat":99},{"version":"8130e89488ac70797bd1737f59ab9d4ca43805a6886ec3e600eb29cfd681c96e","signature":"9ab0406e79c8ae7a4f552c6609b8ce436242d74abbeebd1f4303a63c53ccb56a","impliedFormat":99},{"version":"0d2f8deb225e2cb7c3a818ff1a6e2aaaaf2104a0af8104d8c3e112cb9856f3ae","signature":"76fdce1e19f5cf3a2243a37f1778f534dc527e73c25100a14d63994c2f0b8760","impliedFormat":99},{"version":"df3b85e40aa11deae5e4e9094927c0ddc7a768c10f8d2e4f793558d7c832337c","signature":"dca314f637b4d88b884e8a6d76fb82cbf2b896e28f69feae8da56046045cf278","impliedFormat":99},{"version":"484cf35592b2c8be3608d937a5238c1fef88315cedc853cc817c1333ad316e35","signature":"e7181fa8e23ed61baefe346d52c8e0eaa94ab0c495c50933f3d0b1de1f949230","impliedFormat":99},{"version":"79604b209f32f23345daab19964a53d8dc9488d1ed7e23bad0ff08fc2c772da8","signature":"4dcaec244d4486f21fa7800fd6853c914df66154d4ca6b7cf0aa0370c5e6a656","impliedFormat":99},{"version":"019abfb86e2f8f44b9f78ebe1ada8748f2bf578caaf9536475531cf4eb4bde62","signature":"5111e2e2ffb1264243951a0c15fa3498e2c0c23e74599f535ad2227a16d8c503","impliedFormat":99},{"version":"8a6aecc7b7cd01b03424ea5e4755f8abceb433c7cac3c4cc74aea2df676ca32a","signature":"2c6c2e2996661a1558d5ce4040ec63a12913ea0c52fd071adc079fb1f3fc125c","impliedFormat":99},{"version":"3e87e6d2e51b392e59034bf46547bd13ffbf54301ccf98cada6692eec7261860","signature":"b6c5cb675d41673f3d27982b79d6b96033d9f0976ff9c62a49b4d61bbfc71b1f","impliedFormat":99},{"version":"950cb741daec5e63de1500aa3db70f9879fa16164fbb8cbc100437a258643f84","signature":"db5ff6f8ae2b0a4ff8cb16b43646b5561304b219fcc10ab1c470965743fe7662","impliedFormat":99},{"version":"f6ce18c4659b7e933d0e0289ee01d20eabc88543587ba71e3ee59ea2560e8294","signature":"e4bf9388266333a7b08b77dfc53f0bd5cc25da0e148c7a896aaac443c6becb47","impliedFormat":99},{"version":"d316f795ecc284e4a91622cd71635ba3964cd3ee5fa4bcca828173767520113e","signature":"986c6fa0b20de6185466d165274d7896f8734b92302b70ffccf4614be069db61","impliedFormat":99},{"version":"c5da010a38dec8e8569cf895d9dfaf1432e1d29d7f9f73644eb01f33f097e89d","signature":"02fad959da0f7217696defb6dead5557228c3ef9791e4cbb28164d4bea2a8245","impliedFormat":99},{"version":"85f4bc1f1eea3a08f8abc20c7dc41671a8c4ba35860c9e948ef7ca39eff18dc2","signature":"43065306646acc1b02890238154e075cb4e2a6cbc73e213e1f56fcc6ad568d37","impliedFormat":99},{"version":"3f24a1b9dce9699930f668b87e564ff8fbdd5742fffee6dc35e5e6e6a7c3af78","signature":"ccd53c52eddd8eaa19baaf4ac4224f18b3c9ee90cbdb62001f1477e59c5006be","impliedFormat":99},{"version":"7a55412506f0f9dc36fb71e3cc6e6781526deb1a759038ff8fd08c45d99326f4","signature":"e83ecc19d67e55848641650aa73755b88b0085d526fefdace51ddb11da8a4e92","impliedFormat":99},{"version":"6620bc01f2502a0cc57ab81250183715cff09aa568e747c62ed05911b1cdeb17","signature":"fc4560cb792ceead9e3fea2f6af6cfc1f6c3ae85091f1857c7d268a11c01b948","impliedFormat":99},{"version":"cef86916072eb96932fc00f390dde6c6bd57243adf5b936946adb7ab3b88c7d6","signature":"e7f707dc443bc70c46576168b519c3ba5479373575af4399855ca8b0b3013a02","impliedFormat":99},{"version":"2de3c458fe2feecfaf56cb658616504d7484f0cdfdcb150c45d7cce4172b05b4","signature":"8b97d49f33fb21b2b6616c0600cb2e3968deede70049dd50e38e7d5e60258e48","impliedFormat":99},{"version":"729ae253baca9b66f161e5d741763d835c190717a18714a4cc10033be270e566","signature":"a61270eb38bce478ba85ad3126a149e7d178fdfc02d91d901ec450ca2a08a3c9","impliedFormat":99},{"version":"4e0c892416db776abe7394b8d8c870bd9a0130712e6939e7bb97ff1dfa68f5f1","signature":"5be8d9fadb8846ec9529a9a0839940b7ed8667d9473d37fcaddf5a5407046bb8","impliedFormat":99},{"version":"1029ff8709b714292e9e06f2c7a61ef03249cd622dc0a14b9ef090eb4f5440e3","signature":"b02e020e0ad1378e97a9e1d26795695ac5527087e5c174e8aea70ec0d00192e9","impliedFormat":99},{"version":"784a7c50aee5402707d9acaccc422eb7fdc49d099e4b9eef79985a8cda49c11f","signature":"b34ecdba664a2ec3b8dbf9e941b6dbe316902ba0e406a7c31299e7eb959fb7e9","impliedFormat":99},{"version":"f022ac45c7b49f346c7a4aec7035380a6c20e864c3a3c9b093a0749214fdd972","signature":"66fc58d212375c49354827feb93cf399644bddf49c6d5aa7cd716cd81cf5b691","impliedFormat":99},{"version":"e0b193eaf469545abda1cf3ca86cb25992513dfff1c993b4032f1c80e4848427","signature":"0c184d4bfd1585aefffd168cf5f09cd420bebc653e912e418c24cab332f186e3","impliedFormat":99},{"version":"582dc809d8b93a8fc16c77e1ffc53850f3f84b40f8cb2a3cdf1996f79f1b3088","signature":"5ba57c948c9666d17638efae14ac47877ede75629fe17a412e5d6d1a4c505fd1","impliedFormat":99},{"version":"355bafe303bae845767ef24a37f7b2c711c250c7448895c0c938875f7f9c2032","signature":"5cf4cc52274a28bd8ab9406ed3e98fa53551f4b4cf1a34bd65b78b5e1439414f","impliedFormat":99},{"version":"b9108c4d92c7ffe8546ebd753ef6901b2abd197367e64f6826c3897ac541c3ae","signature":"48706ca10c8d5d293d1546c75598d177ec2e218aadc913c0c0e22d140788e167","impliedFormat":99},{"version":"6037175802f6e7c6b202d884a482efcfa807b3892fff2e474b9724db9d40785c","signature":"9ea3d311a1dd736d63c38632d4a4af2019f41fcec61243ebf8e9f5a9ffaf2cbe","impliedFormat":99},{"version":"18633262d83bb15d3358612f8e1d462d7a20e4a2a7dff5f7b338e60050334a51","signature":"d0834cf9a78b1f400b3ccec7478bb74b8eb31957c6a9da0dfd945a28e00f89a0","impliedFormat":99},{"version":"ea80f681fb9d0ff6988eb827a0a958503dc03fa73fe2bcfbea7770228dcd1eab","signature":"2b82423c06b300d8612dffe4c1c8b8a0e11c4f1459d69798fe14479617c28afe","impliedFormat":99},{"version":"42fb6a9cfd536d31b7dbfb0d633aa8361027766b84ac0617fcf0b58172fbb0b0","signature":"362677ee9197e53169019163a877690167e5750b2f693f13ec4d0bf95ce7afc4","impliedFormat":99},{"version":"eb8ae88b6da33af8ee9b9497c3e01d2ff5679b60f68972a4101abb0e795aa138","signature":"43ea4830a704b847b6a91de852d511b6d6606d4a21f7baac811abeb0f13428d7","impliedFormat":99},{"version":"96dba49c7ca675ef31b5e4fbfb040472e1399e7579756cbe75bc467fd818b725","signature":"a34189c39e64e75e77d978d1c1705f53c585e7598705ffb45487f46c26b2cae1","impliedFormat":99},{"version":"d7e5fa867a59ea2dd844ac46134b6200bec7be5bf9caa24ad818a8c1cb9960c6","signature":"c92b068c8e0d743f3e2a7508f27874062fa902ca054369176acbc9502015e4bf","impliedFormat":99},{"version":"7ab5ea0a0fee1f29e1fac8686e28f007d043ba95d7e3b632f8cc7301c37e6811","signature":"db959774546bdddc7101c53894e3138cd245b33175f7c9377f9343eec1a8d680","impliedFormat":99},{"version":"c27b65f34815f9448a64c605dd63f6e03af85ccb2ad4bdcd0cf5332b645c9705","signature":"8c826192b6757cbc3ffc140a36dc8ada7957796bd2242467287ae231450b4f99","impliedFormat":99},{"version":"4ace5a8e6261759a5cbd617cae0cbd88c0c5193bb5345673b0a5a48dcf51f640","signature":"32a2e5d5fbfd8d6d2851fc644c4f1051c2ab5f068adb276e8cdc1fb67774fe5f","impliedFormat":99},{"version":"eb54d8688792ecc441056d4150a5da1dba8815050829d8cf74d08d50aa40b8a9","signature":"10c7bdc6518b5f312287ce56e2ad08318c9c6a205f70fc51138764c9f0579ccd","impliedFormat":99}],"root":[[59,169]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"experimentalDecorators":true,"module":100,"noImplicitAny":false,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[163,1],[164,2],[165,3],[166,4],[167,5],[168,6],[169,7],[121,8],[77,9],[64,10],[102,11],[118,12],[120,13],[67,14],[84,15],[116,16],[119,17],[106,18],[114,19],[72,20],[73,21],[71,22],[113,23],[69,24],[112,25],[101,26],[108,27],[107,28],[105,29],[79,30],[82,31],[65,32],[89,22],[86,33],[70,33],[96,34],[94,35],[88,36],[87,37],[95,38],[90,39],[92,40],[124,41],[126,42],[129,43],[131,44],[133,45],[135,46],[137,47],[139,48],[143,49],[145,50],[142,51],[128,22],[123,52],[125,53],[127,54],[130,52],[132,52],[134,52],[136,53],[141,55],[138,56],[144,57],[140,54],[122,58],[146,59],[147,60],[91,61],[148,62],[149,63],[150,64],[151,65],[152,66],[153,67],[154,68],[155,69],[156,61],[157,70],[111,71],[159,72],[160,73],[161,74],[162,75],[98,76],[97,77],[78,78],[100,79],[74,80],[115,79],[93,79],[75,81],[81,82],[103,83],[109,84],[110,85],[99,17],[61,86]],"latestChangedDtsFile":"./src/core/renderers/canvas/CanvasRenderer.d.ts","version":"5.9.2"}
1
+ {"fileNames":["../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/env.d.ts","../src/core/lib/contextspy.ts","../src/utils.ts","../src/common/ianimationcontroller.ts","../src/core/utils.ts","../src/core/animations/animationmanager.ts","../src/core/renderers/coreshadernode.ts","../src/core/renderers/coreshaderprogram.ts","../src/core/coreshadermanager.ts","../src/core/renderers/webgl/internal/webglutils.ts","../src/core/lib/webglcontextwrapper.ts","../src/core/renderers/webgl/internal/shaderutils.ts","../src/core/lib/utils.ts","../src/core/lib/texturecompression.ts","../src/core/lib/texturesvg.ts","../src/core/textures/imagetexture.ts","../src/core/textures/subtexture.ts","../src/common/ieventemitter.ts","../src/common/eventemitter.ts","../src/core/texturememorymanager.ts","../src/core/renderers/corecontexttexture.ts","../src/core/textureerror.ts","../src/core/textures/texture.ts","../src/core/renderers/corerenderer.ts","../src/core/lib/matrix3d.ts","../src/core/coretextnode.ts","../src/core/renderers/corerenderop.ts","../src/core/renderers/webgl/internal/rendererutils.ts","../src/core/renderers/webgl/webglctxtexture.ts","../src/core/renderers/webgl/webglctxsubtexture.ts","../src/core/renderers/webgl/internal/buffercollection.ts","../src/core/renderers/webgl/webglshadernode.ts","../src/core/shaders/webgl/default.ts","../src/core/renderers/webgl/webglshaderprogram.ts","../src/core/textures/rendertexture.ts","../src/core/renderers/webgl/webglctxrendertexture.ts","../src/core/renderers/webgl/webglrenderer.ts","../src/core/renderers/webgl/sdfrenderop.ts","../src/core/text-rendering/textrenderer.ts","../src/core/text-rendering/textlayoutengine.ts","../src/main-api/utils.ts","../src/core/textures/colortexture.ts","../src/core/platforms/web/webplatform.ts","../src/core/animations/coreanimation.ts","../src/main-api/inode.ts","../src/core/lib/colorparser.ts","../src/core/renderers/canvas/canvastexture.ts","../src/core/lib/colorcache.ts","../src/core/renderers/canvas/canvasshadernode.ts","../src/core/renderers/canvas/canvasrenderer.ts","../src/main-api/inspector.ts","../src/main-api/renderer.ts","../src/core/stage.ts","../src/core/platforms/platform.ts","../src/core/lib/validateimagebitmap.ts","../src/core/lib/imageworker.ts","../src/core/textures/noisetexture.ts","../src/core/coretexturemanager.ts","../src/core/lib/rendercoords.ts","../src/core/autosizer.ts","../src/core/lib/collectionutils.ts","../src/core/corenode.ts","../src/common/commontypes.ts","../src/core/shaders/utils.ts","../src/core/shaders/templates/blurtemplate.ts","../src/core/shaders/canvas/blur.ts","../src/core/shaders/templates/bordertemplate.ts","../src/core/shaders/canvas/border.ts","../src/core/shaders/templates/holepunchtemplate.ts","../src/core/shaders/canvas/utils/render.ts","../src/core/shaders/canvas/holepunch.ts","../src/core/shaders/templates/lineargradienttemplate.ts","../src/core/shaders/canvas/lineargradient.ts","../src/core/shaders/templates/radialgradienttemplate.ts","../src/core/shaders/canvas/radialgradient.ts","../src/core/shaders/templates/radialprogresstemplate.ts","../src/core/shaders/canvas/radialprogress.ts","../src/core/shaders/templates/roundedtemplate.ts","../src/core/shaders/canvas/rounded.ts","../src/core/shaders/templates/roundedwithbordertemplate.ts","../src/core/shaders/canvas/roundedwithborder.ts","../src/core/shaders/templates/shadowtemplate.ts","../src/core/shaders/templates/roundedwithborderandshadowtemplate.ts","../src/core/shaders/canvas/shadow.ts","../src/core/shaders/canvas/roundedwithborderandshadow.ts","../src/core/shaders/templates/roundedwithshadowtemplate.ts","../src/core/shaders/canvas/roundedwithshadow.ts","../src/core/shaders/webgl/blur.ts","../src/core/shaders/webgl/border.ts","../src/core/shaders/webgl/holepunch.ts","../src/core/shaders/webgl/lineargradient.ts","../src/core/shaders/webgl/radialgradient.ts","../src/core/shaders/webgl/radialprogress.ts","../src/core/shaders/webgl/rounded.ts","../src/core/shaders/webgl/roundedwithborder.ts","../src/core/shaders/webgl/roundedwithborderandshadow.ts","../src/core/shaders/webgl/roundedwithshadow.ts","../src/core/shaders/webgl/sdfshader.ts","../src/core/shaders/webgl/shadow.ts","../src/core/text-rendering/utils.ts","../src/core/text-rendering/canvasfonthandler.ts","../src/core/text-rendering/canvastextrenderer.ts","../src/core/text-rendering/sdffonthandler.ts","../src/core/text-rendering/sdftextrenderer.ts","../exports/canvas-shaders.ts","../exports/canvas.ts","../exports/index.ts","../exports/inspector.ts","../exports/utils.ts","../exports/webgl-shaders.ts","../exports/webgl.ts"],"fileIdsList":[[107,124,126,129,131,133,135,137,139,142,143,145],[105,107,108,160],[62,63,65,70,74,78,80,81,87,92,95,102,103,109,110,111,116,120,121,125,127,130,132,136,140],[109],[61,63,71,77],[90,91,146,147,148,149,150,151,152,153,154,155,157],[87,90,95,162,168],[80,120],[76],[61,62,63,120],[63,64,120],[71,120],[61,62,64,65,71,77,81,82,83,87,89,95,102,111,116,117,118,119,121],[61,65,66,111],[61,71,81,82,83,97,111,120,121],[74,75,77,80,81,82,93,100,111,112,113,114,115],[120],[104],[81,113],[69,81],[61,71,81],[70],[112],[68,70],[111],[111,112],[75,79,81,82,104,105,106,107,120,121],[65,106,111,120],[61,79,81,104,121],[78,81],[60,65,66,79,81,111,120],[61,111,120],[69],[61,71,85,87,89,90,95,111,121],[69,71,78,87,93,121],[61,69,75,78,81,87,121],[61,69,71,72,78,79,81,86,121],[61,69,71,75,79,81,82,86,87,88,89,90,91,92,93,94,96,97,120,121],[65,70,71,92,95,111,120],[61,66,69,70,87,89,90,91,95,120],[107,123],[70,71,104,107,125],[70,71,107,127,128],[107,130],[107,132],[107,134],[70,71,107,128,136],[70,71,107,126,128,137,138],[70,71,107,128,139,141,142],[70,71,107,128,137,142,144],[70,107,128,140],[65],[65,70,122],[65,122],[65,122,125,136,140],[65,122,125,136],[65,122,136,140],[61,70],[90,123],[70,90,125],[90],[70,71,90,127],[71,90,95,130],[71,90,95,120,132],[71,90,95,120,134],[70,71,90,120,136],[70,71,90,120,138],[70,71,90,120,141],[70,71,90,120,144],[90,140],[60,61,64,65,67,71,77,78,81,82,83,84,97,98,99,100,101,110,112,116,120,121],[84,97,98,111,120,158],[61,84,97,98,111,158,159],[61,74,80,84,97,98,111,120,158],[61,71,82,84,87,90,95,97,98,111,121,156,158,161],[97],[71,82,84,96,111,121],[61,63,81,111],[81,116],[61,71,72,73,81,112,116],[61,74,81,116],[71,75,77,79,80,116,121],[62,65,84,102,120],[61,62,81,84,102,110,120],[61,65,67,77,78,84,95,97,101,103,108,109,111,112,116,120],[60]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"5ba0a094f93834bf1d227ddfb621d45ffe5b37e4dfe0b8518cdb769713f86633","affectsGlobalScope":true,"impliedFormat":99},{"version":"0fb789e71544b33050f556c483b82704450a1f5ed8277c35674891aaaa6a95ef","signature":"826d87ec474ecd59c827441df44d49f420dbe099333c3344e31dfada8cc39902","impliedFormat":99},{"version":"49e958d30eddbc54789eb540bd08c00b6ec4782a488935e8f29218796375fae6","signature":"f881a1a2b219f636190a264c5e6c61c8860b5f4c8a803d76d3729cfd97072d13","impliedFormat":99},{"version":"725cf9cb38ff2000cd2156e28dc06fb265cb6fc79f3a9d83141940b502f0fca6","signature":"fa40725ac8d2fe1f3e11590e2f2bd0ac523256d9f6805bc425c2286c7c93f894","impliedFormat":99},{"version":"0dcf0b8b29a5e0a4f5a592adea458990b22354a1a4c2766d0b024df0aebd71ff","signature":"ee40f42d658eb673fa53ff333ab90b838d3d4397fcf6a4ce49cfba5202f7c4ab","impliedFormat":99},{"version":"eea8be5c1eea68d449669b540be53f89e6cb749871fd8c13f2ae7869e167dbed","signature":"8d84c9cf16816327dc926a3b63fb8eb67ad6b2bb632f524154189b7320c30863","impliedFormat":99},{"version":"26fbcaad253a32731dbd9defa3203585dd37484b79e0588406dfe4466fad2520","signature":"82bf95c1d5594c8bccf0ae18f7c16116df3534239a00284ddf96759da3602812","impliedFormat":99},{"version":"26eee6d5475b7bf6ab5b0e8ee2cbefddd6c4d34a6b80ca12ee6511c943c7bb43","signature":"97326a2f5f0fce22509018fe77795cb2313d61f1ef71eff134612c81ec2ac600","impliedFormat":99},{"version":"37a82a1b7644b8436ffc2874bf3d0409421e2a8f75d46c3a4be4efc4e4b6f5db","signature":"6dde36af67f486d0925af4ba0339e7a66b7f71fd36f1a4d928869ccbf4dfdda0","impliedFormat":99},{"version":"c8f5eef1076cae8cad73dd1a8190f82c97d6a1de46e9938c72dcb4b81a5ed39a","signature":"8e859e1af27f614aae3f8d163c831280e842bda6c53f11c60b78deaedcff6d92","impliedFormat":99},{"version":"4390f97af17953beb997b03612d879037f6eb6ca5d07bf936d3eb1d320988335","signature":"f545065826625494d5c4c06f4adb3d185eb09cd9bf2e10b350d8be29e0ad253a","impliedFormat":99},{"version":"484020cbddfda5f115d9b125cfbdfcc78c12d6c29df37619ef061265c12ec452","signature":"180c58440d1372a281aec09fb5ab5c917f3533457b4338a8b3e4c7725fd8b3ec","impliedFormat":99},{"version":"93478a22db5f8686e1c0c656798ed2409baab75dd1ccfffad0b29d1af36fbaf8","signature":"384cb58c372f77df67101837debb690eb5a3fa21e7867db2a5e9cfa428189a6e","impliedFormat":99},{"version":"8c72604442ade45e80db4becc8b15cb6a62279797dba0aa114ab8b830befbf4e","signature":"afcf49d3e0bfb93f7ba0802ac21a8cdee4cb9f08e66aeef6dd7de60e5db2754b","impliedFormat":99},{"version":"83d66848c8099c9fa05d49999db1dc0ee07072bdbd98675055a0ee8e48c61431","signature":"4fe26dc4bac065bdc055fd26f9ab411f282f020052ef557761cd96160810f442","impliedFormat":99},{"version":"535fff50a9073b90d6621c049584b95365bcab98d3b3a353c17b0e780a236222","signature":"9aa36325cd99649318217f9f9a87ad3cf4951520cfae47869cebc1e7d80820f4","impliedFormat":99},{"version":"753478ce7a42b669b1ce008cab957c3ee69bea88a09e9cfed0ee9557c70f82b7","signature":"046cf1637a30f54c247748ec08c64cedaa5b498a109268514922f2e86234002d","impliedFormat":99},{"version":"e73d693dbc420ea2f5525275bf48a1a958c00c14f4d310938c6ff562171084b4","signature":"11f10eef6b087b59bd9e527db506274380a36587a1bff3450e220ad7ec2ce45e","impliedFormat":99},{"version":"3ab55b4335654f11edfac43e7479c2113cec980539ab9f184b95f75a5e516e4c","signature":"4b877099c30f57cee49f5563d6c98ef6aa28f558549d6390ad542b7d7aee6a57","impliedFormat":99},{"version":"b3be2d2fe7ad00a18762420a9238d0740a6d11527b7fe2b837420dc4a4223d5f","signature":"9b29b1389b6d0736a97e2533c09e6084b696d4a5df83ae1289082c54d9b75f49","impliedFormat":99},{"version":"b1aa12a696499aec7886bad670c0d61ab1bbfb7010f509aad0a33976a43bb7a7","signature":"7fa0036a92ef198a2140758b695b615596e7860cde2f8f50dc8772f1ae23fde0","impliedFormat":99},{"version":"8751c170b7d20979afe81c6848afa318cd65c3d9026a4addb68b5f3271d21844","signature":"5fbb8d7443bd5a5b303f62cef8ce4b65cd729647d59916fb69f202c60db3f562","impliedFormat":99},{"version":"73a72274dd404908b200530c744bdd461a3ec8dbf0cb13a67d1638157dbb8ba3","signature":"fbc5a1c492e70c7900022a3d16cb26fc667e8d737e73ac8843228d0bd6430d78","impliedFormat":99},{"version":"620c8b4f5c54dace2084670794f6605c1534cefe9483039800c81479cd65c977","signature":"b7cb1a2407bb175fd4d74fcd72dedd16d3c7c9e1b0c5ef6b88e1a65350218d4c","impliedFormat":99},{"version":"619f7047ca3a1ec65a3398cd2d71717f6ecb3a579a46268366854142afad55a5","signature":"5a652125462bca72ea748d3bc73c458a9776fb3ad492674336f6d83df791c42d","impliedFormat":99},{"version":"8c3d3f7bbe1a90ead329bacae504d84d27a5e25ef21d34bfb8d796c62c983e1f","signature":"ed16135617242f809c2200d4c4b18610b4d0d7b7043903373da1f7cb27e394e8","impliedFormat":99},{"version":"03eb47e1e2969c3fc52fa7fdbd5c5841ffc3f7139fffc30d771d2b87e855b2fe","signature":"21248172fdb4c3ce859fa761a360940384895116a845e10fb20812ef4d29431c","impliedFormat":99},{"version":"8aa68ab45644a07f6fe68c029b00e26bd5b5f7e827746bebc732d8e2b1eed9f5","signature":"09c1c14f42b1256cbaf80ca607b054643c379418bd61468f996d16be81823aeb","impliedFormat":99},{"version":"6a05a62105154317ffd4f9deca628c8c3d2bbb7ef34b92c61b994a5929a7a70b","signature":"655c31a1722747d229233819701c97a0d0eb45de1c402d2af099ef6209823228","impliedFormat":99},{"version":"35a18cb45a375acffd7fd9924694a0fe490aff7e0456eaecfd8f06967b9b75a5","signature":"4d678bf8cab921c2d080b75126762897254dcc9424dd4527d9ed232a69258b11","impliedFormat":99},{"version":"412a870bb718eb9415faec7bc11ec73e104ded0dd8bacd66184ac0474dc806e8","signature":"c71fac303272beaa89b727174d0aa688665f420a8fbfdbdabd70d37ff1306ec2","impliedFormat":99},{"version":"85f9c17c3720e81f98c50cd31f7b0a348201279fa10c655bfe19da0442ab04b2","signature":"a3a221f48ce7a7cd8c72adce7a77c45d1d940f8416bb7717fac2a37238c09ac4","impliedFormat":99},{"version":"e1c1814eeb96c78e2437e92b81bdf82840424b0a4b22b600fd80c0c4ea936069","signature":"11d90ddf914600d7cdba80dc93576c8e4b9590b42542a4e4db56e36af1c3c341","impliedFormat":99},{"version":"67b5a4da6a79c61edcd3a85fe124d649e01625241aa3afe1fca4ffb5c941d786","signature":"a9b406401e27ed6a749e670f16fc41f52dbf9bc15d8f798d15288292978b113c","impliedFormat":99},{"version":"b63eef02fb6f5bc004aeb338f6cb4fb6648cafcf9841396432738f2f3cfecf07","signature":"8adbddff6d8303fdf5de01602f8c2b9a28efc3bf60530eeba3857aa7f550f655","impliedFormat":99},{"version":"309b37dd89c078c27286180d57ef951f21363d029e475d9f8d6b436e2a31a62e","signature":"babf579da841813feb2c91dcd842f39537eb0371fb903b24eda3cdecba2bf14f","impliedFormat":99},{"version":"c507578a1b316fff21bc0a21930ae009942b209b8961cc8af86c6710df02dd74","signature":"d3ad4b3aae41da585f932381d803a5b2a8098df145f6258082573f4a5bf056fe","impliedFormat":99},{"version":"61fd0c318cdcb7d3c33b1a4ce9672b8265622a5df2ad6c9afdccbc9f4c1c0c0b","signature":"31f1e85b7793907da145a21c1b8a4b197c4e83ca8071c41f866224d5c85a34e1","impliedFormat":99},{"version":"003be571d161b8bc4c474957fe0f09c4ec4c77255c77ab2af98c4c495d93199b","signature":"f78532785f33990fdabbc5ac58bc8fe7ae54f3108779c9f180da82622d225007","impliedFormat":99},{"version":"f914faa3b6c2fe1ce1f307a5d780f2021ff2211737e17adc3de047ea242e9e54","signature":"3eaee23f112a80139af770d0a6b7623f33675966ec3dca3cdab74a0ea071064b","impliedFormat":99},{"version":"7f6e6e6104931e7907c74e53d336094350978646d9c02c2a205ffcea90b58e61","signature":"f02942f8ae408270e572fa4c23aca8f42b496b83a836bfc8cec4f559e8ce1125","impliedFormat":99},{"version":"45a3d03cb79677851a1597d31d0936c706cb80d3731b68677012520d555de2e6","signature":"68cfd7feb1396181cc75d8cfbd95ae5e76e2ffee3c99aeb04e4d3175737c7a97","impliedFormat":99},{"version":"f2dcc3dae29c6d5d8512491a46505324a77f4a2ecb6d9abbabfda54c189e08f1","signature":"4efda82c758514a08d950cbc7079752d18f74223fd28014d62a9009694c019dd","impliedFormat":99},{"version":"7381e02deaa54cca84fd5829a7abe72b9aea79739cef50d2ef45e7133e46a245","signature":"bdfe37f9178a0c445385afef820471496de4d62381ceab44090e1d2f7cbf9d57","impliedFormat":99},{"version":"d41aef2354b7b9bbbd538909867a16826b1111f88d82b3db7669904d88f01938","signature":"378b818788219a531c09232dc8246ed3d0b70113a75770eb1d2847084edc7eae","impliedFormat":99},{"version":"5e65666e88324e800f5351c15893a29855f637211aca9e1cd3f7cccd372e9370","signature":"566b53d6bd25dd8a6d93ef387b4a0ae8a795c1ea4854298c3a328fc6712aebb5","impliedFormat":99},{"version":"26c6f7db0180070206eb2449c0c5fa0189fdfc0a258af7f60762b14c5908ec7e","signature":"f6b7f82e188e0e7d18bfa9cf1dc3ae29b31eae9950b495772537815380c7a573","impliedFormat":99},{"version":"f309bd228e2982f60f7ed817323e80d1187c1520248ae02059bd93d23eaa1acf","signature":"2885b4f117dd1d518624b16d3993749c17042fe5d799b60a46d9654d45fc1be1","impliedFormat":99},{"version":"4943bb6f444f19566066f99d034bc97ca84d63eb7b4546bb47097ee81080a94c","signature":"f517fe6b9594b6bc1939368aec01eb109e47e51250a3f836c2aa32baed7b8523","impliedFormat":99},{"version":"f49bf30471eacec378a71ba1d9bb91359cb3a2d62a4c2369432dc9d4781e8a76","signature":"2db98de1d14bef065e3e3c8d46de848d2afd1b503df129cee35e41ad04ef05d9","impliedFormat":99},{"version":"1385d95114ceab2550ef26b7b997d8e83c05fe2e6df7ca75d42068fbd97b3118","signature":"0ac7bb457ac07cb746a4cd0f9056cd13d06ac92515df7f4d04fdb426c0d04789","impliedFormat":99},{"version":"86073f64dedb90909dd148f1dbbdc77c03715cd1de9a4585771fa4a935a559e5","signature":"e0a536d63d03a20b0da8cb90ea1c639eae665b8d092b7e2f68532e385d7c071b","impliedFormat":99},{"version":"77678ef71d223cb1d9b17e63ef68e685d278e931c0f9ef214fce5ca1ce549b75","signature":"fbc291030037bd7b99b49ae84a7d7191146404671852e0acb1aadccd0b625074","impliedFormat":99},{"version":"9fd52944f4d0748affc7601ddcd21af6e8c622d2e2855c9a5ad215ca3e09a7ae","signature":"1bc91777d9c68f9f46697b1859f11ea39e6c51e1eb135336d81289eb25c97623","impliedFormat":99},{"version":"7f4d58b40b9fb2850c7807263b7f76ab025ee11099ce8f193f5ee4a6fbc48023","signature":"9b5e43a8d86d0bd41f3efb075e415d1f239702b02afb90e34abb868d82a0f5d6","impliedFormat":99},{"version":"f8f8cb7ad87c549b0eeb9a74478f7ed75e347aca8db55989162ccba37d6308d6","signature":"bb577b7c883e070fa151937440e054902e74ed58186bd044296f2e1b4be386ce","impliedFormat":99},{"version":"5bc4d797c4c00430b4e7cea2ca1ffa7d8e3223fb526997bb4a3b73b556b344f5","signature":"46d6995fa6153325dae9fcaf8eb7fdc183936a42a3fb851efcda43cc0bf7edef","impliedFormat":99},{"version":"c82e75185b0709ec0b4ba2b1dc62ec92b60c064c457510e2de266f9cea2ef22a","signature":"95e6bad556a8ac48fc21c4587a5d4ab66d736dd1859ca05d5f62cf76558f7a1b","impliedFormat":99},{"version":"1e434b5f963ca54162c007922a664c33c058045e1f8258bc47ca7b10b0df25a3","signature":"9b47d61d6e847112cf7e9f2fb1631d36e81d966b79b46ede120eaf85058f6a97","impliedFormat":99},{"version":"d3601402d82e419617b77fb8364e5192eb7f1d685288f09ff39d63cde4c9e51c","signature":"3ea67cb40367de619dc4addce96f4d5e80160ea305c6afe526d44a1b7988a3ea","impliedFormat":99},{"version":"6dd145cdae9cca3d1dd9c077f79bf64f486a5d6dd851a80b53a638c3ed0353fb","signature":"bd205ae001b9e85aad4aeb1755b24591dc12372fe660fe31ee315074062eea0d","impliedFormat":99},{"version":"5832831564812fc3c3a11fac7fa7fb7e1952dc2316b724c779b94aadf0903b41","signature":"8aacc7e08befac1b26c5fe0a4f1818a3755f1da7e7637dd7c887991f6561d012","impliedFormat":99},{"version":"dac0403c3ff87860d7b130e4d46797b3a14b8491a2d483cdd3939b36a465c71c","signature":"b76a00a0d000ba2ad5b9ecaf389922e8135c8087180aa769fd517bd404ad5459","impliedFormat":99},{"version":"ef58c75d40fb4394e68971549eb3351058cb0b275db2738ae67df13ffc150cc8","signature":"6b38678a012f8055e5f0a8aa9c1ca13d8a6d60110541d60e244a132b31f1fec2","impliedFormat":99},{"version":"387288e860f965c2862d17c155ad361b1c2ceaff5f97761d179262336b88580d","signature":"872937c6cd92ad2ca1548878c5c2325dc0ba3339a93a31ed1947884908dd8aa8","impliedFormat":99},{"version":"f47ba4df2de5c263e2a7c95464685602b0db64ad88bc1f62a477dc98311f88ab","signature":"98a1f2a3ec600dc06f82c4fe120b7d2ef6aa8ec258b1c4fb77e44a913cc6e233","impliedFormat":99},{"version":"4c92257cc7c9b722720be143ed2b5b8387267854c67017372b09e2bcbbea6063","signature":"c0e70bcea10f408ecc8833d2aa2c3af825d13e470d74990ba538d0a81cf56a7b","impliedFormat":99},{"version":"c3c7389b117ec2f370d63fd673a8fc379b335b73666ea9c481848043d27e85d3","signature":"47e1b725b6d55b6284e63568e9074f195005f8b79e066b28449663aef9aed95c","impliedFormat":99},{"version":"3c0e1904a08a9f573980fc9cabc22e76657990ee395bac9a6bb50a6c102e52bd","signature":"42e936ecc3b9b7ad5a489eeaea7c25af8d7b71162a08e00ad638648e87a7ee51","impliedFormat":99},{"version":"77099443b054b22cb41374e020cf0ec8bbc3b077c25d5afb2d73e2207c661b80","signature":"e6f972dc162ead1d86897a3488316aab8b034472695d40eac74b6557e184919d","impliedFormat":99},{"version":"ea4c2e9deca942ae568c64e85d74cd5eb67c40b827956fd9a82e81d70e70585c","signature":"d91415fa00b3eef01ae2e08e8ffaf7cef9fa568515c83ac1474a22cc55bb3718","impliedFormat":99},{"version":"137618331aa4f4dd38c93e26a20b43dc8dc25a95485cdfd496f1a104b1b07c3b","signature":"912202a19d5e8972357af639e5e65d06c9171e30d4bf077fcdfe184c30effc7c","impliedFormat":99},{"version":"aa7446683810dffa2f3379a2e3a4ad3bcdc59d8da258ceac844ad6b68d3b418a","signature":"16ea4109bf543dd521c2e9cd4ff0f8c498250ce26f6fe55739e077e0761c8807","impliedFormat":99},{"version":"8130e89488ac70797bd1737f59ab9d4ca43805a6886ec3e600eb29cfd681c96e","signature":"9ab0406e79c8ae7a4f552c6609b8ce436242d74abbeebd1f4303a63c53ccb56a","impliedFormat":99},{"version":"0d2f8deb225e2cb7c3a818ff1a6e2aaaaf2104a0af8104d8c3e112cb9856f3ae","signature":"76fdce1e19f5cf3a2243a37f1778f534dc527e73c25100a14d63994c2f0b8760","impliedFormat":99},{"version":"df3b85e40aa11deae5e4e9094927c0ddc7a768c10f8d2e4f793558d7c832337c","signature":"dca314f637b4d88b884e8a6d76fb82cbf2b896e28f69feae8da56046045cf278","impliedFormat":99},{"version":"484cf35592b2c8be3608d937a5238c1fef88315cedc853cc817c1333ad316e35","signature":"e7181fa8e23ed61baefe346d52c8e0eaa94ab0c495c50933f3d0b1de1f949230","impliedFormat":99},{"version":"79604b209f32f23345daab19964a53d8dc9488d1ed7e23bad0ff08fc2c772da8","signature":"4dcaec244d4486f21fa7800fd6853c914df66154d4ca6b7cf0aa0370c5e6a656","impliedFormat":99},{"version":"019abfb86e2f8f44b9f78ebe1ada8748f2bf578caaf9536475531cf4eb4bde62","signature":"5111e2e2ffb1264243951a0c15fa3498e2c0c23e74599f535ad2227a16d8c503","impliedFormat":99},{"version":"8a6aecc7b7cd01b03424ea5e4755f8abceb433c7cac3c4cc74aea2df676ca32a","signature":"2c6c2e2996661a1558d5ce4040ec63a12913ea0c52fd071adc079fb1f3fc125c","impliedFormat":99},{"version":"3e87e6d2e51b392e59034bf46547bd13ffbf54301ccf98cada6692eec7261860","signature":"b6c5cb675d41673f3d27982b79d6b96033d9f0976ff9c62a49b4d61bbfc71b1f","impliedFormat":99},{"version":"950cb741daec5e63de1500aa3db70f9879fa16164fbb8cbc100437a258643f84","signature":"db5ff6f8ae2b0a4ff8cb16b43646b5561304b219fcc10ab1c470965743fe7662","impliedFormat":99},{"version":"f6ce18c4659b7e933d0e0289ee01d20eabc88543587ba71e3ee59ea2560e8294","signature":"e4bf9388266333a7b08b77dfc53f0bd5cc25da0e148c7a896aaac443c6becb47","impliedFormat":99},{"version":"d316f795ecc284e4a91622cd71635ba3964cd3ee5fa4bcca828173767520113e","signature":"986c6fa0b20de6185466d165274d7896f8734b92302b70ffccf4614be069db61","impliedFormat":99},{"version":"c5da010a38dec8e8569cf895d9dfaf1432e1d29d7f9f73644eb01f33f097e89d","signature":"02fad959da0f7217696defb6dead5557228c3ef9791e4cbb28164d4bea2a8245","impliedFormat":99},{"version":"85f4bc1f1eea3a08f8abc20c7dc41671a8c4ba35860c9e948ef7ca39eff18dc2","signature":"43065306646acc1b02890238154e075cb4e2a6cbc73e213e1f56fcc6ad568d37","impliedFormat":99},{"version":"3f24a1b9dce9699930f668b87e564ff8fbdd5742fffee6dc35e5e6e6a7c3af78","signature":"ccd53c52eddd8eaa19baaf4ac4224f18b3c9ee90cbdb62001f1477e59c5006be","impliedFormat":99},{"version":"7a55412506f0f9dc36fb71e3cc6e6781526deb1a759038ff8fd08c45d99326f4","signature":"e83ecc19d67e55848641650aa73755b88b0085d526fefdace51ddb11da8a4e92","impliedFormat":99},{"version":"6620bc01f2502a0cc57ab81250183715cff09aa568e747c62ed05911b1cdeb17","signature":"fc4560cb792ceead9e3fea2f6af6cfc1f6c3ae85091f1857c7d268a11c01b948","impliedFormat":99},{"version":"cef86916072eb96932fc00f390dde6c6bd57243adf5b936946adb7ab3b88c7d6","signature":"e7f707dc443bc70c46576168b519c3ba5479373575af4399855ca8b0b3013a02","impliedFormat":99},{"version":"2de3c458fe2feecfaf56cb658616504d7484f0cdfdcb150c45d7cce4172b05b4","signature":"8b97d49f33fb21b2b6616c0600cb2e3968deede70049dd50e38e7d5e60258e48","impliedFormat":99},{"version":"729ae253baca9b66f161e5d741763d835c190717a18714a4cc10033be270e566","signature":"a61270eb38bce478ba85ad3126a149e7d178fdfc02d91d901ec450ca2a08a3c9","impliedFormat":99},{"version":"4e0c892416db776abe7394b8d8c870bd9a0130712e6939e7bb97ff1dfa68f5f1","signature":"5be8d9fadb8846ec9529a9a0839940b7ed8667d9473d37fcaddf5a5407046bb8","impliedFormat":99},{"version":"1029ff8709b714292e9e06f2c7a61ef03249cd622dc0a14b9ef090eb4f5440e3","signature":"b02e020e0ad1378e97a9e1d26795695ac5527087e5c174e8aea70ec0d00192e9","impliedFormat":99},{"version":"784a7c50aee5402707d9acaccc422eb7fdc49d099e4b9eef79985a8cda49c11f","signature":"b34ecdba664a2ec3b8dbf9e941b6dbe316902ba0e406a7c31299e7eb959fb7e9","impliedFormat":99},{"version":"f022ac45c7b49f346c7a4aec7035380a6c20e864c3a3c9b093a0749214fdd972","signature":"66fc58d212375c49354827feb93cf399644bddf49c6d5aa7cd716cd81cf5b691","impliedFormat":99},{"version":"e0b193eaf469545abda1cf3ca86cb25992513dfff1c993b4032f1c80e4848427","signature":"0c184d4bfd1585aefffd168cf5f09cd420bebc653e912e418c24cab332f186e3","impliedFormat":99},{"version":"582dc809d8b93a8fc16c77e1ffc53850f3f84b40f8cb2a3cdf1996f79f1b3088","signature":"5ba57c948c9666d17638efae14ac47877ede75629fe17a412e5d6d1a4c505fd1","impliedFormat":99},{"version":"355bafe303bae845767ef24a37f7b2c711c250c7448895c0c938875f7f9c2032","signature":"5cf4cc52274a28bd8ab9406ed3e98fa53551f4b4cf1a34bd65b78b5e1439414f","impliedFormat":99},{"version":"b9108c4d92c7ffe8546ebd753ef6901b2abd197367e64f6826c3897ac541c3ae","signature":"48706ca10c8d5d293d1546c75598d177ec2e218aadc913c0c0e22d140788e167","impliedFormat":99},{"version":"6037175802f6e7c6b202d884a482efcfa807b3892fff2e474b9724db9d40785c","signature":"9ea3d311a1dd736d63c38632d4a4af2019f41fcec61243ebf8e9f5a9ffaf2cbe","impliedFormat":99},{"version":"6d55ba1191a52297542ccc25f3fb7b5f551db0ba6794358a69e57f0dd5d24f88","signature":"a03ba7ec376ee4f7053cc8948e003e6e0cf9aa4c7aa65faf61e76ab153554cc7","impliedFormat":99},{"version":"ea80f681fb9d0ff6988eb827a0a958503dc03fa73fe2bcfbea7770228dcd1eab","signature":"2b82423c06b300d8612dffe4c1c8b8a0e11c4f1459d69798fe14479617c28afe","impliedFormat":99},{"version":"5df93ac666483bac857e89c44a27d1e78a58ddaca01b07f5a9c3739c83e91bb1","signature":"ce1efd5de7b2c5ad991e1bcaef0c643246abc384f2296449db3ba0abf459ced4","impliedFormat":99},{"version":"eb8ae88b6da33af8ee9b9497c3e01d2ff5679b60f68972a4101abb0e795aa138","signature":"43ea4830a704b847b6a91de852d511b6d6606d4a21f7baac811abeb0f13428d7","impliedFormat":99},{"version":"96dba49c7ca675ef31b5e4fbfb040472e1399e7579756cbe75bc467fd818b725","signature":"a34189c39e64e75e77d978d1c1705f53c585e7598705ffb45487f46c26b2cae1","impliedFormat":99},{"version":"d7e5fa867a59ea2dd844ac46134b6200bec7be5bf9caa24ad818a8c1cb9960c6","signature":"c92b068c8e0d743f3e2a7508f27874062fa902ca054369176acbc9502015e4bf","impliedFormat":99},{"version":"7ab5ea0a0fee1f29e1fac8686e28f007d043ba95d7e3b632f8cc7301c37e6811","signature":"db959774546bdddc7101c53894e3138cd245b33175f7c9377f9343eec1a8d680","impliedFormat":99},{"version":"c27b65f34815f9448a64c605dd63f6e03af85ccb2ad4bdcd0cf5332b645c9705","signature":"8c826192b6757cbc3ffc140a36dc8ada7957796bd2242467287ae231450b4f99","impliedFormat":99},{"version":"4ace5a8e6261759a5cbd617cae0cbd88c0c5193bb5345673b0a5a48dcf51f640","signature":"32a2e5d5fbfd8d6d2851fc644c4f1051c2ab5f068adb276e8cdc1fb67774fe5f","impliedFormat":99},{"version":"eb54d8688792ecc441056d4150a5da1dba8815050829d8cf74d08d50aa40b8a9","signature":"10c7bdc6518b5f312287ce56e2ad08318c9c6a205f70fc51138764c9f0579ccd","impliedFormat":99}],"root":[[59,169]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"experimentalDecorators":true,"module":100,"noImplicitAny":false,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","sourceMap":true,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[163,1],[164,2],[165,3],[166,4],[167,5],[168,6],[169,7],[121,8],[77,9],[64,10],[102,11],[118,12],[120,13],[67,14],[84,15],[116,16],[119,17],[106,18],[114,19],[72,20],[73,21],[71,22],[113,23],[69,24],[112,25],[101,26],[108,27],[107,28],[105,29],[79,30],[82,31],[65,32],[89,22],[86,33],[70,33],[96,34],[94,35],[88,36],[87,37],[95,38],[90,39],[92,40],[124,41],[126,42],[129,43],[131,44],[133,45],[135,46],[137,47],[139,48],[143,49],[145,50],[142,51],[128,22],[123,52],[125,53],[127,54],[130,52],[132,52],[134,52],[136,53],[141,55],[138,56],[144,57],[140,54],[122,58],[146,59],[147,60],[91,61],[148,62],[149,63],[150,64],[151,65],[152,66],[153,67],[154,68],[155,69],[156,61],[157,70],[111,71],[159,72],[160,73],[161,74],[162,75],[98,76],[97,77],[78,78],[100,79],[74,80],[115,79],[93,79],[75,81],[81,82],[103,83],[109,84],[110,85],[99,17],[61,86]],"latestChangedDtsFile":"./src/core/text-rendering/SdfTextRenderer.d.ts","version":"5.9.2"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidtv/renderer",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "SolidTV Renderer",
5
5
  "type": "module",
6
6
  "main": "./dist/exports/index.js",
@@ -688,12 +688,6 @@ export interface CoreNodeProps {
688
688
  * are provided. Only works when createImageBitmap is supported on the browser.
689
689
  */
690
690
  srcY?: number;
691
- /**
692
- * Mark the node as interactive so we can perform hit tests on it
693
- * when pointer events are registered.
694
- * @default false
695
- */
696
- interactive?: boolean;
697
691
  /**
698
692
  * preventDestroy flag prevents the node and its children from being destroyed
699
693
  * when the parent is destroyed.
@@ -882,8 +876,7 @@ export class CoreNode extends EventEmitter {
882
876
  // creates a fresh object with a consistent shape. Save fields that are
883
877
  // re-applied through setters, then null them on props so the setters
884
878
  // detect the change.
885
- const { texture, shader, src, rtt, boundsMargin, interactive, parent } =
886
- props;
879
+ const { texture, shader, src, rtt, boundsMargin, parent } = props;
887
880
  const p = (this.props = props);
888
881
  p.texture = null;
889
882
  p.shader = null;
@@ -940,9 +933,6 @@ export class CoreNode extends EventEmitter {
940
933
  if (boundsMargin !== null) {
941
934
  this.boundsMargin = boundsMargin;
942
935
  }
943
- if (interactive !== undefined) {
944
- this.interactive = interactive;
945
- }
946
936
 
947
937
  // Initialize autosize if enabled
948
938
  if (p.autosize === true) {
@@ -2020,6 +2010,13 @@ export class CoreNode extends EventEmitter {
2020
2010
  this.stage.untrackTimedNode(this);
2021
2011
  }
2022
2012
 
2013
+ // Release this node's shader-value cache entry so the shader manager's idle
2014
+ // cleanup can reclaim it. Skip the shared default shader (never per-node).
2015
+ const shader = this.props.shader;
2016
+ if (shader !== null && shader !== this.stage.defShaderNode) {
2017
+ shader.detachNode();
2018
+ }
2019
+
2023
2020
  if (USE_RTT && this.rtt === true) {
2024
2021
  this.stage.renderer.removeRTTNode(this);
2025
2022
  }
@@ -2965,18 +2962,6 @@ export class CoreNode extends EventEmitter {
2965
2962
  return this.props.textureOptions;
2966
2963
  }
2967
2964
 
2968
- set interactive(value: boolean | undefined) {
2969
- this.props.interactive = value;
2970
- // Update Stage's interactive Set
2971
- if (value === true) {
2972
- this.stage.interactiveNodes.add(this);
2973
- }
2974
- }
2975
-
2976
- get interactive(): boolean | undefined {
2977
- return this.props.interactive;
2978
- }
2979
-
2980
2965
  get componentName(): string | undefined {
2981
2966
  return this.props.componentName;
2982
2967
  }
package/src/core/Stage.ts CHANGED
@@ -37,7 +37,6 @@ import {
37
37
  import { CoreRenderer } from './renderers/CoreRenderer.js';
38
38
  import { CoreTextNode, type CoreTextNodeProps } from './CoreTextNode.js';
39
39
  import { santizeCustomDataMap } from '../main-api/utils.js';
40
- import { pointInBound } from './lib/utils.js';
41
40
  import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
42
41
  import { Matrix3d } from './lib/Matrix3d.js';
43
42
  import { createBound, createPreloadBounds, type Bound } from './lib/utils.js';
@@ -71,11 +70,6 @@ export type StageFrameTickHandler = (
71
70
  frameTickData: FrameTickPayload,
72
71
  ) => void;
73
72
 
74
- export interface Point {
75
- x: number;
76
- y: number;
77
- }
78
-
79
73
  const autoStart = true;
80
74
 
81
75
  export class Stage {
@@ -88,7 +82,6 @@ export class Stage {
88
82
  public readonly shManager: CoreShaderManager;
89
83
  public readonly renderer: CoreRenderer;
90
84
  public readonly root: CoreNode;
91
- public readonly interactiveNodes: Set<CoreNode> = new Set();
92
85
  public boundsMargin: [number, number, number, number];
93
86
  public readonly defShaderNode: CoreShaderNode | null = null;
94
87
  public strictBound: Bound;
@@ -254,6 +247,17 @@ export class Stage {
254
247
 
255
248
  const renderMode = this.renderer.mode || 'webgl';
256
249
 
250
+ // Canvas2D textures are plain JS heap objects managed by the browser GC.
251
+ // Threshold-based upload blocking makes no sense for JS heap — disable it
252
+ // by setting criticalThreshold to 0 while keeping the eviction machinery.
253
+ if (renderMode === 'canvas') {
254
+ this.txMemManager.updateSettings({
255
+ ...textureMemory,
256
+ criticalThreshold: 0,
257
+ doNotExceedCriticalThreshold: false,
258
+ });
259
+ }
260
+
257
261
  this.createDefaultTexture();
258
262
  setPremultiplyMode(renderMode);
259
263
 
@@ -509,6 +513,19 @@ export class Stage {
509
513
  );
510
514
  }
511
515
 
516
+ /**
517
+ * Trim text renderer caches back to their configured limits.
518
+ *
519
+ * Called when the stage goes idle so layout-cache eviction never competes
520
+ * with active rendering.
521
+ */
522
+ cleanupTextRenderers() {
523
+ const textRenderers = this.textRenderers;
524
+ for (const key in textRenderers) {
525
+ textRenderers[key]!.cleanup();
526
+ }
527
+ }
528
+
512
529
  /**
513
530
  * Start a new frame draw
514
531
  */
@@ -897,45 +914,6 @@ export class Stage {
897
914
  this.root.childUpdateType |= UpdateType.RenderBounds;
898
915
  }
899
916
 
900
- /** Find all nodes at a given point
901
- * @param data
902
- */
903
- findNodesAtPoint(data: Point): CoreNode[] {
904
- const x = data.x / this.options.deviceLogicalPixelRatio;
905
- const y = data.y / this.options.deviceLogicalPixelRatio;
906
- const nodes: CoreNode[] = [];
907
- for (const node of this.interactiveNodes) {
908
- if (node.isRenderable === false) {
909
- continue;
910
- }
911
- if (pointInBound(x, y, node.renderBound!) === true) {
912
- nodes.push(node);
913
- }
914
- }
915
- return nodes;
916
- }
917
-
918
- /**
919
- * Find the top node at a given point
920
- * @param data
921
- * @returns
922
- */
923
- getNodeFromPosition(data: Point): CoreNode | null {
924
- const nodes: CoreNode[] = this.findNodesAtPoint(data);
925
- if (nodes.length === 0) {
926
- return null;
927
- }
928
-
929
- //get last node in array (as top node)
930
- let topNode = nodes[nodes.length - 1] as CoreNode;
931
- for (let i = 0; i < nodes.length; i++) {
932
- if (nodes[i]!.zIndex > topNode.zIndex) {
933
- topNode = nodes[i]!;
934
- }
935
- }
936
- return topNode || null;
937
- }
938
-
939
917
  /**
940
918
  * add node to timeNodes arrays
941
919
  * @param node
@@ -1062,7 +1040,6 @@ export class Stage {
1062
1040
  rtt: props.rtt ?? false,
1063
1041
  data,
1064
1042
  imageType: props.imageType,
1065
- interactive: props.interactive ?? false,
1066
1043
  preventDestroy: props.preventDestroy,
1067
1044
  componentName: props.componentName,
1068
1045
  componentLocation: props.componentLocation,
@@ -148,7 +148,7 @@ export class TextureMemoryManager {
148
148
  this.loadedTextures.add(texture);
149
149
  }
150
150
 
151
- if (this.memUsed > this.criticalThreshold) {
151
+ if (this.criticalThreshold > 0 && this.memUsed > this.criticalThreshold) {
152
152
  this.criticalCleanupRequested = true;
153
153
  }
154
154
  }
@@ -156,13 +156,14 @@ export class TextureMemoryManager {
156
156
  checkCleanup() {
157
157
  return (
158
158
  this.criticalCleanupRequested ||
159
- (this.memUsed > this.targetThreshold &&
159
+ (this.criticalThreshold > 0 &&
160
+ this.memUsed > this.targetThreshold &&
160
161
  this.frameTime - this.lastCleanupTime >= this.cleanupInterval)
161
162
  );
162
163
  }
163
164
 
164
165
  checkCriticalCleanup() {
165
- return this.memUsed > this.criticalThreshold;
166
+ return this.criticalThreshold > 0 && this.memUsed > this.criticalThreshold;
166
167
  }
167
168
 
168
169
  /**
@@ -251,10 +251,6 @@ export function boundLargeThanBound(bound1: Bound, bound2: Bound) {
251
251
  );
252
252
  }
253
253
 
254
- export function pointInBound(x: number, y: number, bound: Bound) {
255
- return !(x < bound.x1 || x > bound.x2 || y < bound.y1 || y > bound.y2);
256
- }
257
-
258
254
  export function isBoundPositive(bound: Bound): boolean {
259
255
  return bound.x1 < bound.x2 && bound.y1 < bound.y2;
260
256
  }
@@ -19,6 +19,7 @@ function makeIdleStage(outOfMemory: boolean) {
19
19
  drawFrame: vi.fn(),
20
20
  flushFrameEvents: vi.fn(),
21
21
  shManager: { cleanup: vi.fn() },
22
+ cleanupTextRenderers: vi.fn(),
22
23
  eventBus: { emit: vi.fn() },
23
24
  txMemManager: {
24
25
  checkCleanup: vi.fn(() => false),
@@ -86,6 +86,7 @@ export class WebPlatform extends Platform {
86
86
  stage.txMemManager.handleOutOfMemory();
87
87
  }
88
88
  stage.shManager.cleanup();
89
+ stage.cleanupTextRenderers();
89
90
  stage.eventBus.emit('idle');
90
91
  isIdle = true;
91
92
  }
@@ -0,0 +1,53 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { CoreShaderNode } from './CoreShaderNode.js';
3
+ import type { Stage } from '../Stage.js';
4
+ import type { CoreShaderType } from './CoreShaderNode.js';
5
+
6
+ const makeNode = (mutate: ReturnType<typeof vi.fn>) => {
7
+ const stage = {
8
+ shManager: { mutateShaderValueUsage: mutate },
9
+ } as unknown as Stage;
10
+ return new CoreShaderNode(
11
+ 'test',
12
+ { time: undefined } as CoreShaderType,
13
+ stage,
14
+ );
15
+ };
16
+
17
+ describe('CoreShaderNode.detachNode', () => {
18
+ it('releases the held value-cache key so idle cleanup can evict it', () => {
19
+ const mutate = vi.fn();
20
+ const node = makeNode(mutate);
21
+ node.valueKey = 'color:1;node-width:10node-height:10';
22
+
23
+ node.detachNode();
24
+
25
+ expect(mutate).toHaveBeenCalledTimes(1);
26
+ expect(mutate).toHaveBeenCalledWith(
27
+ 'color:1;node-width:10node-height:10',
28
+ -1,
29
+ );
30
+ // Key is cleared so a double-detach can't decrement twice.
31
+ expect(node.valueKey).toBe('');
32
+ });
33
+
34
+ it('is a no-op when no value key is held', () => {
35
+ const mutate = vi.fn();
36
+ const node = makeNode(mutate);
37
+
38
+ node.detachNode();
39
+
40
+ expect(mutate).not.toHaveBeenCalled();
41
+ });
42
+
43
+ it('does not double-decrement on repeated detach', () => {
44
+ const mutate = vi.fn();
45
+ const node = makeNode(mutate);
46
+ node.valueKey = 'k';
47
+
48
+ node.detachNode();
49
+ node.detachNode();
50
+
51
+ expect(mutate).toHaveBeenCalledTimes(1);
52
+ });
53
+ });
@@ -96,6 +96,12 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
96
96
  protected node: CoreNode | null = null;
97
97
  readonly time: CoreShaderType['time'] = undefined;
98
98
  update: (() => void) | undefined = undefined;
99
+ /**
100
+ * The shader-value cache key currently held by this node (set by the
101
+ * subclass `update()` after the most recent successful value resolution).
102
+ * Tracked on the base so {@link detachNode} can release it on teardown.
103
+ */
104
+ valueKey = '';
99
105
  private _valueKeyCache = '';
100
106
  private _valueKeyDirty = true;
101
107
  private _lastW = 0;
@@ -162,6 +168,23 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
162
168
  this.node = node;
163
169
  }
164
170
 
171
+ /**
172
+ * Release this node's currently-held shader-value cache entry so the shader
173
+ * manager's idle `cleanup()` can reclaim it, and detach from the owning node.
174
+ *
175
+ * Called from {@link CoreNode.destroy}. Mirrors the `prevKey` release done on
176
+ * every value-key change in the subclass `update()`; without it a destroyed
177
+ * node's last value-cache entry stays pinned at usage >= 1 forever and can
178
+ * never be evicted.
179
+ */
180
+ detachNode() {
181
+ if (this.valueKey.length > 0) {
182
+ this.stage.shManager.mutateShaderValueUsage(this.valueKey, -1);
183
+ this.valueKey = '';
184
+ }
185
+ this.node = null;
186
+ }
187
+
165
188
  createValueKey() {
166
189
  if (
167
190
  this._valueKeyDirty === false &&
@@ -0,0 +1,34 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { CanvasRenderer } from './CanvasRenderer.js';
3
+ import { TextureType } from '../../textures/Texture.js';
4
+
5
+ describe('CanvasRenderer.renderContext', () => {
6
+ it('skips drawing when canvas texture image is undefined', () => {
7
+ const drawImage = vi.fn();
8
+
9
+ const renderer = Object.create(CanvasRenderer.prototype) as CanvasRenderer;
10
+ (renderer as any).context = {
11
+ drawImage,
12
+ globalAlpha: 1,
13
+ };
14
+
15
+ const node = {
16
+ premultipliedColorTl: 0xffffffff,
17
+ globalTransform: { tx: 10, ty: 20 },
18
+ props: { w: 100, h: 50 },
19
+ worldAlpha: 1,
20
+ textureCoords: { x1: 0, y1: 0, x2: 1, y2: 1 },
21
+ } as any;
22
+
23
+ const texture = {
24
+ type: TextureType.image,
25
+ ctxTexture: {
26
+ getImage: () => undefined,
27
+ },
28
+ } as any;
29
+
30
+ expect(() => renderer.renderContext(node, texture)).not.toThrow();
31
+ expect(drawImage).not.toHaveBeenCalled();
32
+ expect((renderer as any).context.globalAlpha).toBe(1);
33
+ });
34
+ });