cesium 0.15.0 → 0.16.0

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 (596) hide show
  1. data/app/assets/javascripts/Cesium.js +7 -7
  2. data/app/assets/javascripts/Core/BoundingRectangle.js +1 -1
  3. data/app/assets/javascripts/Core/BoundingSphere.js +12 -5
  4. data/app/assets/javascripts/Core/BoxTessellator.js +11 -8
  5. data/app/assets/javascripts/Core/CatmullRomSpline.js +23 -21
  6. data/app/assets/javascripts/Core/Clock.js +1 -1
  7. data/app/assets/javascripts/Core/Color.js +51 -0
  8. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +3 -1
  9. data/app/assets/javascripts/Core/EarthOrientationParameters.js +1 -1
  10. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +15 -12
  11. data/app/assets/javascripts/Core/Extent.js +37 -0
  12. data/app/assets/javascripts/Core/ExtentTessellator.js +33 -25
  13. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +18 -19
  14. data/app/assets/javascripts/Core/HermiteSpline.js +49 -49
  15. data/app/assets/javascripts/Core/Iau2006XysData.js +4 -5
  16. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +10 -20
  17. data/app/assets/javascripts/Core/LinearApproximation.js +19 -23
  18. data/app/assets/javascripts/Core/Math.js +15 -3
  19. data/app/assets/javascripts/Core/Matrix4.js +186 -2
  20. data/app/assets/javascripts/Core/MeshFilters.js +13 -13
  21. data/app/assets/javascripts/Core/OrientationInterpolator.js +19 -19
  22. data/app/assets/javascripts/Core/PlaneTessellator.js +8 -6
  23. data/app/assets/javascripts/Core/PolygonPipeline.js +21 -21
  24. data/app/assets/javascripts/Core/PolylinePipeline.js +17 -25
  25. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +187 -185
  26. data/app/assets/javascripts/Core/Shapes.js +8 -4
  27. data/app/assets/javascripts/Core/Simon1994PlanetaryPositions.js +521 -0
  28. data/app/assets/javascripts/Core/Spherical.js +36 -9
  29. data/app/assets/javascripts/Core/TaskProcessor.js +42 -5
  30. data/app/assets/javascripts/Core/TimeIntervalCollection.js +5 -5
  31. data/app/assets/javascripts/Core/Tipsify.js +21 -16
  32. data/app/assets/javascripts/Core/Transforms.js +11 -11
  33. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +4 -4
  34. data/app/assets/javascripts/Core/clone.js +25 -8
  35. data/app/assets/javascripts/Core/defaultValue.js +10 -1
  36. data/app/assets/javascripts/Core/isCrossOriginUrl.js +32 -0
  37. data/app/assets/javascripts/Core/jsonp.js +2 -2
  38. data/app/assets/javascripts/Core/loadImage.js +13 -6
  39. data/app/assets/javascripts/Core/loadJson.js +4 -1
  40. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +1 -1
  41. data/app/assets/javascripts/Core/writeTextToCanvas.js +1 -3
  42. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +7 -4
  43. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +1 -1
  44. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +1 -1
  45. data/app/assets/javascripts/DynamicScene/CzmlColor.js +1 -1
  46. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +6 -5
  47. data/app/assets/javascripts/DynamicScene/CzmlImage.js +8 -3
  48. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +6 -5
  49. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +6 -4
  50. data/app/assets/javascripts/DynamicScene/CzmlPosition.js +166 -0
  51. data/app/assets/javascripts/DynamicScene/CzmlString.js +6 -4
  52. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +1 -1
  53. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +1 -1
  54. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +1 -1
  55. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +6 -5
  56. data/app/assets/javascripts/DynamicScene/DynamicGridMaterial.js +202 -0
  57. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +5 -3
  58. data/app/assets/javascripts/DynamicScene/DynamicObject.js +1 -2
  59. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +19 -15
  60. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +12 -10
  61. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +17 -10
  62. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +39 -90
  63. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +19 -6
  64. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +6 -4
  65. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +10 -11
  66. data/app/assets/javascripts/Renderer/ClearCommand.js +60 -9
  67. data/app/assets/javascripts/Renderer/Context.js +234 -575
  68. data/app/assets/javascripts/Renderer/DrawCommand.js +15 -3
  69. data/app/assets/javascripts/Renderer/PassState.js +55 -0
  70. data/app/assets/javascripts/Renderer/PickFramebuffer.js +47 -77
  71. data/app/assets/javascripts/Renderer/RenderState.js +541 -0
  72. data/app/assets/javascripts/Renderer/ShaderCache.js +34 -1
  73. data/app/assets/javascripts/Renderer/ShaderProgram.js +112 -6
  74. data/app/assets/javascripts/Renderer/TextureAtlas.js +63 -67
  75. data/app/assets/javascripts/Renderer/UniformState.js +59 -30
  76. data/app/assets/javascripts/Renderer/VertexArray.js +9 -7
  77. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +28 -27
  78. data/app/assets/javascripts/Renderer/createPickFragmentShaderSource.js +53 -0
  79. data/app/assets/javascripts/Renderer/loadCubeMap.js +10 -11
  80. data/app/assets/javascripts/Scene/AnimationCollection.js +48 -44
  81. data/app/assets/javascripts/Scene/Billboard.js +8 -2
  82. data/app/assets/javascripts/Scene/BillboardCollection.js +66 -62
  83. data/app/assets/javascripts/Scene/Camera.js +3 -0
  84. data/app/assets/javascripts/Scene/CameraController.js +3 -3
  85. data/app/assets/javascripts/Scene/CameraFlightPath.js +9 -6
  86. data/app/assets/javascripts/Scene/CentralBody.js +47 -65
  87. data/app/assets/javascripts/Scene/CentralBodySurface.js +9 -6
  88. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +5 -9
  89. data/app/assets/javascripts/Scene/CompositePrimitive.js +8 -8
  90. data/app/assets/javascripts/Scene/CustomSensorVolume.js +66 -55
  91. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +26 -27
  92. data/app/assets/javascripts/Scene/FrameState.js +15 -4
  93. data/app/assets/javascripts/Scene/GridImageryProvider.js +266 -0
  94. data/app/assets/javascripts/Scene/ImageryLayer.js +44 -19
  95. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +3 -0
  96. data/app/assets/javascripts/Scene/ImageryProvider.js +3 -0
  97. data/app/assets/javascripts/Scene/Label.js +4 -4
  98. data/app/assets/javascripts/Scene/LabelCollection.js +2 -9
  99. data/app/assets/javascripts/Scene/Material.js +97 -8
  100. data/app/assets/javascripts/Scene/OrthographicFrustum.js +2 -2
  101. data/app/assets/javascripts/Scene/PerformanceDisplay.js +17 -10
  102. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +2 -2
  103. data/app/assets/javascripts/Scene/Polygon.js +30 -56
  104. data/app/assets/javascripts/Scene/Polyline.js +93 -227
  105. data/app/assets/javascripts/Scene/PolylineCollection.js +685 -757
  106. data/app/assets/javascripts/Scene/Projections.js +2 -2
  107. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +21 -16
  108. data/app/assets/javascripts/Scene/Scene.js +40 -32
  109. data/app/assets/javascripts/Scene/SceneTransitioner.js +8 -56
  110. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +6 -20
  111. data/app/assets/javascripts/Scene/SkyAtmosphere.js +0 -11
  112. data/app/assets/javascripts/Scene/SkyBox.js +0 -11
  113. data/app/assets/javascripts/Scene/VRTheWorldTerrainProvider.js +3 -2
  114. data/app/assets/javascripts/Scene/ViewportQuad.js +8 -8
  115. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +0 -2
  116. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +0 -2
  117. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +517 -3
  118. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +535 -4
  119. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +11 -24
  120. data/app/assets/javascripts/Shaders/CentralBodyFS.js +11 -24
  121. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +1 -3
  122. data/app/assets/javascripts/Shaders/CentralBodyVS.js +1 -3
  123. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +14 -33
  124. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +14 -33
  125. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +0 -1
  126. data/app/assets/javascripts/Shaders/EllipsoidFS.js +0 -1
  127. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +1 -11
  128. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +1 -11
  129. data/app/assets/javascripts/Shaders/Materials/FadeMaterial.glsl +36 -0
  130. data/app/assets/javascripts/Shaders/Materials/FadeMaterial.js +42 -0
  131. data/app/assets/javascripts/Shaders/Materials/GridMaterial.glsl +9 -1
  132. data/app/assets/javascripts/Shaders/Materials/GridMaterial.js +9 -1
  133. data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.glsl +60 -0
  134. data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.js +66 -0
  135. data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.glsl +17 -0
  136. data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.js +23 -0
  137. data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.glsl +28 -0
  138. data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.js +34 -0
  139. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +4 -10
  140. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +4 -10
  141. data/app/assets/javascripts/Shaders/PolygonFS.glsl +0 -3
  142. data/app/assets/javascripts/Shaders/PolygonFS.js +1 -4
  143. data/app/assets/javascripts/Shaders/PolygonVS.glsl +3 -4
  144. data/app/assets/javascripts/Shaders/PolygonVS.js +3 -4
  145. data/app/assets/javascripts/Shaders/PolylineFS.glsl +9 -2
  146. data/app/assets/javascripts/Shaders/PolylineFS.js +9 -2
  147. data/app/assets/javascripts/Shaders/PolylineVS.glsl +131 -14
  148. data/app/assets/javascripts/Shaders/PolylineVS.js +131 -14
  149. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +1 -19
  150. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +1 -19
  151. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +9 -1
  152. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +9 -1
  153. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +1 -3
  154. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +1 -3
  155. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +1 -2
  156. data/app/assets/javascripts/Shaders/SkyBoxFS.js +1 -2
  157. data/app/assets/javascripts/Widgets/Animation/Animation.js +8 -5
  158. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +19 -1
  159. data/app/assets/javascripts/Widgets/Timeline/Timeline.js +19 -2
  160. data/lib/cesium/version.rb +1 -1
  161. data/test/dummy/app/assets/javascripts/application.js.coffee +10 -10
  162. data/test/dummy/log/development.log +28285 -0
  163. data/test/dummy/tmp/cache/assets/BAF/370/sprockets%2F799a74598087f7719313562f44828061 +0 -0
  164. data/test/dummy/tmp/cache/assets/BF8/BC0/sprockets%2F1982805b53487d15554f20955019b8c4 +0 -0
  165. data/test/dummy/tmp/cache/assets/C12/030/sprockets%2Fbd84b00d783150a219825433401a7946 +0 -0
  166. data/test/dummy/tmp/cache/assets/C1F/BE0/sprockets%2F9ff195723d3a539023420682a372f561 +0 -0
  167. data/test/dummy/tmp/cache/assets/C23/060/sprockets%2F0844038b70e644bef4539389305680a3 +0 -0
  168. data/test/dummy/tmp/cache/assets/C27/DA0/sprockets%2Fe49200d07769d24f54f721d890142818 +0 -0
  169. data/test/dummy/tmp/cache/assets/C37/EB0/sprockets%2F410166e528f769c35999d061f6552d57 +0 -0
  170. data/test/dummy/tmp/cache/assets/C38/870/sprockets%2F3c244a5393086f3b95954f4675f29458 +0 -0
  171. data/test/dummy/tmp/cache/assets/C44/870/sprockets%2Fc7607e52811e723312c83d096c611c32 +0 -0
  172. data/test/dummy/tmp/cache/assets/C46/770/sprockets%2F9b6c82d0454ab5ba8727173860060324 +0 -0
  173. data/test/dummy/tmp/cache/assets/C46/E60/sprockets%2F151028e967f13248ca6121c9407242cf +0 -0
  174. data/test/dummy/tmp/cache/assets/C48/360/sprockets%2Fc966013651008025255f5b53b1d63f9e +0 -0
  175. data/test/dummy/tmp/cache/assets/C49/6B0/sprockets%2Ff15d3a84028c48073d820c51575157a4 +0 -0
  176. data/test/dummy/tmp/cache/assets/C4A/020/sprockets%2F162d504e77459f0304b964139300cfe3 +0 -0
  177. data/test/dummy/tmp/cache/assets/C4A/2B0/sprockets%2F821c1d08482a9b936b661a56444551b3 +0 -0
  178. data/test/dummy/tmp/cache/assets/C4F/630/sprockets%2F8935f51ad832c341c838751031a827f2 +0 -0
  179. data/test/dummy/tmp/cache/assets/C51/170/sprockets%2F7121148c53e447e867b886592e11ad00 +0 -0
  180. data/test/dummy/tmp/cache/assets/C53/040/sprockets%2F52411d26c4863636c7ae5b5090690f94 +0 -0
  181. data/test/dummy/tmp/cache/assets/C57/D10/sprockets%2F784e21cb5b634a598629115ef4685213 +0 -0
  182. data/test/dummy/tmp/cache/assets/C59/810/sprockets%2Fc37183f61d9511d324983656cd9375a1 +0 -0
  183. data/test/dummy/tmp/cache/assets/C61/2F0/sprockets%2Fe7f511982b4799474ab391f714d39630 +0 -0
  184. data/test/dummy/tmp/cache/assets/C64/730/sprockets%2F78fd706ba991f21a399070866616c297 +0 -0
  185. data/test/dummy/tmp/cache/assets/C65/0E0/sprockets%2F8303e4555c14f5f62cd2979665f50578 +0 -0
  186. data/test/dummy/tmp/cache/assets/C6C/C90/sprockets%2Fad7947b2492467a62388859219a92de9 +0 -0
  187. data/test/dummy/tmp/cache/assets/C70/900/sprockets%2F8dc34820f1167ed79c121111a0696c03 +0 -0
  188. data/test/dummy/tmp/cache/assets/C72/450/sprockets%2F12725ceae78656537003a1240f640ed4 +0 -0
  189. data/test/dummy/tmp/cache/assets/C73/0F0/sprockets%2F8a6a50d9b866140c720b6a48307c4116 +0 -0
  190. data/test/dummy/tmp/cache/assets/C75/F50/sprockets%2F52991c5c131fb0049279124ef17047ba +0 -0
  191. data/test/dummy/tmp/cache/assets/C76/F10/sprockets%2F536e031c5d9a257b602d38f8711480a2 +0 -0
  192. data/test/dummy/tmp/cache/assets/C7E/EA0/sprockets%2F2504a119ab66f79d8d296032e957a023 +0 -0
  193. data/test/dummy/tmp/cache/assets/C7F/860/sprockets%2F7646acf5464f211440d12d09847e7c43 +0 -0
  194. data/test/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5 +0 -0
  195. data/test/dummy/tmp/cache/assets/C80/780/sprockets%2F49930c35001a30c38745b89a6a86cf74 +0 -0
  196. data/test/dummy/tmp/cache/assets/C82/060/sprockets%2Fb043f48276a50489714f9ec04525e26a +0 -0
  197. data/test/dummy/tmp/cache/assets/C82/580/sprockets%2F8118f4526088ba8fd441f20317475d6b +0 -0
  198. data/test/dummy/tmp/cache/assets/C82/AA0/sprockets%2Fd83006c52345d7fe51216f1e577a8185 +0 -0
  199. data/test/dummy/tmp/cache/assets/C83/A50/sprockets%2F26b151f7490286ff7059ff9a411e1027 +0 -0
  200. data/test/dummy/tmp/cache/assets/C84/E00/sprockets%2F49d13d786c17ba7650b374646455a6b3 +0 -0
  201. data/test/dummy/tmp/cache/assets/C85/310/sprockets%2Fc638d86c720815e5b635e0a3646e2186 +0 -0
  202. data/test/dummy/tmp/cache/assets/C87/1B0/sprockets%2F58524f16545fa54ea39c3c1270d06799 +0 -0
  203. data/test/dummy/tmp/cache/assets/C88/960/sprockets%2F50655bc2c86c7c3007756af818375e64 +0 -0
  204. data/test/dummy/tmp/cache/assets/C89/9E0/sprockets%2Fbc5d891273e7d61e56762000337868bf +0 -0
  205. data/test/dummy/tmp/cache/assets/C8A/680/sprockets%2F401d94c3b6643cb7764590d5765197ea +0 -0
  206. data/test/dummy/tmp/cache/assets/C8B/0F0/sprockets%2F3317c35ce7597681091ac91985d08bb5 +0 -0
  207. data/test/dummy/tmp/cache/assets/C8B/A30/sprockets%2Fe20153c26552232703d0f4a5a60b10ed +0 -0
  208. data/test/dummy/tmp/cache/assets/C8D/FC0/sprockets%2Fab1b1b654d968822069892e844f5244f +0 -0
  209. data/test/dummy/tmp/cache/assets/C8E/1A0/sprockets%2F7937090f77385164f68c0ee252b26be5 +0 -0
  210. data/test/dummy/tmp/cache/assets/C8E/1B0/sprockets%2F3309cd849788a2b736f12369ad4e4851 +0 -0
  211. data/test/dummy/tmp/cache/assets/C8E/D50/sprockets%2F687d2438d13763a733287fc4a2e5f746 +0 -0
  212. data/test/dummy/tmp/cache/assets/C8E/E40/sprockets%2F96aaf9af5e7906347880902610773bc5 +0 -0
  213. data/test/dummy/tmp/cache/assets/C8F/370/sprockets%2Ff794170ec844d49b57216a088c0297d7 +0 -0
  214. data/test/dummy/tmp/cache/assets/C91/F00/sprockets%2F0f611f4f95811990472ff1b6f95383d5 +0 -0
  215. data/test/dummy/tmp/cache/assets/C98/D30/sprockets%2F3f2411651caa9b4fd0833085b001f490 +0 -0
  216. data/test/dummy/tmp/cache/assets/CA9/5A0/sprockets%2F8282351dd11504a68cbc8500b7786cf2 +0 -0
  217. data/test/dummy/tmp/cache/assets/CA9/E20/sprockets%2F1ca84c82be52603a0c947256a38a0598 +0 -0
  218. data/test/dummy/tmp/cache/assets/CAA/3C0/sprockets%2F75ce813900f222ce7892711f61db04d3 +0 -0
  219. data/test/dummy/tmp/cache/assets/CAA/400/sprockets%2F5c330e413aa8e6769050215b5366c7ef +0 -0
  220. data/test/dummy/tmp/cache/assets/CAA/A60/sprockets%2F76b467bc7a2344e208653c4261f8ab15 +0 -0
  221. data/test/dummy/tmp/cache/assets/CAA/D90/sprockets%2Fd477a5c2046351a0c462bb945e3954e5 +0 -0
  222. data/test/dummy/tmp/cache/assets/CAB/670/sprockets%2F678e67cae28828b42b010381be1f1247 +0 -0
  223. data/test/dummy/tmp/cache/assets/CAC/000/sprockets%2F39720f0080e70a954d9956acd571d0b2 +0 -0
  224. data/test/dummy/tmp/cache/assets/CAC/220/sprockets%2Fe9d921c5251a11d0a6296974975dbb20 +0 -0
  225. data/test/dummy/tmp/cache/assets/CAD/B20/sprockets%2F4c087829240d4b69e0a47e39bb8124d0 +0 -0
  226. data/test/dummy/tmp/cache/assets/CAD/CF0/sprockets%2F25811882cd57a31606348eb7b16f4f0d +0 -0
  227. data/test/dummy/tmp/cache/assets/CAE/0D0/sprockets%2F02345f5b06f3a25b588ed66b8e167034 +0 -0
  228. data/test/dummy/tmp/cache/assets/CAF/AD0/sprockets%2Fec228a94364d0d686876d02550ed15c1 +0 -0
  229. data/test/dummy/tmp/cache/assets/CB4/D20/sprockets%2F94c251de5c21293f227709479c4f32be +0 -0
  230. data/test/dummy/tmp/cache/assets/CB5/4C0/sprockets%2F446522846ac4ed6619268b3e00fd497a +0 -0
  231. data/test/dummy/tmp/cache/assets/CB7/FA0/sprockets%2F62d364e38ba9b500f8b1633367f782b9 +0 -0
  232. data/test/dummy/tmp/cache/assets/CB8/180/sprockets%2Fe66eae8997e04c4bf70531e166511662 +0 -0
  233. data/test/dummy/tmp/cache/assets/CB8/E20/sprockets%2Fcb0a5df9573576546972b95a14d8f112 +0 -0
  234. data/test/dummy/tmp/cache/assets/CB8/EA0/sprockets%2F9e63d365e2159c725d111698cc04a7e7 +0 -0
  235. data/test/dummy/tmp/cache/assets/CB9/680/sprockets%2F9bad6dc04875e04891351521b9795f5a +0 -0
  236. data/test/dummy/tmp/cache/assets/CBA/250/sprockets%2F39bb3860405888c9f3b4b35c738b940c +0 -0
  237. data/test/dummy/tmp/cache/assets/CBB/E80/sprockets%2F43b17645e39f018bc195bc9828f4b357 +0 -0
  238. data/test/dummy/tmp/cache/assets/CBC/6C0/sprockets%2F6f494cff47ee245d30168217542c66d6 +0 -0
  239. data/test/dummy/tmp/cache/assets/CBE/6B0/sprockets%2F285b1ec717d1c4c725758951c8785b2f +0 -0
  240. data/test/dummy/tmp/cache/assets/CBE/F20/sprockets%2F7610efc00f29935606275944978fbabf +0 -0
  241. data/test/dummy/tmp/cache/assets/CBF/3A0/sprockets%2Fc7b6a2891626c77607ea2881dc84d475 +0 -0
  242. data/test/dummy/tmp/cache/assets/CBF/8B0/sprockets%2F5c98534d57c1e7f7d2926173d27e4d14 +0 -0
  243. data/test/dummy/tmp/cache/assets/CC0/E60/sprockets%2F9731b0739ec7356b2e484cb427d6955f +0 -0
  244. data/test/dummy/tmp/cache/assets/CC1/600/sprockets%2F322629f082c9e743f47a32edd58874b8 +0 -0
  245. data/test/dummy/tmp/cache/assets/CC4/950/sprockets%2F697670d712a9a24f564f9e62b5ed1389 +0 -0
  246. data/test/dummy/tmp/cache/assets/CC4/B10/sprockets%2F55b1a4137e59cad5520e1f012eb29021 +0 -0
  247. data/test/dummy/tmp/cache/assets/CC4/B80/sprockets%2F5b090557c9468f93cc1ab77898ba2629 +0 -0
  248. data/test/dummy/tmp/cache/assets/CC7/0B0/sprockets%2Fa26009e31f9e68672f4fc7f873909a64 +0 -0
  249. data/test/dummy/tmp/cache/assets/CC9/D20/sprockets%2F372172a3ef18b8cac40a5c410f748021 +0 -0
  250. data/test/dummy/tmp/cache/assets/CCD/9B0/sprockets%2F0b3845e705c1a2c20c80b56c9c8a2246 +0 -0
  251. data/test/dummy/tmp/cache/assets/CCF/7E0/sprockets%2F3d478e2550d0140a8da13a229735bcd7 +0 -0
  252. data/test/dummy/tmp/cache/assets/CD0/990/sprockets%2F3027964ce732931bb70c158aa61ab08d +0 -0
  253. data/test/dummy/tmp/cache/assets/CD1/590/sprockets%2F2f99067423113c4aebb30a4dd3643b85 +0 -0
  254. data/test/dummy/tmp/cache/assets/CD3/250/sprockets%2F9982c13eacaf46622739beab50120614 +0 -0
  255. data/test/dummy/tmp/cache/assets/CD3/DB0/sprockets%2F38ec8b4912b23f2b31322570d56c9c2b +0 -0
  256. data/test/dummy/tmp/cache/assets/CD8/5E0/sprockets%2Ffd127b418d9dc4cc3d196672811a6112 +0 -0
  257. data/test/dummy/tmp/cache/assets/CD8/D40/sprockets%2F73570572f17300ebf2dda1ef2635149e +0 -0
  258. data/test/dummy/tmp/cache/assets/CD9/B20/sprockets%2F65698070c3bce81f5ee4eb101722b741 +0 -0
  259. data/test/dummy/tmp/cache/assets/CD9/D90/sprockets%2F87979893cfde1b28afc60797a9948345 +0 -0
  260. data/test/dummy/tmp/cache/assets/CDA/DA0/sprockets%2F13e6789dd595b2b5033b335bbd1472f2 +0 -0
  261. data/test/dummy/tmp/cache/assets/CDB/4D0/sprockets%2Ffb9182b4d13b796b245db8153324f4d2 +0 -0
  262. data/test/dummy/tmp/cache/assets/CDB/630/sprockets%2Fc48aca3d09504ff1811d9234c8267f50 +0 -0
  263. data/test/dummy/tmp/cache/assets/CDC/B50/sprockets%2F0f1e213595a02089df9735ec41c3ee80 +0 -0
  264. data/test/dummy/tmp/cache/assets/CDF/380/sprockets%2F39695e0a1726566c80281aab8d9a51cc +0 -0
  265. data/test/dummy/tmp/cache/assets/CDF/710/sprockets%2F16d775d6707a066df80d10cd1528ff33 +0 -0
  266. data/test/dummy/tmp/cache/assets/CDF/CA0/sprockets%2F3d5b2c400b7877c15ec29575d95b613b +0 -0
  267. data/test/dummy/tmp/cache/assets/CE0/420/sprockets%2F5b3a1508216cb6b968313beae256f788 +0 -0
  268. data/test/dummy/tmp/cache/assets/CE1/A00/sprockets%2F168b4bf7364dfd883a5930302e0f554c +0 -0
  269. data/test/dummy/tmp/cache/assets/CE4/F60/sprockets%2Fbc3490162e3489bf88aab055d19397f0 +0 -0
  270. data/test/dummy/tmp/cache/assets/CE5/F10/sprockets%2Fe9cf045465025d8527c83c3b93625fca +0 -0
  271. data/test/dummy/tmp/cache/assets/CE5/F90/sprockets%2F31557450886bf9c124f2fdb42704ce8e +0 -0
  272. data/test/dummy/tmp/cache/assets/CE5/FE0/sprockets%2F627e4127557531a3f8471cfbc718ed2f +0 -0
  273. data/test/dummy/tmp/cache/assets/CE6/4A0/sprockets%2F9c04b8b8df7217a708732da4982a5f61 +0 -0
  274. data/test/dummy/tmp/cache/assets/CE7/650/sprockets%2F834b60044436456eefb9ce5cf7144d38 +0 -0
  275. data/test/dummy/tmp/cache/assets/CE7/A40/sprockets%2F2974c4aef7a04f06738c8f6a2066e292 +0 -0
  276. data/test/dummy/tmp/cache/assets/CE7/C70/sprockets%2F8627e999f207ce7214e0ab06afe86412 +0 -0
  277. data/test/dummy/tmp/cache/assets/CE8/AA0/sprockets%2Fd569f5f91016b77401782ef3b42de6a6 +0 -0
  278. data/test/dummy/tmp/cache/assets/CE8/DC0/sprockets%2F49324064376deb60c942b7d85a3e7d9b +0 -0
  279. data/test/dummy/tmp/cache/assets/CEA/6D0/sprockets%2F1da842257a051a9e871c739d29b7d77f +0 -0
  280. data/test/dummy/tmp/cache/assets/CEA/E10/sprockets%2F888c18a6b36ca5e51363b7b21c29f877 +0 -0
  281. data/test/dummy/tmp/cache/assets/CEB/520/sprockets%2Fe99130a4204fac5e0b886885339af7c8 +0 -0
  282. data/test/dummy/tmp/cache/assets/CEB/C10/sprockets%2F6cadb28080126992d76e5e35ba79088e +0 -0
  283. data/test/dummy/tmp/cache/assets/CEC/2B0/sprockets%2F917af8a56c884b3d5c6a03593d95a365 +0 -0
  284. data/test/dummy/tmp/cache/assets/CEC/7A0/sprockets%2F1ccee406d881875c559b82932a25e7d4 +0 -0
  285. data/test/dummy/tmp/cache/assets/CEE/920/sprockets%2F97c97b08d42738b583ed92b55c540a4f +0 -0
  286. data/test/dummy/tmp/cache/assets/CEF/F00/sprockets%2F8ac77338a1dc57bb32999653c561e74e +0 -0
  287. data/test/dummy/tmp/cache/assets/CF0/950/sprockets%2Fd08f99c34c161881adb05d342e8984f9 +0 -0
  288. data/test/dummy/tmp/cache/assets/CF1/000/sprockets%2Fa779ae7d9f80d3098529264b91dd405d +0 -0
  289. data/test/dummy/tmp/cache/assets/CF1/5B0/sprockets%2F46e4886602bb924fc5c638865b6bf4f2 +0 -0
  290. data/test/dummy/tmp/cache/assets/CF5/2E0/sprockets%2F14513ab2f3a0311abd083e70c99bd293 +0 -0
  291. data/test/dummy/tmp/cache/assets/CF5/5C0/sprockets%2F64a4190014fe00d17e708fc02dfc2a32 +0 -0
  292. data/test/dummy/tmp/cache/assets/CF6/4E0/sprockets%2Ff9c27df89c8173d41850b9c40e766a85 +0 -0
  293. data/test/dummy/tmp/cache/assets/CF6/710/sprockets%2Fe53fe9369ad5f26285ab27754a943c88 +0 -0
  294. data/test/dummy/tmp/cache/assets/CF9/B70/sprockets%2F8144ebf49f85b18c46d90b897239b56e +0 -0
  295. data/test/dummy/tmp/cache/assets/CFB/540/sprockets%2Fc40fe1438edc416788894df8b834f944 +0 -0
  296. data/test/dummy/tmp/cache/assets/CFC/7F0/sprockets%2F6158d3ff6993e4c114a894dd371999ec +0 -0
  297. data/test/dummy/tmp/cache/assets/CFD/EA0/sprockets%2Fe43051fb1f2752c010e292ccbc53399b +0 -0
  298. data/test/dummy/tmp/cache/assets/CFD/F60/sprockets%2Fb5776671dd7cf557332f7720f49c9c9f +0 -0
  299. data/test/dummy/tmp/cache/assets/CFD/F80/sprockets%2Fe2b02979764013ad04e2f2b23d28e2ca +0 -0
  300. data/test/dummy/tmp/cache/assets/D00/690/sprockets%2F488324fb426a1e3cb3ca16488caf4004 +0 -0
  301. data/test/dummy/tmp/cache/assets/D01/A00/sprockets%2F5704bfb588da51f6053f30abd310b458 +0 -0
  302. data/test/dummy/tmp/cache/assets/D02/4C0/sprockets%2F6386d72b2c51c911a7fd84ba612430cc +0 -0
  303. data/test/dummy/tmp/cache/assets/D02/6E0/sprockets%2F886e897f07ee48ec4e9f640643440dd9 +0 -0
  304. data/test/dummy/tmp/cache/assets/D03/EF0/sprockets%2F4799db40f9cc57f50689f6da487464f5 +0 -0
  305. data/test/dummy/tmp/cache/assets/D04/530/sprockets%2Fc14ce481964a025c2501a5c907c65fce +0 -0
  306. data/test/dummy/tmp/cache/assets/D06/590/sprockets%2F19c899c20cf5d9b8629878e3add89708 +0 -0
  307. data/test/dummy/tmp/cache/assets/D06/A70/sprockets%2Ff5da4e04222a35db9d267255424bf5c6 +0 -0
  308. data/test/dummy/tmp/cache/assets/D07/330/sprockets%2F3b24c0c589b1004b399d108ae5d6ef81 +0 -0
  309. data/test/dummy/tmp/cache/assets/D07/7F0/sprockets%2F3fb0ed6b32aa83a6878d12a209c38824 +0 -0
  310. data/test/dummy/tmp/cache/assets/D08/530/sprockets%2F311d9ba15b34718d1e60ddc95a84194d +0 -0
  311. data/test/dummy/tmp/cache/assets/D08/D80/sprockets%2F388df4f82d11657bb0b4024448b6af2b +0 -0
  312. data/test/dummy/tmp/cache/assets/D09/7F0/sprockets%2Fa2d67c31222348f16a9812df26da3e8d +0 -0
  313. data/test/dummy/tmp/cache/assets/D09/E40/sprockets%2Fc2693927bc52084b4d2b89373aaa0ac9 +0 -0
  314. data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F3155dcf93a62cf601a0d48b2806b599b +0 -0
  315. data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F830cdfb33202453675d55d8de703fa2f +0 -0
  316. data/test/dummy/tmp/cache/assets/D0B/3E0/sprockets%2F66c11f02337c8851bfab67bbb3b94916 +0 -0
  317. data/test/dummy/tmp/cache/assets/D0C/2E0/sprockets%2Fecb35ec370e250a63784c2f508b76a38 +0 -0
  318. data/test/dummy/tmp/cache/assets/D0E/010/sprockets%2F797b9e08c55a2106f8e2dace455710d0 +0 -0
  319. data/test/dummy/tmp/cache/assets/D0E/180/sprockets%2F045e183281dfc37485db513d585c5bdb +0 -0
  320. data/test/dummy/tmp/cache/assets/D0E/EA0/sprockets%2F1d36a1420cf4558fb3c793316ae89ca7 +0 -0
  321. data/test/dummy/tmp/cache/assets/D0F/7E0/sprockets%2F45f0d1bae6783a949cd01767d4c7e212 +0 -0
  322. data/test/dummy/tmp/cache/assets/D0F/9E0/sprockets%2F1536c04e487ca1a768d90a68513c3cff +0 -0
  323. data/test/dummy/tmp/cache/assets/D10/750/sprockets%2F4c4a696e3e0b905d75ed60f9042cd227 +0 -0
  324. data/test/dummy/tmp/cache/assets/D11/FC0/sprockets%2F9bd6c83d367423fe05ef6c3338143aa6 +0 -0
  325. data/test/dummy/tmp/cache/assets/D11/FD0/sprockets%2Fa7872e06fd015c19f48f4c350d63cc19 +0 -0
  326. data/test/dummy/tmp/cache/assets/D12/1C0/sprockets%2F5901cb9faf1725dd2e472ca2965b4287 +0 -0
  327. data/test/dummy/tmp/cache/assets/D12/BE0/sprockets%2Ff01aaa83ff0f19584cb671837a7d7444 +0 -0
  328. data/test/dummy/tmp/cache/assets/D13/6B0/sprockets%2F0975ed2a9d299bf1c719b3b1137e581b +0 -0
  329. data/test/dummy/tmp/cache/assets/D14/340/sprockets%2F4d057c80e80694c2c4d637ecd538bc08 +0 -0
  330. data/test/dummy/tmp/cache/assets/D14/BD0/sprockets%2Ffc2255112852fb55d96d41a92f8fb6b6 +0 -0
  331. data/test/dummy/tmp/cache/assets/D14/DA0/sprockets%2F54a7d7c2a544df07d57173cda79e9700 +0 -0
  332. data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F46b5881e463b09c7f61736e5ec2aeb16 +0 -0
  333. data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F9e52b9b230f4aa1d0e1a74699d82e983 +0 -0
  334. data/test/dummy/tmp/cache/assets/D16/2A0/sprockets%2F3739709cf73c9a32b521b45677cd4bde +0 -0
  335. data/test/dummy/tmp/cache/assets/D17/6C0/sprockets%2F69144d8b21e495ac17e4994fdfa3a803 +0 -0
  336. data/test/dummy/tmp/cache/assets/D19/680/sprockets%2Fcd3a545b89d274cfd328f4d341f96272 +0 -0
  337. data/test/dummy/tmp/cache/assets/D19/E90/sprockets%2F16cd7e58935dd8d1d376f10be6b50368 +0 -0
  338. data/test/dummy/tmp/cache/assets/D1A/0C0/sprockets%2Fa606399c0ce2e298b58fec46777024ad +0 -0
  339. data/test/dummy/tmp/cache/assets/D1B/C80/sprockets%2F835147dfca8c918a99182e9e2e600f1c +0 -0
  340. data/test/dummy/tmp/cache/assets/D1C/070/sprockets%2F19aa6be16056890e435d65d4c84cf69e +0 -0
  341. data/test/dummy/tmp/cache/assets/D1D/700/sprockets%2F72d9824da671eff2338d52de93b83a56 +0 -0
  342. data/test/dummy/tmp/cache/assets/D1D/C60/sprockets%2F54364ea078190fbd4168336feef963fc +0 -0
  343. data/test/dummy/tmp/cache/assets/D1F/5F0/sprockets%2Ff8cb248d9fc90758124cd284e17e3b66 +0 -0
  344. data/test/dummy/tmp/cache/assets/D21/EF0/sprockets%2F935d9ee3ec37515493a293c3785dadc8 +0 -0
  345. data/test/dummy/tmp/cache/assets/D22/0B0/sprockets%2F9dfda36b032e59892637b875d7af392b +0 -0
  346. data/test/dummy/tmp/cache/assets/D22/2C0/sprockets%2Fe42d5d90d467a803999bdec116955f8b +0 -0
  347. data/test/dummy/tmp/cache/assets/D23/610/sprockets%2F0e51cca080cc65e62e080941b232a1ed +0 -0
  348. data/test/dummy/tmp/cache/assets/D23/EB0/sprockets%2Fe26ee953fe7e3172d737e6e67a96332a +0 -0
  349. data/test/dummy/tmp/cache/assets/D25/C00/sprockets%2Ff63d097054df34bc660bdf98f7661b99 +0 -0
  350. data/test/dummy/tmp/cache/assets/D26/470/sprockets%2F1e9b32c11057bc537b0021de4f1f1fc6 +0 -0
  351. data/test/dummy/tmp/cache/assets/D29/910/sprockets%2Fe51f36e9fde73e3928070a96fcf77571 +0 -0
  352. data/test/dummy/tmp/cache/assets/D2A/E10/sprockets%2F2d2a1cfcc28a38330d30434fd8c1077c +0 -0
  353. data/test/dummy/tmp/cache/assets/D2B/210/sprockets%2F67aaa6c903e6b15c74de39af0002a451 +0 -0
  354. data/test/dummy/tmp/cache/assets/D2B/CF0/sprockets%2F70b2adc5e73b271342371aaad257b76d +0 -0
  355. data/test/dummy/tmp/cache/assets/D2D/E40/sprockets%2Faf21fa3d26ad3f68a23532178e20fb15 +0 -0
  356. data/test/dummy/tmp/cache/assets/D2F/100/sprockets%2F8c0286ee70744ca12c7c12a563de4b2a +0 -0
  357. data/test/dummy/tmp/cache/assets/D32/3E0/sprockets%2Fc9f2c6b93b29fa3b0d5420b751903eb1 +0 -0
  358. data/test/dummy/tmp/cache/assets/D32/6E0/sprockets%2Fb4f78f31b9aab6dbd2911b07076d4601 +0 -0
  359. data/test/dummy/tmp/cache/assets/D32/A80/sprockets%2Fb12fb26042f73cf3b2796abc2836ee20 +0 -0
  360. data/test/dummy/tmp/cache/assets/D36/7F0/sprockets%2F78e0c63f0043ae6e6536ec504cc23a9b +0 -0
  361. data/test/dummy/tmp/cache/assets/D36/E70/sprockets%2F69b00a4118d012bf6d7cf293b5f316ff +0 -0
  362. data/test/dummy/tmp/cache/assets/D37/070/sprockets%2F59e3be9a13634f3b3d0cab4ad0889063 +0 -0
  363. data/test/dummy/tmp/cache/assets/D39/740/sprockets%2Fd4834d921f293e5dcc04bea2b3917d51 +0 -0
  364. data/test/dummy/tmp/cache/assets/D3A/520/sprockets%2F7193d867aa217d4a306848dbcc1d9c0b +0 -0
  365. data/test/dummy/tmp/cache/assets/D3A/670/sprockets%2F0db6624d07920a5f4decb479718da33c +0 -0
  366. data/test/dummy/tmp/cache/assets/D3A/690/sprockets%2Fb5058a82d02b84df6210af598cfa644c +0 -0
  367. data/test/dummy/tmp/cache/assets/D3A/A00/sprockets%2F1077cd94fef55fbb01ce529612180bd5 +0 -0
  368. data/test/dummy/tmp/cache/assets/D3A/ED0/sprockets%2F5ae1cf0266d63b8eb0647535ca93b63d +0 -0
  369. data/test/dummy/tmp/cache/assets/D3C/640/sprockets%2F42e7a70bb8be9398385afb3c4742aa04 +0 -0
  370. data/test/dummy/tmp/cache/assets/D3C/E40/sprockets%2Fba57600a2dd2f6da96613de37f27930f +0 -0
  371. data/test/dummy/tmp/cache/assets/D3D/4E0/sprockets%2F7d37b8c27a3f3b1a02c4fe17643de865 +0 -0
  372. data/test/dummy/tmp/cache/assets/D3E/940/sprockets%2F5ed82a03c1de5c34135b67ff053787ec +0 -0
  373. data/test/dummy/tmp/cache/assets/D3E/F80/sprockets%2Fa146a4bfc3b8cb08334b9b14fe379756 +0 -0
  374. data/test/dummy/tmp/cache/assets/D3F/050/sprockets%2Fab4aa96dbce1e6b359f2658118291d90 +0 -0
  375. data/test/dummy/tmp/cache/assets/D3F/590/sprockets%2F13a259ba93c919fa5a47ba9cf10569f1 +0 -0
  376. data/test/dummy/tmp/cache/assets/D3F/E10/sprockets%2Ff8492202733ea4a4f67065c95eec1beb +0 -0
  377. data/test/dummy/tmp/cache/assets/D40/6C0/sprockets%2Fafe496eaca27b82020893b81383e8b6b +0 -0
  378. data/test/dummy/tmp/cache/assets/D40/D10/sprockets%2F7af151c9b6080d9285fe058ae6d40c4d +0 -0
  379. data/test/dummy/tmp/cache/assets/D40/E50/sprockets%2F278df3df34e9573cbd9a402e42d1193b +0 -0
  380. data/test/dummy/tmp/cache/assets/D41/220/sprockets%2Fafb511e47c76bf448b6f7072c8d3118c +0 -0
  381. data/test/dummy/tmp/cache/assets/D41/770/sprockets%2F271c5f12457864bbb0c6646c9ebf1f3f +0 -0
  382. data/test/dummy/tmp/cache/assets/D41/8A0/sprockets%2Fbc7ce77806517ea173350e6a4d8c55db +0 -0
  383. data/test/dummy/tmp/cache/assets/D41/D70/sprockets%2F48b33bbf96854b502b0eaf902e69d55c +0 -0
  384. data/test/dummy/tmp/cache/assets/D41/FE0/sprockets%2F2901ba969f333cc19393afd2f0fc7c64 +0 -0
  385. data/test/dummy/tmp/cache/assets/D42/970/sprockets%2Fe27c8084b9cf2eaa063f585e92064c5a +0 -0
  386. data/test/dummy/tmp/cache/assets/D43/F70/sprockets%2F2c844357dd8de7db147f80c3539b0ee0 +0 -0
  387. data/test/dummy/tmp/cache/assets/D44/6D0/sprockets%2F4d7032af47bfce2d4a8564830f8a6a96 +0 -0
  388. data/test/dummy/tmp/cache/assets/D45/1C0/sprockets%2F7e052d17bd4b749ba373bea97380c8f6 +0 -0
  389. data/test/dummy/tmp/cache/assets/D45/3B0/sprockets%2Fd26b5a0d570ef57d06df6f032e9b8980 +0 -0
  390. data/test/dummy/tmp/cache/assets/D46/770/sprockets%2F96355435f9ab8090c2d3e4f0ddd9b7c3 +0 -0
  391. data/test/dummy/tmp/cache/assets/D46/8E0/sprockets%2F1a4f07bd2741629bdd572848dccf773e +0 -0
  392. data/test/dummy/tmp/cache/assets/D47/2B0/sprockets%2Ff3d8c4ca1a44044d98395b36b770fcf9 +0 -0
  393. data/test/dummy/tmp/cache/assets/D47/8F0/sprockets%2F1cc6e49382be4f74cbb97821ae1928c4 +0 -0
  394. data/test/dummy/tmp/cache/assets/D47/AC0/sprockets%2Fcb9189183de4d74faa04d6ad1347964f +0 -0
  395. data/test/dummy/tmp/cache/assets/D48/1D0/sprockets%2Fbff4201c0944eaf31a2f6a0110cbd224 +0 -0
  396. data/test/dummy/tmp/cache/assets/D48/2F0/sprockets%2F6b79e4839df89b4abb51c2c6105d15e8 +0 -0
  397. data/test/dummy/tmp/cache/assets/D48/960/sprockets%2F90e2c11ff8fd31e591b9fd39932631bf +0 -0
  398. data/test/dummy/tmp/cache/assets/D4A/C80/sprockets%2F0289519826ada458af4b9a728fdfcf31 +0 -0
  399. data/test/dummy/tmp/cache/assets/D4B/C20/sprockets%2Fc28f3c4d6cd98dbb784830d7c6214d65 +0 -0
  400. data/test/dummy/tmp/cache/assets/D4B/E90/sprockets%2F51d49f9bc2549684e6da91a4e0bc379b +0 -0
  401. data/test/dummy/tmp/cache/assets/D4C/490/sprockets%2F7e207e1654e5343a964fd6cf3fefb447 +0 -0
  402. data/test/dummy/tmp/cache/assets/D4C/BD0/sprockets%2F4ac9d1aa903d4731edf18fe2b9589829 +0 -0
  403. data/test/dummy/tmp/cache/assets/D4E/640/sprockets%2Fdaab3d2130266b5b7a2f1d04b8c4322e +0 -0
  404. data/test/dummy/tmp/cache/assets/D4E/6C0/sprockets%2Fedd9cf282af0f00637e5273c8c3888b9 +0 -0
  405. data/test/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
  406. data/test/dummy/tmp/cache/assets/D4F/410/sprockets%2F1377bb2e86073ae3a688e5a6c499a9df +0 -0
  407. data/test/dummy/tmp/cache/assets/D50/E10/sprockets%2F28698bc0c536fe5e97a2935e3bb929bb +0 -0
  408. data/test/dummy/tmp/cache/assets/D51/230/sprockets%2F742ba6ca9f84d98ffc38ca5687c05155 +0 -0
  409. data/test/dummy/tmp/cache/assets/D53/440/sprockets%2F2def445147b9f5d6363f6f6d497d2f0e +0 -0
  410. data/test/dummy/tmp/cache/assets/D53/DE0/sprockets%2F7736b51cb3bf8679b8bdc8ab9d184954 +0 -0
  411. data/test/dummy/tmp/cache/assets/D54/0D0/sprockets%2F448752db3a53dd453db1b01de121ebd2 +0 -0
  412. data/test/dummy/tmp/cache/assets/D56/1F0/sprockets%2F291fcb7a26ff3aac6bc1404e0a247242 +0 -0
  413. data/test/dummy/tmp/cache/assets/D57/DF0/sprockets%2F8d06b94587d49e037e77f8afcb6802cf +0 -0
  414. data/test/dummy/tmp/cache/assets/D59/070/sprockets%2F822cd47e69d40ba87f95181fdd698ed5 +0 -0
  415. data/test/dummy/tmp/cache/assets/D5A/070/sprockets%2Fe7159b621a21a7a0ebd81a32912e8faa +0 -0
  416. data/test/dummy/tmp/cache/assets/D5A/D80/sprockets%2F28dc9152e2ead49ae414a5b82d04a1a2 +0 -0
  417. data/test/dummy/tmp/cache/assets/D5C/660/sprockets%2F5baf6a64b3151ae6bf40155e90db6e03 +0 -0
  418. data/test/dummy/tmp/cache/assets/D5C/E00/sprockets%2F92930d4e993eb8bd3498b699dccf9a33 +0 -0
  419. data/test/dummy/tmp/cache/assets/D5E/3D0/sprockets%2F5f786d832b4e0ba05f6abc3ea314901a +0 -0
  420. data/test/dummy/tmp/cache/assets/D5F/7F0/sprockets%2Fabbcc55042a82b42c900c09d59de4c29 +0 -0
  421. data/test/dummy/tmp/cache/assets/D60/2A0/sprockets%2Fcd5c12269b6c414bf722c6c2dc0e18c4 +0 -0
  422. data/test/dummy/tmp/cache/assets/D62/140/sprockets%2F7e5a724c4c00951a0da7ec767ce19aa1 +0 -0
  423. data/test/dummy/tmp/cache/assets/D62/2E0/sprockets%2F51a06ddef9bd05b405fd605d37be3154 +0 -0
  424. data/test/dummy/tmp/cache/assets/D63/B00/sprockets%2F2672399dfcdd2b6b61536cab3d800bc1 +0 -0
  425. data/test/dummy/tmp/cache/assets/D63/D60/sprockets%2Ff791df22a3d7e2f4ef01ad0742f370c1 +0 -0
  426. data/test/dummy/tmp/cache/assets/D63/DC0/sprockets%2Fc298c2b66150c7f11d95cecf450bb14a +0 -0
  427. data/test/dummy/tmp/cache/assets/D63/DE0/sprockets%2F73c9e04acfc930681ab170b3e4bfc453 +0 -0
  428. data/test/dummy/tmp/cache/assets/D64/670/sprockets%2F7dc8c0ad36d436eb56a0824a46e0eb08 +0 -0
  429. data/test/dummy/tmp/cache/assets/D64/B50/sprockets%2F7ac06eacb363b85744337c0ea88e2b0c +0 -0
  430. data/test/dummy/tmp/cache/assets/D65/990/sprockets%2Fa2965ca374a00aaceb747e60b654e2f8 +0 -0
  431. data/test/dummy/tmp/cache/assets/D66/360/sprockets%2Fc94d86aa0bc1a44817a1fd3db0873a87 +0 -0
  432. data/test/dummy/tmp/cache/assets/D66/6C0/sprockets%2F1b63a7f0e3fb2a7f3124f198d0ff462b +0 -0
  433. data/test/dummy/tmp/cache/assets/D67/8E0/sprockets%2Ffd0eaaf36da9805e6c4ec303534162f5 +0 -0
  434. data/test/dummy/tmp/cache/assets/D67/C10/sprockets%2Ffb4b4451c110f07957c2ecacf854c5d4 +0 -0
  435. data/test/dummy/tmp/cache/assets/D68/000/sprockets%2F39c01fa5c01830f3558eb1c97c4dfb6b +0 -0
  436. data/test/dummy/tmp/cache/assets/D68/0C0/sprockets%2F6c628ddf1ba5c680e04ad54a476f163b +0 -0
  437. data/test/dummy/tmp/cache/assets/D68/210/sprockets%2Fdc284967860db06c2cb2e1da78bab156 +0 -0
  438. data/test/dummy/tmp/cache/assets/D6A/2E0/sprockets%2Fc3a3a8e66c9b58b52b1db3ad754c9423 +0 -0
  439. data/test/dummy/tmp/cache/assets/D6B/BA0/sprockets%2F8293eb343aead8dda54496532fb24fa1 +0 -0
  440. data/test/dummy/tmp/cache/assets/D6C/AD0/sprockets%2Fdabce05f6e4419832e20d6b7420fe9a7 +0 -0
  441. data/test/dummy/tmp/cache/assets/D6D/080/sprockets%2F3cc7b7355591babda1661e6c5e9f8c20 +0 -0
  442. data/test/dummy/tmp/cache/assets/D6D/690/sprockets%2Fd288d7215df092fdc70b3b8216dce2f3 +0 -0
  443. data/test/dummy/tmp/cache/assets/D6D/7A0/sprockets%2Fff4be901f55528b85b2b1fc73ebc4352 +0 -0
  444. data/test/dummy/tmp/cache/assets/D6D/E80/sprockets%2F9ef00ee94e3b0eed7c4e45b342085d51 +0 -0
  445. data/test/dummy/tmp/cache/assets/D6E/940/sprockets%2Fb19f43bd8383eeb5e26a4d2b79f1240e +0 -0
  446. data/test/dummy/tmp/cache/assets/D6E/9F0/sprockets%2F15f61ad82d9ca6cce6a0e42b7249662f +0 -0
  447. data/test/dummy/tmp/cache/assets/D6E/AD0/sprockets%2F4441be9946083b61e75f7bf1a1cca5cf +0 -0
  448. data/test/dummy/tmp/cache/assets/D73/3F0/sprockets%2F09b4a9c1131740eba5d85fcf9c86b97a +0 -0
  449. data/test/dummy/tmp/cache/assets/D76/030/sprockets%2F7e8689ec6a9f3754a4aa660e303cbf4a +0 -0
  450. data/test/dummy/tmp/cache/assets/D76/C80/sprockets%2F952307811ad5e9e8b540cf5e9cf08cea +0 -0
  451. data/test/dummy/tmp/cache/assets/D76/CA0/sprockets%2F797920cdabaf2f8431968a34c2cbae79 +0 -0
  452. data/test/dummy/tmp/cache/assets/D77/B70/sprockets%2Fa02f64f352cfa69d33983fd15e8ea3d7 +0 -0
  453. data/test/dummy/tmp/cache/assets/D77/FF0/sprockets%2F126c2e2ca6f5e8477c9525f46cdba7d5 +0 -0
  454. data/test/dummy/tmp/cache/assets/D79/2F0/sprockets%2F4b9fd617fe0d6c7e5eb934a139507e3d +0 -0
  455. data/test/dummy/tmp/cache/assets/D79/E80/sprockets%2F7d329345d1b9f914c87fc5e07ea9ab4b +0 -0
  456. data/test/dummy/tmp/cache/assets/D7A/5C0/sprockets%2F6e2b202ee971a68c1e78eddf5658e53a +0 -0
  457. data/test/dummy/tmp/cache/assets/D7A/8C0/sprockets%2Fc477a2d0aa5d658fd7294d6f6c5a484e +0 -0
  458. data/test/dummy/tmp/cache/assets/D7C/160/sprockets%2F6847e66cdafb094701f479a515ede5dd +0 -0
  459. data/test/dummy/tmp/cache/assets/D7C/750/sprockets%2F1f76d236fdf42a817bd84da719fde069 +0 -0
  460. data/test/dummy/tmp/cache/assets/D7C/B90/sprockets%2Fc89b5af12387ee80ca80e3f2ac776c79 +0 -0
  461. data/test/dummy/tmp/cache/assets/D7E/2A0/sprockets%2F1ce479f9423e748690a75abbabf8af84 +0 -0
  462. data/test/dummy/tmp/cache/assets/D7F/A60/sprockets%2F5c683951503f673cceffa6ba76f38b8d +0 -0
  463. data/test/dummy/tmp/cache/assets/D81/120/sprockets%2F75c7f18e61fa042b776ce2e5c3ff786f +0 -0
  464. data/test/dummy/tmp/cache/assets/D82/560/sprockets%2Fcb5875caef3f569f08878b13cdd991a2 +0 -0
  465. data/test/dummy/tmp/cache/assets/D84/0A0/sprockets%2F07fc0bfe2237a171b813aa147f3ced1a +0 -0
  466. data/test/dummy/tmp/cache/assets/D85/050/sprockets%2Fa9b35663e7dc78eacde8d84ae3599163 +0 -0
  467. data/test/dummy/tmp/cache/assets/D85/5A0/sprockets%2Fc2cbee1b5160e0e8b022933feb36ea30 +0 -0
  468. data/test/dummy/tmp/cache/assets/D87/6D0/sprockets%2F51df69aad9a6f892254deb9d4c1992f8 +0 -0
  469. data/test/dummy/tmp/cache/assets/D88/1B0/sprockets%2Fb5bb04fc812b607ce046a4b702be4c4f +0 -0
  470. data/test/dummy/tmp/cache/assets/D88/7E0/sprockets%2Fe9fedb2c5be893a15939dc65f684196b +0 -0
  471. data/test/dummy/tmp/cache/assets/D8A/2C0/sprockets%2F6ec8da0142f240ce8a7e0b46aea363c1 +0 -0
  472. data/test/dummy/tmp/cache/assets/D8A/370/sprockets%2Fb4600d72a29aba7a39c2ec58aa04f18b +0 -0
  473. data/test/dummy/tmp/cache/assets/D8A/B90/sprockets%2F7506f75d60f93f9e8405ffb9cf85ddb2 +0 -0
  474. data/test/dummy/tmp/cache/assets/D8A/BF0/sprockets%2F1967ce66d464496a6fab44ff8be55ef6 +0 -0
  475. data/test/dummy/tmp/cache/assets/D8C/9C0/sprockets%2F2e7c2cd86215800a37c4d4b1bf0bea5f +0 -0
  476. data/test/dummy/tmp/cache/assets/D8E/910/sprockets%2Fbbf8e4c05ca721c1cd18c17902256ade +0 -0
  477. data/test/dummy/tmp/cache/assets/D8F/C40/sprockets%2Fa76260381aff4aa0c8beea0404e95de2 +0 -0
  478. data/test/dummy/tmp/cache/assets/D93/3B0/sprockets%2Fd0fb3bdcf317425a433a125c986b3dff +0 -0
  479. data/test/dummy/tmp/cache/assets/D94/1A0/sprockets%2Fb4748c092e8a4c127bcfacb06cdc2735 +0 -0
  480. data/test/dummy/tmp/cache/assets/D94/AD0/sprockets%2Fa1ac4bf342006e1f98def10cf9d7d234 +0 -0
  481. data/test/dummy/tmp/cache/assets/D95/430/sprockets%2Fcf054ac65aa2c4b72d661fc32c898aa5 +0 -0
  482. data/test/dummy/tmp/cache/assets/D96/C10/sprockets%2F620f6865aeb0de3c5cf8b305b13c7cb7 +0 -0
  483. data/test/dummy/tmp/cache/assets/D97/2B0/sprockets%2F16a899a4b20af5f53cdd2870e1b0aed8 +0 -0
  484. data/test/dummy/tmp/cache/assets/D97/4C0/sprockets%2F4d4aea86610bc9652c70455a6beafc4d +0 -0
  485. data/test/dummy/tmp/cache/assets/D99/330/sprockets%2Ff01679ca9c88dd0a3eb6922b0b8f3bc0 +0 -0
  486. data/test/dummy/tmp/cache/assets/D99/B10/sprockets%2F4aa8fece5b18d820a44dc266a89d50e0 +0 -0
  487. data/test/dummy/tmp/cache/assets/D99/CD0/sprockets%2Ffe0c5f4b8b52baa0f91870da12599a6d +0 -0
  488. data/test/dummy/tmp/cache/assets/D9D/170/sprockets%2F37f702f1f3ad35b9022fc87fdce7de02 +0 -0
  489. data/test/dummy/tmp/cache/assets/D9E/C90/sprockets%2F9cd75b38f1c1f85bbdac2576ca9106b5 +0 -0
  490. data/test/dummy/tmp/cache/assets/D9F/6F0/sprockets%2Fff261c15e6b97bf57e372f0de1ad571a +0 -0
  491. data/test/dummy/tmp/cache/assets/D9F/800/sprockets%2F5c722d8150c68e6eacad70fb64e5e1f5 +0 -0
  492. data/test/dummy/tmp/cache/assets/DA0/1B0/sprockets%2F71e2cd8803aac9fb0bb4c47593cf17e8 +0 -0
  493. data/test/dummy/tmp/cache/assets/DA1/530/sprockets%2F88a8bb9debb752ba06f07909db83e02d +0 -0
  494. data/test/dummy/tmp/cache/assets/DA3/9F0/sprockets%2F5122955dfe6694bdc6b69cbea09d2cd1 +0 -0
  495. data/test/dummy/tmp/cache/assets/DA4/450/sprockets%2F6f2bd50f9f1551ed8e00fd8b84f37c2c +0 -0
  496. data/test/dummy/tmp/cache/assets/DA5/0E0/sprockets%2Fe61590dc98f1e532ea20e296c5fce7bd +0 -0
  497. data/test/dummy/tmp/cache/assets/DA6/FC0/sprockets%2F900ed66847c0ec1eff94ad75fc26f11e +0 -0
  498. data/test/dummy/tmp/cache/assets/DAB/B00/sprockets%2F5286678a74e7bcc66e0d3c7c7d2db5fb +0 -0
  499. data/test/dummy/tmp/cache/assets/DAD/810/sprockets%2Fcfb7db145b0d0a3010f5d0cd7a08fb15 +0 -0
  500. data/test/dummy/tmp/cache/assets/DAE/A40/sprockets%2F7fefa2cd6e72f17c926159c9b7c3a95a +0 -0
  501. data/test/dummy/tmp/cache/assets/DB0/BF0/sprockets%2F52e4cdf37aa489ff6c138dedf036588d +0 -0
  502. data/test/dummy/tmp/cache/assets/DB1/C80/sprockets%2Fa2d1a10a3cc780fd30127b2be96ddfa2 +0 -0
  503. data/test/dummy/tmp/cache/assets/DB2/850/sprockets%2F9d6e12a0e28cc9ded4e859613cf75f6e +0 -0
  504. data/test/dummy/tmp/cache/assets/DB6/710/sprockets%2Ff53e9d96ae4808ad0f9e09ab4ef78f80 +0 -0
  505. data/test/dummy/tmp/cache/assets/DBA/7F0/sprockets%2F4f7fd7b68b8bc29c67fa996e37eaf512 +0 -0
  506. data/test/dummy/tmp/cache/assets/DBD/080/sprockets%2F039ace5986a3cbf4cca0b0a753bc71a6 +0 -0
  507. data/test/dummy/tmp/cache/assets/DBE/210/sprockets%2Fa12ca5480c3e2b9cf44ab4ef32e813ec +0 -0
  508. data/test/dummy/tmp/cache/assets/DBE/DF0/sprockets%2F6d1f018e11ee2240a8dd1df920c6cddd +0 -0
  509. data/test/dummy/tmp/cache/assets/DC0/760/sprockets%2Fb7e4cf2efcf48d0dcc420131fd30d454 +0 -0
  510. data/test/dummy/tmp/cache/assets/DC1/C20/sprockets%2Fb60b7b3aeb56bd55b67183b6f151ecca +0 -0
  511. data/test/dummy/tmp/cache/assets/DC5/5F0/sprockets%2F9d4cc0ae7ac214bb22c7cf455d06b9c9 +0 -0
  512. data/test/dummy/tmp/cache/assets/DC5/660/sprockets%2F637431e1c8fffeaafc23f021bd49fa06 +0 -0
  513. data/test/dummy/tmp/cache/assets/DC6/7C0/sprockets%2Fb408df7a822c70a0924e0cdf6c8fe2ca +0 -0
  514. data/test/dummy/tmp/cache/assets/DC8/2F0/sprockets%2F15c5ad9491aa5ef9fe4aef6333fa12c0 +0 -0
  515. data/test/dummy/tmp/cache/assets/DC8/C70/sprockets%2Fbb5351434afe5616cbe7e4a6cea95a6b +0 -0
  516. data/test/dummy/tmp/cache/assets/DCC/F40/sprockets%2Fdc3342c548fc7d3c4f4e27732b5acfea +0 -0
  517. data/test/dummy/tmp/cache/assets/DCD/390/sprockets%2Fdcd461b67aec99b76eea270a9ad2c046 +0 -0
  518. data/test/dummy/tmp/cache/assets/DCD/730/sprockets%2Fe577d2f2df0ce1516b2bdfa9fe0909e0 +0 -0
  519. data/test/dummy/tmp/cache/assets/DCD/8D0/sprockets%2Fbf36f09be83b4d0986ad23ea4d1f32df +0 -0
  520. data/test/dummy/tmp/cache/assets/DCE/1C0/sprockets%2F58cc5eb1cb2a47c8067c940caecf449d +0 -0
  521. data/test/dummy/tmp/cache/assets/DCE/BA0/sprockets%2F57c5ecddc82aa706b1e64691a8a5bcc9 +0 -0
  522. data/test/dummy/tmp/cache/assets/DCF/4A0/sprockets%2F3efd01a56bae3ae99fd13085f75b9e0d +0 -0
  523. data/test/dummy/tmp/cache/assets/DD1/4A0/sprockets%2Fd1fd81d46b69d255ebc7ab7f3f96a03a +0 -0
  524. data/test/dummy/tmp/cache/assets/DD2/380/sprockets%2F7972dab64d4a2a8007c3ecfd887ace4e +0 -0
  525. data/test/dummy/tmp/cache/assets/DD2/D90/sprockets%2Facc08ab37871b8576bfcb992aedaf228 +0 -0
  526. data/test/dummy/tmp/cache/assets/DD3/FE0/sprockets%2Fd19b0f09a29f8558a8d1f5cfc02acec9 +0 -0
  527. data/test/dummy/tmp/cache/assets/DD8/5C0/sprockets%2F9dd7bcb46a4b58ee446353a9cdaf93f2 +0 -0
  528. data/test/dummy/tmp/cache/assets/DD9/AA0/sprockets%2Ff96cdb075b4fc5b6eabb92832f6ad758 +0 -0
  529. data/test/dummy/tmp/cache/assets/DD9/F90/sprockets%2Ff09bdb745c8fa4987aa1ffcd6370c94b +0 -0
  530. data/test/dummy/tmp/cache/assets/DDB/140/sprockets%2F7815fdf1a6a74db4fca71ff6537ced67 +0 -0
  531. data/test/dummy/tmp/cache/assets/DDD/E10/sprockets%2Fd7292f5eb3a7b1f583efbf05aef567d9 +0 -0
  532. data/test/dummy/tmp/cache/assets/DDE/C00/sprockets%2Ffb5947d8ea5a7d6c08c71b3c9d7a88cb +0 -0
  533. data/test/dummy/tmp/cache/assets/DE7/3B0/sprockets%2F55fc91edc7ee6e5f818993cbddb6b707 +0 -0
  534. data/test/dummy/tmp/cache/assets/DE7/550/sprockets%2Ffff04b0980f1fbe9ece54cd8ca779867 +0 -0
  535. data/test/dummy/tmp/cache/assets/DE8/980/sprockets%2Fea9daa72d1acd0886cc064d0ea6c4a30 +0 -0
  536. data/test/dummy/tmp/cache/assets/DEF/140/sprockets%2F0182a5cba9d2df2eabb3783cf53a1ea9 +0 -0
  537. data/test/dummy/tmp/cache/assets/DF5/0C0/sprockets%2Faf8105cfdb7ceae04b099c4a2f654ce1 +0 -0
  538. data/test/dummy/tmp/cache/assets/DF5/4D0/sprockets%2Fa1a06ee61db75c3c0bed4caad288789b +0 -0
  539. data/test/dummy/tmp/cache/assets/DF7/110/sprockets%2F0654cdd8dfa5adb61e2029fefe5f50c0 +0 -0
  540. data/test/dummy/tmp/cache/assets/DF7/D40/sprockets%2F38cdcfc274accc45023affa7be98350c +0 -0
  541. data/test/dummy/tmp/cache/assets/DF8/570/sprockets%2Fd956ef1a15caba08edb2fc63c569f20d +0 -0
  542. data/test/dummy/tmp/cache/assets/DFB/E90/sprockets%2Ff7bd5fbb19ef32fc5a396d8012fac3f0 +0 -0
  543. data/test/dummy/tmp/cache/assets/DFC/9D0/sprockets%2F38fd8e0a2fde3b853f2a24571cd2dfdd +0 -0
  544. data/test/dummy/tmp/cache/assets/DFE/3C0/sprockets%2Fe7c824dbbee345aa5a66a56ebe82a29e +0 -0
  545. data/test/dummy/tmp/cache/assets/DFF/560/sprockets%2F5c1cedb5538de9d0c4dc9fdb62554fa1 +0 -0
  546. data/test/dummy/tmp/cache/assets/E02/B00/sprockets%2F723ccdfbeacf6c4176de34f371c91af9 +0 -0
  547. data/test/dummy/tmp/cache/assets/E02/DA0/sprockets%2F9829dec75de6c2a52fdc20d428d2edae +0 -0
  548. data/test/dummy/tmp/cache/assets/E04/860/sprockets%2F972757dbdbdfabfeac8ecb8a15520793 +0 -0
  549. data/test/dummy/tmp/cache/assets/E05/A70/sprockets%2F7a4daf48a8b7fba4f7bd770048b37fbf +0 -0
  550. data/test/dummy/tmp/cache/assets/E07/5B0/sprockets%2F75fdbfc0584a9cb9dda6428a66dec4b5 +0 -0
  551. data/test/dummy/tmp/cache/assets/E0C/810/sprockets%2Fe74897a12cedd8efea5a559354bd5bfc +0 -0
  552. data/test/dummy/tmp/cache/assets/E0F/B40/sprockets%2Ff5dfabed7f563e53d4735ef9c4b7a0e9 +0 -0
  553. data/test/dummy/tmp/cache/assets/E11/400/sprockets%2Ff6a9c23ee9f2ed728efa077ea66dfb55 +0 -0
  554. data/test/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449 +0 -0
  555. data/test/dummy/tmp/cache/assets/E11/C70/sprockets%2Fe5ad970d57c66489f9eebacb8e3a5ae5 +0 -0
  556. data/test/dummy/tmp/cache/assets/E13/B10/sprockets%2Fafbb0a11dcbf1c86ee74a1f22f2c173a +0 -0
  557. data/test/dummy/tmp/cache/assets/E14/0B0/sprockets%2F8bffda6f68fc139ee329bc86f6b7d2f1 +0 -0
  558. data/test/dummy/tmp/cache/assets/E1E/DE0/sprockets%2F84b3baefc2c0a8c2c9c0a92eacc3557b +0 -0
  559. data/test/dummy/tmp/cache/assets/E1F/5E0/sprockets%2Fedacf71afed14b1da329d30fcaf84091 +0 -0
  560. data/test/dummy/tmp/cache/assets/E21/330/sprockets%2F816aead61cd3e240f2bbe1e78da1fdb7 +0 -0
  561. data/test/dummy/tmp/cache/assets/E27/540/sprockets%2F3507970b2c1ccbf7b6bc37d61efadfeb +0 -0
  562. data/test/dummy/tmp/cache/assets/E2A/030/sprockets%2Fc8ab33fc707f5fb9b8befd27b142b3cb +0 -0
  563. data/test/dummy/tmp/cache/assets/E2C/EA0/sprockets%2Fcb15d5ff97502cc7dfe8a2e06ab16efb +0 -0
  564. data/test/dummy/tmp/cache/assets/E2F/3D0/sprockets%2Ff740ae8eecbaedadc3c664c62b83e925 +0 -0
  565. data/test/dummy/tmp/cache/assets/E30/C50/sprockets%2Fdaad6c4c7b1429f8de49d81fac6ad18b +0 -0
  566. data/test/dummy/tmp/cache/assets/E32/FD0/sprockets%2Fce7d29b07b2f0d14ef1add992dfafa89 +0 -0
  567. data/test/dummy/tmp/cache/assets/E36/230/sprockets%2F56aec75c7f17ef3509d4cadcf2e6fc3d +0 -0
  568. data/test/dummy/tmp/cache/assets/E37/6B0/sprockets%2Fce49aa1fbe8185b07e78cf9b9eee22ab +0 -0
  569. data/test/dummy/tmp/cache/assets/E3B/DD0/sprockets%2F8cb9fef1ee4f6bcbb80758f5c675db1a +0 -0
  570. data/test/dummy/tmp/cache/assets/E3C/680/sprockets%2Fd057ba99f8cc7b032da8ed9e8c0dff7c +0 -0
  571. data/test/dummy/tmp/cache/assets/E3E/270/sprockets%2F426e7ee1f8aeb990a55fdf8d6eefbd04 +0 -0
  572. data/test/dummy/tmp/cache/assets/E54/0F0/sprockets%2Fddbe86c2b19c9b2c5d0bca8e248a1fcb +0 -0
  573. data/test/dummy/tmp/cache/assets/E83/3A0/sprockets%2Ffdb5f7dc3aba4ce1edb8fd4bd1b42923 +0 -0
  574. data/test/dummy/tmp/cache/assets/E89/BE0/sprockets%2F9bfc41fee1adbc5e0ab3e58eafb550f9 +0 -0
  575. data/test/dummy/tmp/cache/assets/E93/2E0/sprockets%2Fba1eb3cc84f5e1fd789bf5f61a8ecdbc +0 -0
  576. metadata +90 -24
  577. data/app/assets/javascripts/Core/computeSunPosition.js +0 -116
  578. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +0 -125
  579. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +0 -350
  580. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +0 -511
  581. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +0 -448
  582. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +0 -19
  583. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +0 -886
  584. data/app/assets/javascripts/Shaders/Noise.glsl +0 -453
  585. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +0 -6
  586. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +0 -30
  587. data/app/assets/javascripts/Shaders/Ray.glsl +0 -532
  588. data/app/assets/javascripts/Widgets/Animation/darker.css +0 -69
  589. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +0 -4
  590. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +0 -348
  591. data/app/assets/javascripts/Widgets/Fullscreen/darker.css +0 -14
  592. data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +0 -18
  593. data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +0 -18
  594. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  595. data/app/assets/javascripts/Widgets/Timeline/darker.css +0 -20
  596. data/app/assets/javascripts/Workers/package.json +0 -6
