summaryrefslogtreecommitdiffstats
path: root/o3d/core
Commit message (Collapse)AuthorAgeFilesLines
* Guard against the plugin being deleted unexpectedly.kbr@google.com2010-06-161-0/+10
| | | | | | | | | BUG=none TEST=manually stress tested plugin creation and destruction Review URL: http://codereview.chromium.org/2848004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49869 0039d316-1c4b-4281-b951-d872f2087c98
* Prevent Client::Tick() from causing reentrancy in the plugin on Mac OS X.kbr@google.com2010-06-022-0/+12
| | | | | | | | | | | Tested with client application. BUG=none TEST=none Review URL: http://codereview.chromium.org/2451002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48770 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed bug in Core Graphics backend where it was falling through to thekbr@google.com2010-05-282-0/+9
| | | | | | | | | | | | | | AGL initialization code path in some situations, causing full-screen mode (at least) to break. Also fixed bug causing plugin to become reentrant during event dispatching. BUG=none TEST=none TBR=maf Review URL: http://codereview.chromium.org/2339002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48513 0039d316-1c4b-4281-b951-d872f2087c98
* In some circumstances the O3D plugin is briefly resized to zero height,kbr@google.com2010-05-281-1/+1
| | | | | | | | | | | | | | causing the Core Graphics rendering backend to request a zero-height render target. base::bits::Log2Ceiling returns -1 for a zero input which was being translated to a huge unsigned integer value, leading to an assertion failure. Verified with submitter's use case. BUG=none TEST=none Review URL: http://codereview.chromium.org/2377002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48507 0039d316-1c4b-4281-b951-d872f2087c98
* Implemented full-screen support for Core Graphics and Core Animationkbr@google.com2010-05-242-41/+87
| | | | | | | | | | | | | | | | | | | | | | rendering models using a top-level NSWindow and rendering to an NSOpenGLContext which shares resources with the CGLContextObj used to render into the plugin region. Synthesizes and dispatches NPCocoaEvents for the mouse, keyboard and focus change events received by the window. Exposed primitives needed to reset state in the OpenGL context and to switch the Renderer's notion of the context. Fixed bug in offscreen rendering support previously added in support of Core Graphics drawing model. Tested with full-screen sample and modified render-mode sample on Mac OS X 10.6 in Safari 4 and on Mac OS X 10.5 with a version of Chromium with the O3D blacklist entry removed. BUG=http://code.google.com/p/o3d/issues/detail?id=221 TEST=none Review URL: http://codereview.chromium.org/2095023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48076 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed crash on Mac OS X introduced inkbr@google.com2010-05-211-7/+8
| | | | | | | | | | | | | | | | http://codereview.chromium.org/1627007 / http://codereview.chromium.org/1527030 . Ensure the renderer is initialized before attempting to use it. Only enable new code path if actually uploading textures via IMC. Tested in Safari 4 on Mac OS X 10.6. BUG=none TEST=none Review URL: http://codereview.chromium.org/2103014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47924 0039d316-1c4b-4281-b951-d872f2087c98
* Axe the o3d_version.py script and turn it into a .gypi file. This fixes a ↵tschmelcher@chromium.org2010-05-061-4/+5
| | | | | | | | | | | | | bug where bumping the version wasn't always picked up by the build slaves because hooks are only re-run when a GYP file changes. Also axe the o3d_kill_version.py and the separate SDK version logic, which was not used anymore. TEST=built on Linux; trybots BUG=none Review URL: http://codereview.chromium.org/2017004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46609 0039d316-1c4b-4281-b951-d872f2087c98
* Flush GL errors before any operation that checks for GL errors afterwards, ↵tschmelcher@chromium.org2010-05-056-26/+71
| | | | | | | | | | | so as to prevent operations from spuriously failing due to previous unrelated errors. Fixes a bug on Linux T400s with AMD graphics where we "failed" to create the error texture because of a previous non-fatal error that hadn't been reaped. TEST=ran a debug build on a Linux T400 with AMD graphics BUG=none Review URL: http://codereview.chromium.org/1912001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46418 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed renderer_test.cc for GLES2.amarinichev@chromium.org2010-05-032-0/+11
| | | | | | Review URL: http://codereview.chromium.org/1830004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46268 0039d316-1c4b-4281-b951-d872f2087c98
* Pulled changes from issue 669220 to fix building with renderer=gles2.amarinichev@chromium.org2010-04-273-8/+10
| | | | | | Review URL: http://codereview.chromium.org/1741009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45723 0039d316-1c4b-4281-b951-d872f2087c98
* Implemented DX clipping rules to match CG version. Uses dx_clipping varying.amarinichev@chromium.org2010-04-204-2/+31
| | | | | | Review URL: http://codereview.chromium.org/1646016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45069 0039d316-1c4b-4281-b951-d872f2087c98
* Added --convert-dds-to-png command line option to the COLLADA converter,kbr@google.com2010-04-202-0/+20
| | | | | | | | | | | | | | | | | | | which causes all DDS textures to be outputted as PNGs. This required changes to the serialization code to reconstitute cube map textures from six separate images. Some bugs in the plugin were uncovered with this change which have been worked around for the time being. Pulled in libtxc_dxtn library for decompressing DXTn textures. Tested by converting teapot with --convert-dds-to-png and running helloworld.html and render-mode.html. BUG=none TEST=none Review URL: http://codereview.chromium.org/1677002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45014 0039d316-1c4b-4281-b951-d872f2087c98
* Use the correct target when binding a cubemap texture.amarinichev@chromium.org2010-04-151-1/+1
| | | | | | Review URL: http://codereview.chromium.org/1530042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44665 0039d316-1c4b-4281-b951-d872f2087c98
* Send bool response on message SET_MAX_FPSzhurunz@google.com2010-04-143-8/+1
| | | | | | | | Enable build flag O3D_PLUGIN_SUPPORT_SET_MAX_FPS Review URL: http://codereview.chromium.org/1527030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44550 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed stream-attribute matching. Autoconverted teapot shader works ↵amarinichev@chromium.org2010-04-132-8/+8
| | | | | | | | correctly now. Review URL: http://codereview.chromium.org/1599025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44391 0039d316-1c4b-4281-b951-d872f2087c98
* Build fixes for case when fullscreen message is disabled, for IMC codekbr@chromium.org2010-04-081-1/+2
| | | | | | | | | | | path, and for effect.js docs. BUG=none TEST=none (built O3D on Mac) Review URL: http://codereview.chromium.org/1512029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43995 0039d316-1c4b-4281-b951-d872f2087c98
* Add a new message to allow draw on every new texture within given fps ↵tschmelcher@chromium.org2010-04-087-4/+107
| | | | | | | | | limitation. Submitting on behalf of zhurunz. Original issue @ http://codereview.chromium.org/1627007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43978 0039d316-1c4b-4281-b951-d872f2087c98
* Added support for O3D in Chrome on Mac OS X using CoreGraphics drawingkbr@chromium.org2010-03-1111-30/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | model by rendering offscreen, reading back the frame buffer, and drawing the rendering results into the CGContextRef. This code path is currently Chrome-specific, but could be used for any browser with similar characteristics. This will require refactoring of the drawing and event model selection code, which may be done in a subsequent bug. Changed the RenderSurface APIs to allow the Bitmap for readback to be passed in. Added Client::SetOffscreenRenderingSurfaces so that the entry point Client::RenderClient() can be used unchanged. Fixed problem with plugin_enable_fullscreen_msg gyp variable which needs to be in top-level gypi so #define is consistent throughout project. Fixed minor issue in Cocoa key event handling. Fixed log message causing crashes when render target attachment fails. Chrome currently blacklists the O3D plugin's MIME type, so to enable support for O3D this blacklist entry needs to be removed from Chrome. Ran nearly all O3D samples in Chrome on Mac OS X. There are a couple of failures which will be fixed in subsequent bugs. Also ran samples in Safari and Firefox on Mac and verified no performance regressions. BUG=http://code.google.com/p/o3d/issues/detail?id=215 TEST=ran O3D samples in Chrome, Safari and Firefox Review URL: http://codereview.chromium.org/669220 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41233 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce two new GYP variables:tschmelcher@chromium.org2010-03-053-2/+35
| | | | | | | | | | | | | 1) plugin_domain_whitelist, which sets an optional domain whitelist. If specified, websites not in the list can't use the plugin. 2) plugin_enable_fullscreen_msg, which can be optionally unset to disable the Win/Mac fullscreen message. Also fix a bug in NPPluginProxy that this uncovered. TEST=built on Windows with a whitelist and without fullscreen message and verified correct behaviour in both IE and FF. Also, the whitelist logic comes almost verbatim from another Google product where it is already well-tested BUG=none Review URL: http://codereview.chromium.org/668078 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40786 0039d316-1c4b-4281-b951-d872f2087c98
* When an o3d window does not belong to any monitor (off screen), instead of ↵zmo@google.com2010-03-011-7/+1
| | | | | | | | failing, use the default monitor/adapter instead. Review URL: http://codereview.chromium.org/661300 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40311 0039d316-1c4b-4281-b951-d872f2087c98
* Incorporating change missed in previous CLkbr@chromium.org2010-02-271-2/+2
| | | | | | | | (http://codereview.chromium.org/652016). Review URL: http://codereview.chromium.org/661232 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40191 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed uninitialized variables breaking Linux build after checkin ofkbr@google.com2010-02-261-3/+3
| | | | | | | | | | | | http://codereview.chromium.org/652016 . BUG=none TEST=built and tested on Linux TBR=gman Review URL: http://codereview.chromium.org/661143 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40084 0039d316-1c4b-4281-b951-d872f2087c98
* Added the bulk of the algorithm for GPU accelerated 2D vector curvekbr@chromium.org2010-02-2611-22/+2052
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rendering from "Rendering Vector Art on the GPU" by Loop and Blinn, GPU Gems 3, Chapter 25. The main entry point to the algorithm is the PathProcessor, which takes in a Skia path and converts it to two triangle meshes: one for the exterior region of the shape containing the curve segments, and one for the interior region of the shape which is filled with constant (1.0) alpha. The o3d.ProcessedPath class is the internal object which exposes the needed entry points to JavaScript. However, o3djs.gpu2d is the user-level entry point to the algorithm. This exposes a Path primitive to which line, quadratic curve and cubic curve segments can be added, and simple fills (currently only a solid color). An SVG loader in samples/gpu2d/svgloader.js illustrates how content might be imported at run time. Several samples and regression tests demonstrate the current state of the implementation. More work is planned. Some small generalizations to the O3D code were necessary to support two-dimensional vertices. Note that I plan to submit gpu2d.js and/or svgloader.js for JavaScript readability. I have run both through the JS compiler and have fixed as many of the doc generation errors as possible in svgloader.js without pulling this file into the o3djs namespace. Tested in O3D on Windows and Mac OS X. BUG=none TEST=various SVG based tests Review URL: http://codereview.chromium.org/652016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40079 0039d316-1c4b-4281-b951-d872f2087c98
* Requesting C++ readability review for these classes and unit tests.kbr@chromium.org2010-02-196-107/+102
| | | | | | | | | | | | | The arena allocator is designed for optimized allocation and deallocation of small temporary objects, and is used by the augmentable red-black tree. In a subsequent checkin, the red-black tree will be augmented into an interval tree, which is a key data structure for efficient implementation of one of the algorithms in the forthcoming code in this directory. Review URL: http://codereview.chromium.org/596093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39414 0039d316-1c4b-4281-b951-d872f2087c98
* Added a specialized triangulator which creates triangles filling thekbr@chromium.org2010-02-196-0/+808
| | | | | | | | | | | | | | convex hull of the four control points of a cubic curve segment. It also computes a path along the filled side of the curve segment, which will be used to fill the interior region of closed shapes with a general tessellation algorithm. BUG=none TEST=LocalTriangulatorTest Review URL: http://codereview.chromium.org/646048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39413 0039d316-1c4b-4281-b951-d872f2087c98
* Added computation of three-dimensional texture coordinates for thekbr@chromium.org2010-02-183-0/+289
| | | | | | | | | | | | | | | | control points of cubic curves. It's difficult if not impossible to write a unit test for this part of the algorithm, since the texture coordinates aren't precisely defined for any particular inputs. The forthcoming system tests will exercise these code paths. BUG=none TEST=none Review URL: http://codereview.chromium.org/647041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39386 0039d316-1c4b-4281-b951-d872f2087c98
* Added classifier which determines the type of a cubic curve input.kbr@chromium.org2010-02-185-0/+419
| | | | | | | | | | | | Its output will be used by the forthcoming texture coordinate generator. BUG=none TEST=CubicClassifierTest Review URL: http://codereview.chromium.org/626015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39373 0039d316-1c4b-4281-b951-d872f2087c98
* Added interval tree data structure and unit tests. This is built onkbr@chromium.org2010-02-173-0/+498
| | | | | | | | | the red/black tree and is a key data structure in one of the forthcoming algorithms in this code. Review URL: http://codereview.chromium.org/594048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39284 0039d316-1c4b-4281-b951-d872f2087c98
* Re-applying patch from http://codereview.chromium.org/606005 .zmo@google.com2010-02-161-0/+8
| | | | | | | | Already reviewed by Vangelis. Review URL: http://codereview.chromium.org/609006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39114 0039d316-1c4b-4281-b951-d872f2087c98
* Reverting files back to known good state. Will re-applyzmo@google.com2010-02-161-219/+109
| | | | | | | | | | http://codereview.chromium.org/606005 afterward. TBR=vangelis Review URL: http://codereview.chromium.org/609005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39113 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the software renderer "soft" fullscreen mode using the wrong monitor bug.zmo@google.com2010-02-161-109/+219
| | | | | | Review URL: http://codereview.chromium.org/606005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39107 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed broken Linux build by changing Counter helper class used bykbr@google.com2010-02-121-21/+21
| | | | | | | | | | NumElements() from a local class to a nested class as Gregg suggested in http://codereview.chromium.org/574024 . Changed this class to use DISALLOW_COPY_AND_ASSIGN. Review URL: http://codereview.chromium.org/606025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38923 0039d316-1c4b-4281-b951-d872f2087c98
* Added an arena allocator and an augmentable red-black tree whichkbr@chromium.org2010-02-127-0/+1449
| | | | | | | | | | | | | allocates its temporary objects from it. In a subsequent checkin, the red-black tree will be augmented into an interval tree, which is a key data structure for efficient implementation of one of the algorithms in the forthcoming code in this directory. I plan to submit this for C++ readability following code review. Review URL: http://codereview.chromium.org/574024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38908 0039d316-1c4b-4281-b951-d872f2087c98
* O3D initialized to the monitor/adapter where the window is on.zmo@google.com2010-02-112-22/+79
| | | | | | Review URL: http://codereview.chromium.org/593031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38819 0039d316-1c4b-4281-b951-d872f2087c98
* linux: native OpenGL ES supportpiman@google.com2010-02-0810-98/+520
| | | | | | | | | This includes Gregg's CL 548023 There are still a few hard-coded paths, and issues to solve, but hellocube-textures-glsl is running on an actual device. Review URL: http://codereview.chromium.org/572029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38385 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed build problem on Mac OS X 10.6. precompile.h is inferred by namekbr@chromium.org2010-02-051-0/+2
| | | | | | | | | | | | to be a C file, but it includes C++ headers like <vector> and <algorithm>. In order for the compiler to find these headers it was necessary to force it to treat this as a C++ header. This fix was determined to be necessary on multiple machines running Xcode 3.2.1. It has also been tested on 10.5 with no ill effects. Review URL: http://codereview.chromium.org/572026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38235 0039d316-1c4b-4281-b951-d872f2087c98
* linux: add an option to disable FBO support for platforms that don't have it.piman@google.com2010-02-013-3/+21
| | | | | | Review URL: http://codereview.chromium.org/551218 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37737 0039d316-1c4b-4281-b951-d872f2087c98
* linux: fixes for the glsl rendererpiman@google.com2010-01-295-10/+11
| | | | | | Review URL: http://codereview.chromium.org/549203 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37552 0039d316-1c4b-4281-b951-d872f2087c98
* win: fix DXSDK include path, needs to be after platform sdk include pathpiman@google.com2010-01-281-1/+1
| | | | | | Review URL: http://codereview.chromium.org/554110 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37384 0039d316-1c4b-4281-b951-d872f2087c98
* This change removes CG from O3D and uses GLSLgman@chromium.org2010-01-0819-1158/+839
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of HLSL. The current "hack" for shaders is that the shader string you supply to Effect::LoadFromFXString requires the lines // #o3d SplitMarker \n" Above which is the vertex shader and below which is the fragment shader. Since GLSL has no semantics the names are used for semantics so to get an automatically supplied worldViewProjection you must name the uniform worldViewProjection as in uniform mat4 worldViewProjection Similarly for attributes (vertex streams) you must name them to match O3D semantics as in attribute vec4 texcoord1 attribute vec3 normal etc. Included in this is one working sample in o3d/samples/hellocube-glsl.html Other things: Added a glsl field to clientInfo so that a program can check if it needs to supply GLSL or HLSL. eg client.clientInfo.glsl == true Updated the O3D libraries to store that info in o3djs.base.glsl so that the libaries can be modified to supply GLSL if we want. Note: To run this on windows you must copy glew32.dll and glut32.dll to <AppData>...\Mozilla\plugins To get this to actually work in GLES2 will require (*) renaming a few functions (*) telling O3D there is no NPOT support or if possible no NPOT support unless the texture has only 1 level. (*) removing LargeGeometry and FloatingPointTexture support. (*) Making it link with the GLES2 code Review URL: http://codereview.chromium.org/527028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35845 0039d316-1c4b-4281-b951-d872f2087c98
* Rename all GLES2 classes from ___GL to ___GLES2gman@chromium.org2009-12-1723-724/+761
| | | | | | Review URL: http://codereview.chromium.org/500086 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34801 0039d316-1c4b-4281-b951-d872f2087c98
* Step 1 in Adding GLES2 renderer to O3D.gman@google.com2009-12-1628-0/+6747
| | | | | | | | | | | | | | | | | | | | | This step does only copies the GL files to a GLES2 folder. It's still actually the GL renderer at this point but it's the smallest step for getting something that builds and a place to start working. The next step will be to rename all the classes from xxxGL to xxxGLES2 At some point CG will be removed as well One other thing slipped in there. A standalone build path to help generate a C++ only example of using O3D. It's currently only a placeholder. Review URL: http://codereview.chromium.org/500070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34744 0039d316-1c4b-4281-b951-d872f2087c98
* linux: enabling fontspiman@chromium.org2009-12-102-30/+4
| | | | | | | | 'Cause, guess what, they work now. Review URL: http://codereview.chromium.org/492001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34274 0039d316-1c4b-4281-b951-d872f2087c98
* Check that texture being bound is not the currentgman@chromium.org2009-12-082-0/+15
| | | | | | | | render surface. Review URL: http://codereview.chromium.org/469011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34033 0039d316-1c4b-4281-b951-d872f2087c98
* Deleted gpu process and command buffer code from O3D tree. Now resides in ↵apatrick@google.com2009-11-2522-4537/+0
| | | | | | | | Chrome tree at src/gpu. Review URL: http://codereview.chromium.org/442013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33115 0039d316-1c4b-4281-b951-d872f2087c98
* Removed O3D command buffer protocol code and O3D comand buffer configuration.apatrick@google.com2009-11-203-43/+0
| | | | | | Review URL: http://codereview.chromium.org/415004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32576 0039d316-1c4b-4281-b951-d872f2087c98
* Renamed CommandBuffer to CommandBufferServer and extracted CommandBuffer ↵apatrick@google.com2009-11-164-56/+36
| | | | | | | | | | | | | interface. Moved np_utils classes into new np_utils namespace. Removed some of the command_buffer dependencies on NPAPI. CommandBuffer(Server) is no longer an NPObject. Review URL: http://codereview.chromium.org/387063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32119 0039d316-1c4b-4281-b951-d872f2087c98
* Missed some files that should have been in 31811.apatrick@google.com2009-11-121-141/+141
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31813 0039d316-1c4b-4281-b951-d872f2087c98
* Made all line endings consistently LF and added svn:eol-style=LF property to ↵apatrick@google.com2009-11-126-929/+929
| | | | | | | | | | | | | | | | | | | | | | | | | | files with these names / extensions. c cc h mm txt idl py js html css gyp gypi xml shader json htm README DEPS git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31811 0039d316-1c4b-4281-b951-d872f2087c98
* Recomitting 31676 with fix.apatrick@google.com2009-11-1120-48/+48
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31692 0039d316-1c4b-4281-b951-d872f2087c98