@@ -7,6 +7,9 @@ define(['../Core/DeveloperError'], function(DeveloperError) {
7
7
  *
8
8
  * @alias DrawCommand
9
9
  * @constructor
10
+ *
11
+ * @see ClearCommand
12
+ * @see PassState
10
13
  */
11
14
  var DrawCommand = function() {
12
15
  /**
@@ -15,6 +18,15 @@ define(['../Core/DeveloperError'], function(DeveloperError) {
15
18
  */
16
19
  this.boundingVolume = undefined;
17
20
 
21
+ /**
22
+ * When <code>true</code>, the renderer frustum and horizon culls the command based on its {@link DrawCommand#boundingVolume}.
23
+ * If the command was already culled, set this to <code>false</code> for a performance improvement.
24
+ *
25
+ * @type Boolean
26
+ * @default true
27
+ */
28
+ this.cull = true;
29
+
18
30
  /**
19
31
  * The transformation from the geometry in model space to world space.
20
32
  * @type Matrix4
@@ -86,10 +98,10 @@ define(['../Core/DeveloperError'], function(DeveloperError) {
86
98
  * @memberof DrawCommand
87
99
  *
88
100
  * @param {Context} context The renderer context in which to draw.
89
- * @param {Framebuffer} [framebuffer] The framebuffer to which to draw if one is not specified by the command.
101
+ * @param {PassState} [passState] TBA.
90
102
  */
91
- DrawCommand.prototype.execute = function(context, framebuffer) {
92
- context.draw(this, framebuffer);
103
+ DrawCommand.prototype.execute = function(context, passState) {
104
+ context.draw(this, passState);
93
105
  };
94
106
 
95
107
  return DrawCommand;
@@ -0,0 +1,55 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * The state for a particular rendering pass. This is used to supplement the state
7
+ * in a command being executed.
8
+ *
9
+ * @alias PassState
10
+ * @constructor
11
+ *
12
+ * @see DrawCommand
13
+ * @see ClearCommand
14
+ */
15
+ var PassState = function(context) {
16
+ /**
17
+ * The context used to execute commands for this pass.
18
+ *
19
+ * @type Context
20
+ */
21
+ this.context = context;
22
+
23
+ /**
24
+ * The framebuffer to render to. This framebuffer is used unless a {@link DrawCommand}
25
+ * or {@link ClearCommand} explicitly define a framebuffer, which is used for off-screen
26
+ * rendering.
27
+ *
28
+ * @type Framebuffer
29
+ */
30
+ this.framebuffer = undefined;
31
+
32
+ /**
33
+ * When defined, this overrides the blending property of a {@link DrawCommand}'s render state.
34
+ * This is used to, for example, to allow the renderer to turn off blending during the picking pass.
35
+ * <p>
36
+ * When this is <code>undefined</code>, the {@link DrawCommand}'s property is used.
37
+ * </p>
38
+ *
39
+ * @type Boolean
40
+ * @default undefined
41
+ */
42
+ this.blendingEnabled = undefined;
43
+
44
+ /**
45
+ * When defined, this overrides the scissor test property of a {@link DrawCommand}'s render state.
46
+ * This is used to, for example, to allow the renderer to scissor out the pick region during the picking pass.
47
+ * <p>
48
+ * When this is <code>undefined</code>, the {@link DrawCommand}'s property is used.
49
+ * </p>
50
+ */
51
+ this.scissorTest = undefined;
52
+ };
53
+
54
+ return PassState;
55
+ });
@@ -4,84 +4,85 @@ define([
4
4
  '../Core/destroyObject',
5
5
  '../Core/Color',
6
6
  '../Core/DeveloperError',
7
+ '../Core/BoundingRectangle',
7
8
  './ClearCommand',
9
+ './PassState',
8
10
  './RenderbufferFormat'
9
11
  ], function(
10
12
  defaultValue,
11
13
  destroyObject,
12
14
  Color,
13
15
  DeveloperError,
16
+ BoundingRectangle,
14
17
  ClearCommand,
18
+ PassState,
15
19
  RenderbufferFormat) {
16
20
  "use strict";
17
21
 
18
22
  /**
19
- * DOC_TBA
20
- *
21
- * @alias PickFramebuffer
22
- * @internalConstructor
23
- *
24
- * @see Context#createPickFramebuffer
25
- * @see Context#pick
23
+ * @private
26
24
  */
27
25
  var PickFramebuffer = function(context) {
26
+ // Override per-command states
27
+ var passState = new PassState(context);
28
+ passState.blendingEnabled = false;
29
+ passState.scissorTest = {
30
+ enabled : true,
31
+ rectangle : new BoundingRectangle()
32
+ };
33
+
34
+ // Clear to black. Since this is the background color, no objects will be black
35
+ var command = new ClearCommand();
36
+ command.color = new Color(0.0, 0.0, 0.0, 0.0);
37
+ command.depth = 1.0;
38
+ command.stencil = 0;
39
+
28
40
  this._context = context;
29
- this._fb = null;
41
+ this._fb = undefined;
42
+ this._passState = passState;
30
43
  this._width = 0;
31
44
  this._height = 0;
32
-
33
- // Clear to black. Since this is the background color, no objects will be black
34
- this._clearCommand = new ClearCommand();
35
- this._clearCommand.clearState = context.createClearState({
36
- color : new Color(0.0, 0.0, 0.0, 1.0),
37
- depth : 1.0,
38
- stencil : 0
39
- });
45
+ this._clearCommand = command;
40
46
  };
41
47
 
42
- /**
43
- * DOC_TBA
44
- * @memberof PickFramebuffer
45
- */
46
- PickFramebuffer.prototype.begin = function() {
48
+ PickFramebuffer.prototype.begin = function(screenSpaceRectangle) {
47
49
  var context = this._context;
50
+ var width = context.getCanvas().clientWidth;
51
+ var height = context.getCanvas().clientHeight;
52
+
53
+ BoundingRectangle.clone(screenSpaceRectangle, this._passState.scissorTest.rectangle);
48
54
 
49
55
  // Initially create or recreate renderbuffers and framebuffer used for picking
50
- if (!this._fb ||
51
- (this._width !== context.getCanvas().clientWidth) ||
52
- (this._height !== context.getCanvas().clientHeight)) {
53
- this._width = context.getCanvas().clientWidth;
54
- this._height = context.getCanvas().clientHeight;
56
+ if ((typeof this._fb === 'undefined') || (this._width !== width) || (this._height !== height)) {
57
+ this._width = width;
58
+ this._height = height;
55
59
 
56
60
  this._fb = this._fb && this._fb.destroy();
57
61
  this._fb = context.createFramebuffer({
58
- colorRenderbuffer : context.createRenderbuffer(),
59
- depthStencilRenderbuffer : context.createRenderbuffer({
60
- format : RenderbufferFormat.DEPTH_STENCIL
62
+ colorTexture : context.createTexture2D({
63
+ width : width,
64
+ height : height
65
+ }),
66
+ depthRenderbuffer : context.createRenderbuffer({
67
+ format : RenderbufferFormat.DEPTH_COMPONENT16
61
68
  })
62
69
  });
70
+ this._passState.framebuffer = this._fb;
63
71
  }
64
72
 
65
- this._clearCommand.execute(context, this._fb);
73
+ this._clearCommand.execute(context, this._passState);
66
74
 
67
- return this._fb;
75
+ return this._passState;
68
76
  };
69
77
 
70
78
  var colorScratch = new Color();
71
79
 
72
- /**
73
- * DOC_TBA
74
- * @memberof PickFramebuffer
75
- */
76
80
  PickFramebuffer.prototype.end = function(screenSpaceRectangle) {
77
- if (typeof screenSpaceRectangle === 'undefined') {
78
- throw new DeveloperError('screenSpaceRectangle is required.');
79
- }
80
-
81
81
  var width = defaultValue(screenSpaceRectangle.width, 1.0);
82
82
  var height = defaultValue(screenSpaceRectangle.height, 1.0);
83
83
 
84
- var pixels = this._context.readPixels({
84
+ var context = this._context;
85
+ var pixels = context.readPixels({
85
86
  x : screenSpaceRectangle.x,
86
87
  y : screenSpaceRectangle.y,
87
88
  width : width,
@@ -108,18 +109,18 @@ define([
108
109
  if (-halfWidth <= x && x <= halfWidth && -halfHeight <= y && y <= halfHeight) {
109
110
  var index = 4 * ((halfHeight - y) * width + x + halfWidth);
110
111
 
111
- colorScratch.red = pixels[index];
112
- colorScratch.green = pixels[index + 1];
113
- colorScratch.blue = pixels[index + 2];
114
- colorScratch.alpha = pixels[index + 3];
112
+ colorScratch.red = Color.byteToFloat(pixels[index]);
113
+ colorScratch.green = Color.byteToFloat(pixels[index + 1]);
114
+ colorScratch.blue = Color.byteToFloat(pixels[index + 2]);
115
+ colorScratch.alpha = Color.byteToFloat(pixels[index + 3]);
115
116
 
116
- var object = this._context.getObjectByPickId(colorScratch);
117
+ var object = context.getObjectByPickColor(colorScratch);
117
118
  if (typeof object !== 'undefined') {
118
119
  return object;
119
120
  }
120
121
  }
121
122
 
122
- // if (top right || bottom left corners) || (top left corner) || (bottom right corner + (1, 0)
123
+ // if (top right || bottom left corners) || (top left corner) || (bottom right corner + (1, 0))
123
124
  // change spiral direction
124
125
  if (x === y || (x < 0 && -x === y) || (x > 0 && x === 1 - y)) {
125
126
  var temp = dx;
@@ -134,41 +135,10 @@ define([
134
135
  return undefined;
135
136
  };
136
137
 
137
- /**
138
- * Returns true if this object was destroyed; otherwise, false.
139
- * <br /><br />
140
- * If this object was destroyed, it should not be used; calling any function other than
141
- * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
142
- *
143
- * @memberof PickFramebuffer
144
- *
145
- * @return {Boolean} True if this object was destroyed; otherwise, false.
146
- *
147
- * @see PickFramebuffer#destroy
148
- */
149
138
  PickFramebuffer.prototype.isDestroyed = function() {
150
139
  return false;
151
140
  };
152
141
 
153
- /**
154
- * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
155
- * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
156
- * <br /><br />
157
- * Once an object is destroyed, it should not be used; calling any function other than
158
- * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
159
- * assign the return value (<code>undefined</code>) to the object as done in the example.
160
- *
161
- * @memberof PickFramebuffer
162
- *
163
- * @return {undefined}
164
- *
165
- * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
166
- *
167
- * @see PickFramebuffer#isDestroyed
168
- *
169
- * @example
170
- * PickFramebuffer = PickFramebuffer && PickFramebuffer.destroy();
171
- */
172
142
  PickFramebuffer.prototype.destroy = function() {
173
143
  this._fb = this._fb && this._fb.destroy();
174
144
  return destroyObject(this);
@@ -0,0 +1,541 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/Color',
4
+ '../Core/defaultValue',
5
+ '../Core/DeveloperError',
6
+ '../Core/BoundingRectangle',
7
+ '../Core/RuntimeError',
8
+ '../Core/WindingOrder',
9
+ './CullFace',
10
+ './DepthFunction',
11
+ './BlendEquation',
12
+ './BlendFunction',
13
+ './StencilFunction',
14
+ './StencilOperation'
15
+ ], function(
16
+ Color,
17
+ defaultValue,
18
+ DeveloperError,
19
+ BoundingRectangle,
20
+ RuntimeError,
21
+ WindingOrder,
22
+ CullFace,
23
+ DepthFunction,
24
+ BlendEquation,
25
+ BlendFunction,
26
+ StencilFunction,
27
+ StencilOperation) {
28
+ "use strict";
29
+
30
+ /**
31
+ * An immutable render state. Do not create this directly. See {@link Context#createRenderState}.
32
+ *
33
+ * @alias RenderState
34
+ * @internalConstructor
35
+ *
36
+ * @see Context#createRenderState
37
+ */
38
+ var RenderState = function(context, renderState) {
39
+ var rs = defaultValue(renderState, {});
40
+ var cull = defaultValue(rs.cull, {});
41
+ var polygonOffset = defaultValue(rs.polygonOffset, {});
42
+ var scissorTest = defaultValue(rs.scissorTest, {});
43
+ var scissorTestRectangle = defaultValue(scissorTest.rectangle, {});
44
+ var depthRange = defaultValue(rs.depthRange, {});
45
+ var depthTest = defaultValue(rs.depthTest, {});
46
+ var colorMask = defaultValue(rs.colorMask, {});
47
+ var blending = defaultValue(rs.blending, {});
48
+ var blendingColor = defaultValue(blending.color, {});
49
+ var stencilTest = defaultValue(rs.stencilTest, {});
50
+ var stencilTestFrontOperation = defaultValue(stencilTest.frontOperation, {});
51
+ var stencilTestBackOperation = defaultValue(stencilTest.backOperation, {});
52
+ var sampleCoverage = defaultValue(rs.sampleCoverage, {});
53
+ var viewport = rs.viewport;
54
+
55
+ this.frontFace = defaultValue(rs.frontFace, WindingOrder.COUNTER_CLOCKWISE);
56
+ this.cull = {
57
+ enabled : defaultValue(cull.enabled, false),
58
+ face : defaultValue(cull.face, CullFace.BACK)
59
+ };
60
+ this.lineWidth = defaultValue(rs.lineWidth, 1.0);
61
+ this.polygonOffset = {
62
+ enabled : defaultValue(polygonOffset.enabled, false),
63
+ factor : defaultValue(polygonOffset.factor, 0),
64
+ units : defaultValue(polygonOffset.units, 0)
65
+ };
66
+ this.scissorTest = {
67
+ enabled : defaultValue(scissorTest.enabled, false),
68
+ rectangle : BoundingRectangle.clone(scissorTestRectangle)
69
+ };
70
+ this.depthRange = {
71
+ near : defaultValue(depthRange.near, 0),
72
+ far : defaultValue(depthRange.far, 1)
73
+ };
74
+ this.depthTest = {
75
+ enabled : defaultValue(depthTest.enabled, false),
76
+ func : defaultValue(depthTest.func, DepthFunction.LESS) // func, because function is a JavaScript keyword
77
+ };
78
+ this.colorMask = {
79
+ red : defaultValue(colorMask.red, true),
80
+ green : defaultValue(colorMask.green, true),
81
+ blue : defaultValue(colorMask.blue, true),
82
+ alpha : defaultValue(colorMask.alpha, true)
83
+ };
84
+ this.depthMask = defaultValue(rs.depthMask, true);
85
+ this.stencilMask = defaultValue(rs.stencilMask, ~0);
86
+ this.blending = {
87
+ enabled : defaultValue(blending.enabled, false),
88
+ color : new Color(
89
+ defaultValue(blendingColor.red, 0.0),
90
+ defaultValue(blendingColor.green, 0.0),
91
+ defaultValue(blendingColor.blue, 0.0),
92
+ defaultValue(blendingColor.alpha, 0.0)
93
+ ),
94
+ equationRgb : defaultValue(blending.equationRgb, BlendEquation.ADD),
95
+ equationAlpha : defaultValue(blending.equationAlpha, BlendEquation.ADD),
96
+ functionSourceRgb : defaultValue(blending.functionSourceRgb, BlendFunction.ONE),
97
+ functionSourceAlpha : defaultValue(blending.functionSourceAlpha, BlendFunction.ONE),
98
+ functionDestinationRgb : defaultValue(blending.functionDestinationRgb, BlendFunction.ZERO),
99
+ functionDestinationAlpha : defaultValue(blending.functionDestinationAlpha, BlendFunction.ZERO)
100
+ };
101
+ this.stencilTest = {
102
+ enabled : defaultValue(stencilTest.enabled, false),
103
+ frontFunction : defaultValue(stencilTest.frontFunction, StencilFunction.ALWAYS),
104
+ backFunction : defaultValue(stencilTest.backFunction, StencilFunction.ALWAYS),
105
+ reference : defaultValue(stencilTest.reference, 0),
106
+ mask : defaultValue(stencilTest.mask, ~0),
107
+ frontOperation : {
108
+ fail : defaultValue(stencilTestFrontOperation.fail, StencilOperation.KEEP),
109
+ zFail : defaultValue(stencilTestFrontOperation.zFail, StencilOperation.KEEP),
110
+ zPass : defaultValue(stencilTestFrontOperation.zPass, StencilOperation.KEEP)
111
+ },
112
+ backOperation : {
113
+ fail : defaultValue(stencilTestBackOperation.fail, StencilOperation.KEEP),
114
+ zFail : defaultValue(stencilTestBackOperation.zFail, StencilOperation.KEEP),
115
+ zPass : defaultValue(stencilTestBackOperation.zPass, StencilOperation.KEEP)
116
+ }
117
+ };
118
+ this.sampleCoverage = {
119
+ enabled : defaultValue(sampleCoverage.enabled, false),
120
+ value : defaultValue(sampleCoverage.value, 1.0),
121
+ invert : defaultValue(sampleCoverage.invert, false)
122
+ };
123
+ this.dither = defaultValue(rs.dither, true);
124
+ this.viewport = (typeof viewport !== 'undefined') ? new BoundingRectangle(viewport.x, viewport.y,
125
+ (typeof viewport.width === 'undefined') ? context.getCanvas().clientWidth : viewport.width,
126
+ (typeof viewport.height === 'undefined') ? context.getCanvas().clientHeight : viewport.height) : undefined;
127
+
128
+ // Validate
129
+
130
+ if (!WindingOrder.validate(this.frontFace)) {
131
+ throw new DeveloperError('Invalid renderState.frontFace.');
132
+ }
133
+
134
+ if (!CullFace.validate(this.cull.face)) {
135
+ throw new DeveloperError('Invalid renderState.cull.face.');
136
+ }
137
+
138
+ if ((this.lineWidth < context.getMinimumAliasedLineWidth()) ||
139
+ (this.lineWidth > context.getMaximumAliasedLineWidth())) {
140
+ throw new RuntimeError('renderState.lineWidth is out of range. Check getMinimumAliasedLineWidth() and getMaximumAliasedLineWidth().');
141
+ }
142
+
143
+ if ((this.scissorTest.rectangle.width < 0) ||
144
+ (this.scissorTest.rectangle.height < 0)) {
145
+ throw new DeveloperError('renderState.scissorTest.rectangle.width and renderState.scissorTest.rectangle.height must be greater than or equal to zero.');
146
+ }
147
+
148
+ if (this.depthRange.near > this.depthRange.far) {
149
+ // WebGL specific - not an error in GL ES
150
+ throw new DeveloperError('renderState.depthRange.near can not be greater than renderState.depthRange.far.');
151
+ }
152
+
153
+ if (this.depthRange.near < 0) {
154
+ // Would be clamped by GL
155
+ throw new DeveloperError('renderState.depthRange.near must be greater than or equal to zero.');
156
+ }
157
+
158
+ if (this.depthRange.far > 1) {
159
+ // Would be clamped by GL
160
+ throw new DeveloperError('renderState.depthRange.far must be less than or equal to one.');
161
+ }
162
+
163
+ if (!DepthFunction.validate(this.depthTest.func)) {
164
+ throw new DeveloperError('Invalid renderState.depthTest.func.');
165
+ }
166
+
167
+ if ((this.blending.color.red < 0.0) || (this.blending.color.red > 1.0) ||
168
+ (this.blending.color.green < 0.0) || (this.blending.color.green > 1.0) ||
169
+ (this.blending.color.blue < 0.0) || (this.blending.color.blue > 1.0) ||
170
+ (this.blending.color.alpha < 0.0) || (this.blending.color.alpha > 1.0)) {
171
+ // Would be clamped by GL
172
+ throw new DeveloperError('renderState.blending.color components must be greater than or equal to zero and less than or equal to one.');
173
+ }
174
+
175
+ if (!BlendEquation.validate(this.blending.equationRgb)) {
176
+ throw new DeveloperError('Invalid renderState.blending.equationRgb.');
177
+ }
178
+
179
+ if (!BlendEquation.validate(this.blending.equationAlpha)) {
180
+ throw new DeveloperError('Invalid renderState.blending.equationAlpha.');
181
+ }
182
+
183
+ if (!BlendFunction.validate(this.blending.functionSourceRgb)) {
184
+ throw new DeveloperError('Invalid renderState.blending.functionSourceRgb.');
185
+ }
186
+
187
+ if (!BlendFunction.validate(this.blending.functionSourceAlpha)) {
188
+ throw new DeveloperError('Invalid renderState.blending.functionSourceAlpha.');
189
+ }
190
+
191
+ if (!BlendFunction.validate(this.blending.functionDestinationRgb)) {
192
+ throw new DeveloperError('Invalid renderState.blending.functionDestinationRgb.');
193
+ }
194
+
195
+ if (!BlendFunction.validate(this.blending.functionDestinationAlpha)) {
196
+ throw new DeveloperError('Invalid renderState.blending.functionDestinationAlpha.');
197
+ }
198
+
199
+ if (!StencilFunction.validate(this.stencilTest.frontFunction)) {
200
+ throw new DeveloperError('Invalid renderState.stencilTest.frontFunction.');
201
+ }
202
+
203
+ if (!StencilFunction.validate(this.stencilTest.backFunction)) {
204
+ throw new DeveloperError('Invalid renderState.stencilTest.backFunction.');
205
+ }
206
+
207
+ if (!StencilOperation.validate(this.stencilTest.frontOperation.fail)) {
208
+ throw new DeveloperError('Invalid renderState.stencilTest.frontOperation.fail.');
209
+ }
210
+
211
+ if (!StencilOperation.validate(this.stencilTest.frontOperation.zFail)) {
212
+ throw new DeveloperError('Invalid renderState.stencilTest.frontOperation.zFail.');
213
+ }
214
+
215
+ if (!StencilOperation.validate(this.stencilTest.frontOperation.zPass)) {
216
+ throw new DeveloperError('Invalid renderState.stencilTest.frontOperation.zPass.');
217
+ }
218
+
219
+ if (!StencilOperation.validate(this.stencilTest.backOperation.fail)) {
220
+ throw new DeveloperError('Invalid renderState.stencilTest.backOperation.fail.');
221
+ }
222
+
223
+ if (!StencilOperation.validate(this.stencilTest.backOperation.zFail)) {
224
+ throw new DeveloperError('Invalid renderState.stencilTest.backOperation.zFail.');
225
+ }
226
+
227
+ if (!StencilOperation.validate(this.stencilTest.backOperation.zPass)) {
228
+ throw new DeveloperError('Invalid renderState.stencilTest.backOperation.zPass.');
229
+ }
230
+
231
+ if (typeof this.viewport !== 'undefined') {
232
+ if (this.viewport.width < 0) {
233
+ throw new DeveloperError('renderState.viewport.width must be greater than or equal to zero.');
234
+ }
235
+
236
+ if (this.viewport.width > context.getMaximumViewportWidth()) {
237
+ throw new RuntimeError('renderState.viewport.width must be less than or equal to the maximum viewport width (' + this.getMaximumViewportWidth().toString() + '). Check getMaximumViewportWidth().');
238
+ }
239
+
240
+ if (this.viewport.height < 0) {
241
+ throw new DeveloperError('renderState.viewport.height must be greater than or equal to zero.');
242
+ }
243
+
244
+ if (this.viewport.height > context.getMaximumViewportHeight()) {
245
+ throw new RuntimeError('renderState.viewport.height must be less than or equal to the maximum viewport height (' + this.getMaximumViewportHeight().toString() + '). Check getMaximumViewportHeight().');
246
+ }
247
+ }
248
+
249
+ this.id = 0;
250
+ this._applyFunctions = [];
251
+ };
252
+
253
+ function enableOrDisable(gl, glEnum, enable) {
254
+ if (enable) {
255
+ gl.enable(glEnum);
256
+ } else {
257
+ gl.disable(glEnum);
258
+ }
259
+ }
260
+
261
+ function applyFrontFace(gl, renderState) {
262
+ gl.frontFace(renderState.frontFace);
263
+ }
264
+
265
+ function applyCull(gl, renderState) {
266
+ var cull = renderState.cull;
267
+ var enabled = cull.enabled;
268
+
269
+ enableOrDisable(gl, gl.CULL_FACE, enabled);
270
+
271
+ if (enabled) {
272
+ gl.cullFace(cull.face);
273
+ }
274
+ }
275
+
276
+ function applyLineWidth(gl, renderState) {
277
+ gl.lineWidth(renderState.lineWidth);
278
+ }
279
+
280
+ function applyPolygonOffset(gl, renderState) {
281
+ var polygonOffset = renderState.polygonOffset;
282
+ var enabled = polygonOffset.enabled;
283
+
284
+ enableOrDisable(gl, gl.POLYGON_OFFSET_FILL, enabled);
285
+
286
+ if (enabled) {
287
+ gl.polygonOffset(polygonOffset.factor, polygonOffset.units);
288
+ }
289
+ }
290
+
291
+ function applyScissorTest(gl, renderState, passState) {
292
+ var scissorTest = renderState.scissorTest;
293
+ var enabled = (typeof passState.scissorTest !== 'undefined') ? passState.scissorTest.enabled : scissorTest.enabled;
294
+
295
+ enableOrDisable(gl, gl.SCISSOR_TEST, enabled);
296
+
297
+ if (enabled) {
298
+ var rectangle = (typeof passState.scissorTest !== 'undefined') ? passState.scissorTest.rectangle : scissorTest.rectangle;
299
+ gl.scissor(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
300
+ }
301
+ }
302
+
303
+ function applyDepthRange(gl, renderState) {
304
+ var depthRange = renderState.depthRange;
305
+ gl.depthRange(depthRange.near, depthRange.far);
306
+ }
307
+
308
+ function applyDepthTest(gl, renderState) {
309
+ var depthTest = renderState.depthTest;
310
+ var enabled = depthTest.enabled;
311
+
312
+ enableOrDisable(gl, gl.DEPTH_TEST, enabled);
313
+
314
+ if (enabled) {
315
+ gl.depthFunc(depthTest.func);
316
+ }
317
+ }
318
+
319
+ function applyColorMask(gl, renderState) {
320
+ var colorMask = renderState.colorMask;
321
+ gl.colorMask(colorMask.red, colorMask.green, colorMask.blue, colorMask.alpha);
322
+ }
323
+
324
+ function applyDepthMask(gl, renderState) {
325
+ gl.depthMask(renderState.depthMask);
326
+ }
327
+
328
+ function applyStencilMask(gl, renderState) {
329
+ gl.stencilMask(renderState.stencilMask);
330
+ }
331
+
332
+ function applyBlending(gl, renderState, passState) {
333
+ var blending = renderState.blending;
334
+ var enabled = (typeof passState.blendingEnabled !== 'undefined') ? passState.blendingEnabled : blending.enabled;
335
+
336
+ enableOrDisable(gl, gl.BLEND, enabled);
337
+
338
+ if (enabled) {
339
+ var color = blending.color;
340
+ var equationRgb = blending.equationRgb;
341
+ var equationAlpha = blending.equationAlpha;
342
+ var functionSourceRgb = blending.functionSourceRgb;
343
+ var functionDestinationRgb = blending.functionDestinationRgb;
344
+ var functionSourceAlpha = blending.functionSourceAlpha;
345
+ var functionDestinationAlpha = blending.functionDestinationAlpha;
346
+
347
+ gl.blendColor(color.red, color.green, color.blue, color.alpha);
348
+ gl.blendEquationSeparate(equationRgb, equationAlpha);
349
+ gl.blendFuncSeparate(functionSourceRgb, functionDestinationRgb, functionSourceAlpha, functionDestinationAlpha);
350
+ }
351
+ }
352
+
353
+ function applyStencilTest(gl, renderState) {
354
+ var stencilTest = renderState.stencilTest;
355
+ var enabled = stencilTest.enabled;
356
+
357
+ enableOrDisable(gl, gl.STENCIL_TEST, enabled);
358
+
359
+ if (enabled) {
360
+ var frontFunction = stencilTest.frontFunction;
361
+ var backFunction = stencilTest.backFunction;
362
+ var reference = stencilTest.reference;
363
+ var mask = stencilTest.mask;
364
+
365
+ // Section 6.8 of the WebGL spec requires the reference and masks to be the same for
366
+ // front- and back-face tests. This call prevents invalid operation errors when calling
367
+ // stencilFuncSeparate on Firefox. Perhaps they should delay validation to avoid requiring this.
368
+ gl.stencilFunc(stencilTest.frontFunction, stencilTest.reference, stencilTest.mask);
369
+ gl.stencilFuncSeparate(gl.BACK, backFunction, reference, mask);
370
+ gl.stencilFuncSeparate(gl.FRONT, frontFunction, reference, mask);
371
+
372
+ var frontOperation = stencilTest.frontOperation;
373
+ var frontOperationFail = frontOperation.fail;
374
+ var frontOperationZFail = frontOperation.zFail;
375
+ var frontOperationZPass = frontOperation.zPass;
376
+
377
+ gl.stencilOpSeparate(gl.FRONT, frontOperationFail, frontOperationZFail, frontOperationZPass);
378
+
379
+ var backOperation = stencilTest.backOperation;
380
+ var backOperationFail = backOperation.fail;
381
+ var backOperationZFail = backOperation.zFail;
382
+ var backOperationZPass = backOperation.zPass;
383
+
384
+ gl.stencilOpSeparate(gl.BACK, backOperationFail, backOperationZFail, backOperationZPass);
385
+ }
386
+ }
387
+
388
+ function applySampleCoverage(gl, renderState) {
389
+ var sampleCoverage = renderState.sampleCoverage;
390
+ var enabled = sampleCoverage.enabled;
391
+
392
+ enableOrDisable(gl, gl.SAMPLE_COVERAGE, enabled);
393
+
394
+ if (enabled) {
395
+ gl.sampleCoverage(sampleCoverage.value, sampleCoverage.invert);
396
+ }
397
+ }
398
+
399
+ function applyDither(gl, renderState) {
400
+ enableOrDisable(gl, gl.DITHER, renderState.dither);
401
+ }
402
+
403
+ var scratchViewport = new BoundingRectangle();
404
+ function applyViewport(gl, renderState, passState) {
405
+ var viewport = renderState.viewport;
406
+
407
+ if (typeof viewport === 'undefined') {
408
+ var canvas = passState.context.getCanvas();
409
+ viewport = scratchViewport;
410
+ viewport.width = canvas.clientWidth;
411
+ viewport.height = canvas.clientHeight;
412
+ }
413
+
414
+ passState.context.getUniformState().setViewport(viewport);
415
+ gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
416
+ }
417
+
418
+ /**
419
+ * @private
420
+ */
421
+ RenderState.apply = function(gl, renderState, passState) {
422
+ applyFrontFace(gl, renderState);
423
+ applyCull(gl, renderState);
424
+ applyLineWidth(gl, renderState);
425
+ applyPolygonOffset(gl, renderState);
426
+ applyScissorTest(gl, renderState, passState);
427
+ applyDepthRange(gl, renderState);
428
+ applyDepthTest(gl, renderState);
429
+ applyColorMask(gl, renderState);
430
+ applyDepthMask(gl, renderState);
431
+ applyStencilMask(gl, renderState);
432
+ applyBlending(gl, renderState, passState);
433
+ applyStencilTest(gl, renderState);
434
+ applySampleCoverage(gl, renderState);
435
+ applyDither(gl, renderState);
436
+ applyViewport(gl, renderState, passState);
437
+ };
438
+
439
+ function createFuncs(previousState, nextState) {
440
+ var funcs = [];
441
+
442
+ if (previousState.frontFace !== nextState.frontFace) {
443
+ funcs.push(applyFrontFace);
444
+ }
445
+
446
+ if ((previousState.cull.enabled !== nextState.cull.enabled) || (previousState.cull.face !== nextState.cull.face)) {
447
+ funcs.push(applyCull);
448
+ }
449
+
450
+ if (previousState.lineWidth !== nextState.lineWidth) {
451
+ funcs.push(applyLineWidth);
452
+ }
453
+
454
+ if ((previousState.polygonOffset.enabled !== nextState.polygonOffset.enabled) ||
455
+ (previousState.polygonOffset.factor !== nextState.polygonOffset.factor) ||
456
+ (previousState.polygonOffset.units !== nextState.polygonOffset.units)) {
457
+ funcs.push(applyPolygonOffset);
458
+ }
459
+
460
+ // For now, always apply because of passState
461
+ funcs.push(applyScissorTest);
462
+
463
+ if ((previousState.depthRange.near !== nextState.depthRange.near) || (previousState.depthRange.far !== nextState.depthRange.far)) {
464
+ funcs.push(applyDepthRange);
465
+ }
466
+
467
+ if ((previousState.depthTest.enabled !== nextState.depthTest.enabled) || (previousState.depthTest.func !== nextState.depthTest.func)) {
468
+ funcs.push(applyDepthTest);
469
+ }
470
+
471
+ if ((previousState.colorMask.red !== nextState.colorMask.red) ||
472
+ (previousState.colorMask.green !== nextState.colorMask.green) ||
473
+ (previousState.colorMask.blue !== nextState.colorMask.blue) ||
474
+ (previousState.colorMask.alpha !== nextState.colorMask.alpha)) {
475
+ funcs.push(applyColorMask);
476
+ }
477
+
478
+ if (previousState.depthMask !== nextState.depthMask) {
479
+ funcs.push(applyDepthMask);
480
+ }
481
+
482
+ // For now, always apply because of passState
483
+ funcs.push(applyBlending);
484
+
485
+ if (previousState.stencilMask !== nextState.stencilMask) {
486
+ funcs.push(applyStencilMask);
487
+ }
488
+
489
+ if ((previousState.stencilTest.enabled !== nextState.stencilTest.enabled) ||
490
+ (previousState.stencilTest.frontFunction !== nextState.stencilTest.frontFunction) ||
491
+ (previousState.stencilTest.backFunction !== nextState.stencilTest.backFunction) ||
492
+ (previousState.stencilTest.reference !== nextState.stencilTest.reference) ||
493
+ (previousState.stencilTest.mask !== nextState.stencilTest.mask) ||
494
+ (previousState.stencilTest.frontOperation.fail !== nextState.stencilTest.frontOperation.fail) ||
495
+ (previousState.stencilTest.frontOperation.zFail !== nextState.stencilTest.frontOperation.zFail) ||
496
+ (previousState.stencilTest.backOperation.fail !== nextState.stencilTest.backOperation.fail) ||
497
+ (previousState.stencilTest.backOperation.zFail !== nextState.stencilTest.backOperation.zFail) ||
498
+ (previousState.stencilTest.backOperation.zPass !== nextState.stencilTest.backOperation.zPass)) {
499
+ funcs.push(applyStencilTest);
500
+ }
501
+
502
+ if ((previousState.sampleCoverage.enabled !== nextState.sampleCoverage.enabled) ||
503
+ (previousState.sampleCoverage.value !== nextState.sampleCoverage.value) ||
504
+ (previousState.sampleCoverage.invert !== nextState.sampleCoverage.invert)) {
505
+ funcs.push(applySampleCoverage);
506
+ }
507
+
508
+ if (previousState.dither !== nextState.dither) {
509
+ funcs.push(applyDither);
510
+ }
511
+
512
+ // For now, always apply because of passState
513
+ funcs.push(applyViewport);
514
+
515
+ return funcs;
516
+ }
517
+
518
+ /**
519
+ * @private
520
+ */
521
+ RenderState.partialApply = function(gl, previousState, nextState, passState) {
522
+ // When a new render state is applied, instead of making WebGL calls for all the states or first
523
+ // comparing the states one-by-one with the previous state (basically a linear search), we take
524
+ // advantage of RenderState's immutability, and store a dynamically populated sparse data structure
525
+ // containing functions that make the minimum number of WebGL calls when transitioning from one state
526
+ // to the other. In practice, this works well since state-to-state transitions generally only require a
527
+ // few WebGL calls, especially if commands are stored by state.
528
+ var funcs = nextState._applyFunctions[previousState.id];
529
+ if (typeof funcs === 'undefined') {
530
+ funcs = createFuncs(previousState, nextState);
531
+ nextState._applyFunctions[previousState.id] = funcs;
532
+ }
533
+
534
+ var len = funcs.length;
535
+ for (var i = 0; i < len; ++i) {
536
+ funcs[i](gl, nextState, passState);
537
+ }
538
+ };
539
+
540
+ return RenderState;
541
+ });