--User changes

-Add new preset dimensions to the right click menu of the width and height fields in the editor.
-Change QSS stylesheets to properly handle tabs.
-Make tabs rectangular by default. For some reason, they had always been triangular.

--Bug fixes
 -Incremental rendering times in the editor were wrong.

--Code changes
 -Migrate to Qt6. There is probably more work to be done here.
-Migrate to VS2022.
-Migrate to Wix 4 installer.
-Change installer to install to program files for all users.
-Fix many VS2022 code analysis warnings.
-No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
-Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
-No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT too.
-Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.

This has not been verified on Linux or Mac yet.
This commit is contained in:
Person 2023-04-25 17:59:54 -06:00
parent 64d4470b12
commit 1dfbd4eff2
306 changed files with 514515 additions and 491207 deletions

View File

@ -1,67 +1,67 @@
*.user
*.opensdf
*.sdf
*.suo
*.obj
*.tlog
*.def
*.dll
*.manifest
*.exp
*.lastbuildstate
*.lib
*.log
*.map
*.pdb
*.cache
*.res
*.ipch
*.bsc
*.exe
*.xml
!./Data/flam3-palettes.xml
*.ilk
*.wixobj
*.pch
*.txt
*.msi
*.idb
*.flam3
*moc_*
*GeneratedFiles*
*.unsuccessfulbuild
*\Obj\*
Builds/MSVC/VS2013/Obj/x64/Debug/EmberCL_manifest.rc
Builds/MSVC/VS2013/Obj/EmberTester/x64/Debug/EmberTester_manifest.rc
Builds/MSVC/VS2013/Obj/EmberRender/x64/Debug/EmberRender_manifest.rc
Builds/MSVC/VS2013/Obj/EmberGenome/x64/Debug/EmberGenome_manifest.rc
Builds/MSVC/VS2013/Obj/EmberAnimate/x64/Debug/EmberAnimate_manifest.rc
Builds/MSVC/VS2013/Obj/Ember/x64/Debug/Ember_manifest.rc
Builds/MSVC/Installer/obj/
Bin/x64/Release/testallvarsout.flame
Data/~$Bench.xlsx
*.ps1
*.o
ui_*.h
qrc_*.cpp
Bin/x64/Release/Bench.flame
Builds/QtCreator/build*
.qmake.stash
*.gch
debug/
release/
Bin/
Makefile
Builds/QtCreator/.obj/
Builds/QtCreator/.moc/
Builds/QtCreator/.qrc/
Builds/QtCreator/.ui/
Builds/QtCreator/Ember/Makefile
Builds/QtCreator/EmberAnimate/Makefile
Builds/QtCreator/EmberCL/Makefile
Builds/QtCreator/EmberGenome/Makefile
Builds/QtCreator/EmberRender/Makefile
Builds/QtCreator/Fractorium/Makefile
Builds/lib/libOpenCL.so
Builds/include/CL
Builds/include/GL
*.user
*.opensdf
*.sdf
*.suo
*.obj
*.tlog
*.def
*.dll
*.manifest
*.exp
*.lastbuildstate
*.lib
*.log
*.map
*.pdb
*.cache
*.res
*.ipch
*.bsc
*.exe
*.xml
!./Data/flam3-palettes.xml
*.ilk
*.wixobj
*.pch
*.txt
*.msi
*.idb
*.flam3
*moc_*
*GeneratedFiles*
*.unsuccessfulbuild
*\Obj\*
Builds/MSVC/VS2013/Obj/x64/Debug/EmberCL_manifest.rc
Builds/MSVC/VS2013/Obj/EmberTester/x64/Debug/EmberTester_manifest.rc
Builds/MSVC/VS2013/Obj/EmberRender/x64/Debug/EmberRender_manifest.rc
Builds/MSVC/VS2013/Obj/EmberGenome/x64/Debug/EmberGenome_manifest.rc
Builds/MSVC/VS2013/Obj/EmberAnimate/x64/Debug/EmberAnimate_manifest.rc
Builds/MSVC/VS2013/Obj/Ember/x64/Debug/Ember_manifest.rc
Builds/MSVC/Installer/obj/
Bin/x64/Release/testallvarsout.flame
Data/~$Bench.xlsx
*.ps1
*.o
ui_*.h
qrc_*.cpp
Bin/x64/Release/Bench.flame
Builds/QtCreator/build*
.qmake.stash
*.gch
debug/
release/
Bin/
Makefile
Builds/QtCreator/.obj/
Builds/QtCreator/.moc/
Builds/QtCreator/.qrc/
Builds/QtCreator/.ui/
Builds/QtCreator/Ember/Makefile
Builds/QtCreator/EmberAnimate/Makefile
Builds/QtCreator/EmberCL/Makefile
Builds/QtCreator/EmberGenome/Makefile
Builds/QtCreator/EmberRender/Makefile
Builds/QtCreator/Fractorium/Makefile
Builds/lib/libOpenCL.so
Builds/include/CL
Builds/include/GL

522
.gitignore vendored
View File

@ -1,261 +1,261 @@
*.user
*.opensdf
*.sdf
*.suo
*.obj
*.tlog
*.def
*.dll
*.manifest
*.exp
*.lastbuildstate
*.lib
*.log
*.map
*.pdb
*.cache
*.res
*.ipch
*.bsc
*.exe
*.ilk
*.wixobj
*.pch
*.txt
*.msi
*.idb
*.bmp
*.jpg
*.zip
*.avi
*.ini
*.bin
*.aps
*.db
*.opendb
*moc_*
*GeneratedFiles*
*.unsuccessfulbuild
*~*
*-pre1
Makefile.Debug
Makefile.Release
*\Obj\*
Builds/MSVC/VS2013/Obj/x64/Debug/EmberCL_manifest.rc
Builds/MSVC/VS2013/Obj/EmberTester/x64/Debug/EmberTester_manifest.rc
Builds/MSVC/VS2013/Obj/EmberRender/x64/Debug/EmberRender_manifest.rc
Builds/MSVC/VS2013/Obj/EmberGenome/x64/Debug/EmberGenome_manifest.rc
Builds/MSVC/VS2013/Obj/EmberAnimate/x64/Debug/EmberAnimate_manifest.rc
Builds/MSVC/VS2013/Obj/Ember/x64/Debug/Ember_manifest.rc
Builds/MSVC/Installer/obj/
Builds/MSVC/VS2015/GeneratedFiles
Builds/MSVC/VS2015/ipch
Builds/MSVC/VS2015/Obj
Bin/x64/Release/testallvarsout.flame
fractorium.com/
Site/
Data/*.png
/Data/Variations Bench.xlsx
*.o
ui_*.h
qrc_*.cpp
Bin/x64/Release/Bench.flame
Builds/QtCreator/build*
.qmake.stash
*.gch
debug/
release/
Bin/
Makefile
Builds/QtCreator/.obj/
Builds/QtCreator/.moc/
Builds/QtCreator/.qrc/
Builds/QtCreator/.ui/
Builds/QtCreator/Ember/Makefile
Builds/QtCreator/EmberAnimate/Makefile
Builds/QtCreator/EmberCL/Makefile
Builds/QtCreator/EmberGenome/Makefile
Builds/QtCreator/EmberRender/Makefile
Builds/QtCreator/Fractorium/Makefile
Builds/lib/libOpenCL.so
Builds/include/CL
Builds/include/GL
/Builds/QtCreator/EmberCL/EmberCL.pro.user.18
/Builds/QtCreator/Ember/Ember.pro.user.18
/Builds/QtCreator/Fractorium/Fractorium.pro.user.18
/Builds/MSVC/VS2013/flam3-palettes.xml
/Builds/MSVC/VS2015/flam3-palettes.xml
*.dmg
/Deps/include/OpenEXR/OpenEXRConfig.h
/Deps/include/OpenEXR/ImfXdr.h
/Deps/include/OpenEXR/ImfWav.h
/Deps/include/OpenEXR/ImfVersion.h
/Deps/include/OpenEXR/ImfVecAttribute.h
/Deps/include/OpenEXR/ImfTimeCodeAttribute.h
/Deps/include/OpenEXR/ImfTimeCode.h
/Deps/include/OpenEXR/ImfTiledRgbaFile.h
/Deps/include/OpenEXR/ImfTiledOutputPart.h
/Deps/include/OpenEXR/ImfTiledOutputFile.h
/Deps/include/OpenEXR/ImfTiledInputPart.h
/Deps/include/OpenEXR/ImfTiledInputFile.h
/Deps/include/OpenEXR/ImfTileDescriptionAttribute.h
/Deps/include/OpenEXR/ImfTileDescription.h
/Deps/include/OpenEXR/ImfThreading.h
/Deps/include/OpenEXR/ImfTestFile.h
/Deps/include/OpenEXR/ImfStringVectorAttribute.h
/Deps/include/OpenEXR/ImfStringAttribute.h
/Deps/include/OpenEXR/ImfStandardAttributes.h
/Deps/include/OpenEXR/ImfSampleCountChannel.h
/Deps/include/OpenEXR/ImfRgbaYca.h
/Deps/include/OpenEXR/ImfRgbaFile.h
/Deps/include/OpenEXR/ImfRgba.h
/Deps/include/OpenEXR/ImfRationalAttribute.h
/Deps/include/OpenEXR/ImfRational.h
/Deps/include/OpenEXR/ImfPreviewImageAttribute.h
/Deps/include/OpenEXR/ImfPreviewImage.h
/Deps/include/OpenEXR/ImfPixelType.h
/Deps/include/OpenEXR/ImfPartType.h
/Deps/include/OpenEXR/ImfPartHelper.h
/Deps/include/OpenEXR/ImfOutputPart.h
/Deps/include/OpenEXR/ImfOutputFile.h
/Deps/include/OpenEXR/ImfOpaqueAttribute.h
/Deps/include/OpenEXR/ImfNamespace.h
/Deps/include/OpenEXR/ImfName.h
/Deps/include/OpenEXR/ImfMultiView.h
/Deps/include/OpenEXR/ImfMultiPartOutputFile.h
/Deps/include/OpenEXR/ImfMultiPartInputFile.h
/Deps/include/OpenEXR/ImfMisc.h
/Deps/include/OpenEXR/ImfMatrixAttribute.h
/Deps/include/OpenEXR/ImfLut.h
/Deps/include/OpenEXR/ImfLineOrderAttribute.h
/Deps/include/OpenEXR/ImfLineOrder.h
/Deps/include/OpenEXR/ImfKeyCodeAttribute.h
/Deps/include/OpenEXR/ImfKeyCode.h
/Deps/include/OpenEXR/ImfIO.h
/Deps/include/OpenEXR/ImfIntAttribute.h
/Deps/include/OpenEXR/ImfInt64.h
/Deps/include/OpenEXR/ImfInputPart.h
/Deps/include/OpenEXR/ImfInputFile.h
/Deps/include/OpenEXR/ImfImageLevel.h
/Deps/include/OpenEXR/ImfImageIO.h
/Deps/include/OpenEXR/ImfImageDataWindow.h
/Deps/include/OpenEXR/ImfImageChannelRenaming.h
/Deps/include/OpenEXR/ImfImageChannel.h
/Deps/include/OpenEXR/ImfImage.h
/Deps/include/OpenEXR/ImfHuf.h
/Deps/include/OpenEXR/ImfHeader.h
/Deps/include/OpenEXR/ImfGenericOutputFile.h
/Deps/include/OpenEXR/ImfGenericInputFile.h
/Deps/include/OpenEXR/ImfFramesPerSecond.h
/Deps/include/OpenEXR/ImfFrameBuffer.h
/Deps/include/OpenEXR/ImfForward.h
/Deps/include/OpenEXR/ImfFloatVectorAttribute.h
/Deps/include/OpenEXR/ImfFloatAttribute.h
/Deps/include/OpenEXR/ImfFlatImageLevel.h
/Deps/include/OpenEXR/ImfFlatImageIO.h
/Deps/include/OpenEXR/ImfFlatImageChannel.h
/Deps/include/OpenEXR/ImfFlatImage.h
/Deps/include/OpenEXR/ImfExport.h
/Deps/include/OpenEXR/ImfEnvmapAttribute.h
/Deps/include/OpenEXR/ImfEnvmap.h
/Deps/include/OpenEXR/ImfDoubleAttribute.h
/Deps/include/OpenEXR/ImfDeepTiledOutputPart.h
/Deps/include/OpenEXR/ImfDeepTiledOutputFile.h
/Deps/include/OpenEXR/ImfDeepTiledInputPart.h
/Deps/include/OpenEXR/ImfDeepTiledInputFile.h
/Deps/include/OpenEXR/ImfDeepScanLineOutputPart.h
/Deps/include/OpenEXR/ImfDeepScanLineOutputFile.h
/Deps/include/OpenEXR/ImfDeepScanLineInputPart.h
/Deps/include/OpenEXR/ImfDeepScanLineInputFile.h
/Deps/include/OpenEXR/ImfDeepImageStateAttribute.h
/Deps/include/OpenEXR/ImfDeepImageState.h
/Deps/include/OpenEXR/ImfDeepImageLevel.h
/Deps/include/OpenEXR/ImfDeepImageIO.h
/Deps/include/OpenEXR/ImfDeepImageChannel.h
/Deps/include/OpenEXR/ImfDeepImage.h
/Deps/include/OpenEXR/ImfDeepFrameBuffer.h
/Deps/include/OpenEXR/ImfDeepCompositing.h
/Deps/include/OpenEXR/ImfCRgbaFile.h
/Deps/include/OpenEXR/ImfConvert.h
/Deps/include/OpenEXR/ImfCompressionAttribute.h
/Deps/include/OpenEXR/ImfCompression.h
/Deps/include/OpenEXR/ImfCompositeDeepScanLine.h
/Deps/include/OpenEXR/ImfChromaticitiesAttribute.h
/Deps/include/OpenEXR/ImfChromaticities.h
/Deps/include/OpenEXR/ImfChannelListAttribute.h
/Deps/include/OpenEXR/ImfChannelList.h
/Deps/include/OpenEXR/ImfBoxAttribute.h
/Deps/include/OpenEXR/ImfB44Compressor.h
/Deps/include/OpenEXR/ImfAttribute.h
/Deps/include/OpenEXR/ImfArray.h
/Deps/include/OpenEXR/ImfAcesFile.h
/Deps/include/OpenEXR/ImathVecAlgo.h
/Deps/include/OpenEXR/ImathVec.h
/Deps/include/OpenEXR/ImathSphere.h
/Deps/include/OpenEXR/ImathShear.h
/Deps/include/OpenEXR/ImathRoots.h
/Deps/include/OpenEXR/ImathRandom.h
/Deps/include/OpenEXR/ImathQuat.h
/Deps/include/OpenEXR/ImathPlatform.h
/Deps/include/OpenEXR/ImathPlane.h
/Deps/include/OpenEXR/ImathNamespace.h
/Deps/include/OpenEXR/ImathMatrixAlgo.h
/Deps/include/OpenEXR/ImathMatrix.h
/Deps/include/OpenEXR/ImathMath.h
/Deps/include/OpenEXR/ImathLineAlgo.h
/Deps/include/OpenEXR/ImathLine.h
/Deps/include/OpenEXR/ImathLimits.h
/Deps/include/OpenEXR/ImathInterval.h
/Deps/include/OpenEXR/ImathInt64.h
/Deps/include/OpenEXR/ImathHalfLimits.h
/Deps/include/OpenEXR/ImathGLU.h
/Deps/include/OpenEXR/ImathGL.h
/Deps/include/OpenEXR/ImathFun.h
/Deps/include/OpenEXR/ImathFrustumTest.h
/Deps/include/OpenEXR/ImathFrustum.h
/Deps/include/OpenEXR/ImathFrame.h
/Deps/include/OpenEXR/ImathForward.h
/Deps/include/OpenEXR/ImathExport.h
/Deps/include/OpenEXR/ImathExc.h
/Deps/include/OpenEXR/ImathEuler.h
/Deps/include/OpenEXR/ImathColorAlgo.h
/Deps/include/OpenEXR/ImathColor.h
/Deps/include/OpenEXR/ImathBoxAlgo.h
/Deps/include/OpenEXR/ImathBox.h
/Deps/include/OpenEXR/IlmThreadSemaphore.h
/Deps/include/OpenEXR/IlmThreadPool.h
/Deps/include/OpenEXR/IlmThreadNamespace.h
/Deps/include/OpenEXR/IlmThreadMutex.h
/Deps/include/OpenEXR/IlmThreadForward.h
/Deps/include/OpenEXR/IlmThreadExport.h
/Deps/include/OpenEXR/IlmThread.h
/Deps/include/OpenEXR/IlmBaseConfig.h
/Deps/include/OpenEXR/IexThrowErrnoExc.h
/Deps/include/OpenEXR/IexNamespace.h
/Deps/include/OpenEXR/IexMathIeeeExc.h
/Deps/include/OpenEXR/IexMathFpu.h
/Deps/include/OpenEXR/IexMathFloatExc.h
/Deps/include/OpenEXR/IexMathExc.h
/Deps/include/OpenEXR/IexMacros.h
/Deps/include/OpenEXR/IexForward.h
/Deps/include/OpenEXR/IexExport.h
/Deps/include/OpenEXR/IexErrnoExc.h
/Deps/include/OpenEXR/IexBaseExc.h
/Deps/include/OpenEXR/Iex.h
/Deps/include/OpenEXR/halfLimits.h
/Deps/include/OpenEXR/halfFunction.h
/Deps/include/OpenEXR/halfExport.h
/Deps/include/OpenEXR/half.h
/Builds/MSVC/VS2017/.vs/Fractorium/v15
/Source/Fractorium/Fractorium.ui.autosave
/main.pro.user.8f4f6a2
/Builds/MSVC/VS2017/flam3-palettes.xml
/Builds/MSVC/VS2017/UpgradeLog.htm
/Builds/MSVC/VS2017/zlib.props
*last.flame
/Source/Fractorium/Fractorium - Copy.ui
/.vs/slnx.sqlite
/Deps/Include/OpenEXR
/main.pro.user.294b646
/Deps/Include/Imath
/Builds/MSVC/Solution/.vs/Fractorium
*.user
*.opensdf
*.sdf
*.suo
*.obj
*.tlog
*.def
*.dll
*.manifest
*.exp
*.lastbuildstate
*.lib
*.log
*.map
*.pdb
*.cache
*.res
*.ipch
*.bsc
*.exe
*.ilk
*.wixobj
*.pch
*.txt
*.msi
*.idb
*.bmp
*.jpg
*.zip
*.avi
*.ini
*.bin
*.aps
*.db
*.opendb
*moc_*
*GeneratedFiles*
*.unsuccessfulbuild
*~*
*-pre1
Makefile.Debug
Makefile.Release
*\Obj\*
Builds/MSVC/VS2013/Obj/x64/Debug/EmberCL_manifest.rc
Builds/MSVC/VS2013/Obj/EmberTester/x64/Debug/EmberTester_manifest.rc
Builds/MSVC/VS2013/Obj/EmberRender/x64/Debug/EmberRender_manifest.rc
Builds/MSVC/VS2013/Obj/EmberGenome/x64/Debug/EmberGenome_manifest.rc
Builds/MSVC/VS2013/Obj/EmberAnimate/x64/Debug/EmberAnimate_manifest.rc
Builds/MSVC/VS2013/Obj/Ember/x64/Debug/Ember_manifest.rc
Builds/MSVC/Installer/obj/
Builds/MSVC/VS2015/GeneratedFiles
Builds/MSVC/VS2015/ipch
Builds/MSVC/VS2015/Obj
Bin/x64/Release/testallvarsout.flame
fractorium.com/
Site/
Data/*.png
/Data/Variations Bench.xlsx
*.o
ui_*.h
qrc_*.cpp
Bin/x64/Release/Bench.flame
Builds/QtCreator/build*
.qmake.stash
*.gch
debug/
release/
Bin/
Makefile
Builds/QtCreator/.obj/
Builds/QtCreator/.moc/
Builds/QtCreator/.qrc/
Builds/QtCreator/.ui/
Builds/QtCreator/Ember/Makefile
Builds/QtCreator/EmberAnimate/Makefile
Builds/QtCreator/EmberCL/Makefile
Builds/QtCreator/EmberGenome/Makefile
Builds/QtCreator/EmberRender/Makefile
Builds/QtCreator/Fractorium/Makefile
Builds/lib/libOpenCL.so
Builds/include/CL
Builds/include/GL
/Builds/QtCreator/EmberCL/EmberCL.pro.user.18
/Builds/QtCreator/Ember/Ember.pro.user.18
/Builds/QtCreator/Fractorium/Fractorium.pro.user.18
/Builds/MSVC/VS2013/flam3-palettes.xml
/Builds/MSVC/VS2015/flam3-palettes.xml
*.dmg
/Deps/include/OpenEXR/OpenEXRConfig.h
/Deps/include/OpenEXR/ImfXdr.h
/Deps/include/OpenEXR/ImfWav.h
/Deps/include/OpenEXR/ImfVersion.h
/Deps/include/OpenEXR/ImfVecAttribute.h
/Deps/include/OpenEXR/ImfTimeCodeAttribute.h
/Deps/include/OpenEXR/ImfTimeCode.h
/Deps/include/OpenEXR/ImfTiledRgbaFile.h
/Deps/include/OpenEXR/ImfTiledOutputPart.h
/Deps/include/OpenEXR/ImfTiledOutputFile.h
/Deps/include/OpenEXR/ImfTiledInputPart.h
/Deps/include/OpenEXR/ImfTiledInputFile.h
/Deps/include/OpenEXR/ImfTileDescriptionAttribute.h
/Deps/include/OpenEXR/ImfTileDescription.h
/Deps/include/OpenEXR/ImfThreading.h
/Deps/include/OpenEXR/ImfTestFile.h
/Deps/include/OpenEXR/ImfStringVectorAttribute.h
/Deps/include/OpenEXR/ImfStringAttribute.h
/Deps/include/OpenEXR/ImfStandardAttributes.h
/Deps/include/OpenEXR/ImfSampleCountChannel.h
/Deps/include/OpenEXR/ImfRgbaYca.h
/Deps/include/OpenEXR/ImfRgbaFile.h
/Deps/include/OpenEXR/ImfRgba.h
/Deps/include/OpenEXR/ImfRationalAttribute.h
/Deps/include/OpenEXR/ImfRational.h
/Deps/include/OpenEXR/ImfPreviewImageAttribute.h
/Deps/include/OpenEXR/ImfPreviewImage.h
/Deps/include/OpenEXR/ImfPixelType.h
/Deps/include/OpenEXR/ImfPartType.h
/Deps/include/OpenEXR/ImfPartHelper.h
/Deps/include/OpenEXR/ImfOutputPart.h
/Deps/include/OpenEXR/ImfOutputFile.h
/Deps/include/OpenEXR/ImfOpaqueAttribute.h
/Deps/include/OpenEXR/ImfNamespace.h
/Deps/include/OpenEXR/ImfName.h
/Deps/include/OpenEXR/ImfMultiView.h
/Deps/include/OpenEXR/ImfMultiPartOutputFile.h
/Deps/include/OpenEXR/ImfMultiPartInputFile.h
/Deps/include/OpenEXR/ImfMisc.h
/Deps/include/OpenEXR/ImfMatrixAttribute.h
/Deps/include/OpenEXR/ImfLut.h
/Deps/include/OpenEXR/ImfLineOrderAttribute.h
/Deps/include/OpenEXR/ImfLineOrder.h
/Deps/include/OpenEXR/ImfKeyCodeAttribute.h
/Deps/include/OpenEXR/ImfKeyCode.h
/Deps/include/OpenEXR/ImfIO.h
/Deps/include/OpenEXR/ImfIntAttribute.h
/Deps/include/OpenEXR/ImfInt64.h
/Deps/include/OpenEXR/ImfInputPart.h
/Deps/include/OpenEXR/ImfInputFile.h
/Deps/include/OpenEXR/ImfImageLevel.h
/Deps/include/OpenEXR/ImfImageIO.h
/Deps/include/OpenEXR/ImfImageDataWindow.h
/Deps/include/OpenEXR/ImfImageChannelRenaming.h
/Deps/include/OpenEXR/ImfImageChannel.h
/Deps/include/OpenEXR/ImfImage.h
/Deps/include/OpenEXR/ImfHuf.h
/Deps/include/OpenEXR/ImfHeader.h
/Deps/include/OpenEXR/ImfGenericOutputFile.h
/Deps/include/OpenEXR/ImfGenericInputFile.h
/Deps/include/OpenEXR/ImfFramesPerSecond.h
/Deps/include/OpenEXR/ImfFrameBuffer.h
/Deps/include/OpenEXR/ImfForward.h
/Deps/include/OpenEXR/ImfFloatVectorAttribute.h
/Deps/include/OpenEXR/ImfFloatAttribute.h
/Deps/include/OpenEXR/ImfFlatImageLevel.h
/Deps/include/OpenEXR/ImfFlatImageIO.h
/Deps/include/OpenEXR/ImfFlatImageChannel.h
/Deps/include/OpenEXR/ImfFlatImage.h
/Deps/include/OpenEXR/ImfExport.h
/Deps/include/OpenEXR/ImfEnvmapAttribute.h
/Deps/include/OpenEXR/ImfEnvmap.h
/Deps/include/OpenEXR/ImfDoubleAttribute.h
/Deps/include/OpenEXR/ImfDeepTiledOutputPart.h
/Deps/include/OpenEXR/ImfDeepTiledOutputFile.h
/Deps/include/OpenEXR/ImfDeepTiledInputPart.h
/Deps/include/OpenEXR/ImfDeepTiledInputFile.h
/Deps/include/OpenEXR/ImfDeepScanLineOutputPart.h
/Deps/include/OpenEXR/ImfDeepScanLineOutputFile.h
/Deps/include/OpenEXR/ImfDeepScanLineInputPart.h
/Deps/include/OpenEXR/ImfDeepScanLineInputFile.h
/Deps/include/OpenEXR/ImfDeepImageStateAttribute.h
/Deps/include/OpenEXR/ImfDeepImageState.h
/Deps/include/OpenEXR/ImfDeepImageLevel.h
/Deps/include/OpenEXR/ImfDeepImageIO.h
/Deps/include/OpenEXR/ImfDeepImageChannel.h
/Deps/include/OpenEXR/ImfDeepImage.h
/Deps/include/OpenEXR/ImfDeepFrameBuffer.h
/Deps/include/OpenEXR/ImfDeepCompositing.h
/Deps/include/OpenEXR/ImfCRgbaFile.h
/Deps/include/OpenEXR/ImfConvert.h
/Deps/include/OpenEXR/ImfCompressionAttribute.h
/Deps/include/OpenEXR/ImfCompression.h
/Deps/include/OpenEXR/ImfCompositeDeepScanLine.h
/Deps/include/OpenEXR/ImfChromaticitiesAttribute.h
/Deps/include/OpenEXR/ImfChromaticities.h
/Deps/include/OpenEXR/ImfChannelListAttribute.h
/Deps/include/OpenEXR/ImfChannelList.h
/Deps/include/OpenEXR/ImfBoxAttribute.h
/Deps/include/OpenEXR/ImfB44Compressor.h
/Deps/include/OpenEXR/ImfAttribute.h
/Deps/include/OpenEXR/ImfArray.h
/Deps/include/OpenEXR/ImfAcesFile.h
/Deps/include/OpenEXR/ImathVecAlgo.h
/Deps/include/OpenEXR/ImathVec.h
/Deps/include/OpenEXR/ImathSphere.h
/Deps/include/OpenEXR/ImathShear.h
/Deps/include/OpenEXR/ImathRoots.h
/Deps/include/OpenEXR/ImathRandom.h
/Deps/include/OpenEXR/ImathQuat.h
/Deps/include/OpenEXR/ImathPlatform.h
/Deps/include/OpenEXR/ImathPlane.h
/Deps/include/OpenEXR/ImathNamespace.h
/Deps/include/OpenEXR/ImathMatrixAlgo.h
/Deps/include/OpenEXR/ImathMatrix.h
/Deps/include/OpenEXR/ImathMath.h
/Deps/include/OpenEXR/ImathLineAlgo.h
/Deps/include/OpenEXR/ImathLine.h
/Deps/include/OpenEXR/ImathLimits.h
/Deps/include/OpenEXR/ImathInterval.h
/Deps/include/OpenEXR/ImathInt64.h
/Deps/include/OpenEXR/ImathHalfLimits.h
/Deps/include/OpenEXR/ImathGLU.h
/Deps/include/OpenEXR/ImathGL.h
/Deps/include/OpenEXR/ImathFun.h
/Deps/include/OpenEXR/ImathFrustumTest.h
/Deps/include/OpenEXR/ImathFrustum.h
/Deps/include/OpenEXR/ImathFrame.h
/Deps/include/OpenEXR/ImathForward.h
/Deps/include/OpenEXR/ImathExport.h
/Deps/include/OpenEXR/ImathExc.h
/Deps/include/OpenEXR/ImathEuler.h
/Deps/include/OpenEXR/ImathColorAlgo.h
/Deps/include/OpenEXR/ImathColor.h
/Deps/include/OpenEXR/ImathBoxAlgo.h
/Deps/include/OpenEXR/ImathBox.h
/Deps/include/OpenEXR/IlmThreadSemaphore.h
/Deps/include/OpenEXR/IlmThreadPool.h
/Deps/include/OpenEXR/IlmThreadNamespace.h
/Deps/include/OpenEXR/IlmThreadMutex.h
/Deps/include/OpenEXR/IlmThreadForward.h
/Deps/include/OpenEXR/IlmThreadExport.h
/Deps/include/OpenEXR/IlmThread.h
/Deps/include/OpenEXR/IlmBaseConfig.h
/Deps/include/OpenEXR/IexThrowErrnoExc.h
/Deps/include/OpenEXR/IexNamespace.h
/Deps/include/OpenEXR/IexMathIeeeExc.h
/Deps/include/OpenEXR/IexMathFpu.h
/Deps/include/OpenEXR/IexMathFloatExc.h
/Deps/include/OpenEXR/IexMathExc.h
/Deps/include/OpenEXR/IexMacros.h
/Deps/include/OpenEXR/IexForward.h
/Deps/include/OpenEXR/IexExport.h
/Deps/include/OpenEXR/IexErrnoExc.h
/Deps/include/OpenEXR/IexBaseExc.h
/Deps/include/OpenEXR/Iex.h
/Deps/include/OpenEXR/halfLimits.h
/Deps/include/OpenEXR/halfFunction.h
/Deps/include/OpenEXR/halfExport.h
/Deps/include/OpenEXR/half.h
/Builds/MSVC/VS2017/.vs/Fractorium/v15
/Source/Fractorium/Fractorium.ui.autosave
/main.pro.user.8f4f6a2
/Builds/MSVC/VS2017/flam3-palettes.xml
/Builds/MSVC/VS2017/UpgradeLog.htm
/Builds/MSVC/VS2017/zlib.props
*last.flame
/Source/Fractorium/Fractorium - Copy.ui
/.vs/slnx.sqlite
/Deps/Include/OpenEXR
/main.pro.user.294b646
/Deps/Include/Imath
/Builds/MSVC/Solution/.vs/Fractorium

View File

@ -1,31 +1,31 @@
language: cpp
sudo: true
script:
# install standard deps (currently only libtbb is fine in 12.04)
- sudo apt-get update
- sudo apt-get install libtbb-dev
# gcc from ppa, because 12.04's is too old
- sudo apt-get install python-software-properties
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
- sudo apt-get update
- sudo apt-get install gcc-4.8 g++-4.8
# qt 5.4 from ppa, because 12.04 only has 4.8
# yeah, really rather unofficial ppa but it's all that exists
- sudo apt-add-repository -y ppa:beineri/opt-qt541
- sudo apt-get update
- sudo apt-get install qt54-meta-full
# glm from source, because 12.04's is too old
- git clone https://github.com/g-truc/glm.git
- cd glm && cmake . && make && sudo make install && cd ..
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
# opencl from Intel's site, because 12.04's is nonexistant
- wget http://registrationcenter.intel.com/irc_nas/2563/intel_sdk_for_ocl_applications_2012_x64.tgz
- tar -xzvf intel_sdk_for_ocl_applications_2012_x64.tgz
- sudo apt-get install alien
- sudo alien -i intel_ocl_sdk_2012_x64.rpm
- sudo ln -s /usr/lib64/libOpenCL.so /usr/lib/libOpenCL.so
# finally, run the build
- source /opt/qt54/bin/qt54-env.sh
- g++ --version
- Builds/QtCreator/build_all.sh --travis
language: cpp
sudo: true
script:
# install standard deps (currently only libtbb is fine in 12.04)
- sudo apt-get update
- sudo apt-get install libtbb-dev
# gcc from ppa, because 12.04's is too old
- sudo apt-get install python-software-properties
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
- sudo apt-get update
- sudo apt-get install gcc-4.8 g++-4.8
# qt 5.4 from ppa, because 12.04 only has 4.8
# yeah, really rather unofficial ppa but it's all that exists
- sudo apt-add-repository -y ppa:beineri/opt-qt541
- sudo apt-get update
- sudo apt-get install qt54-meta-full
# glm from source, because 12.04's is too old
- git clone https://github.com/g-truc/glm.git
- cd glm && cmake . && make && sudo make install && cd ..
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
# opencl from Intel's site, because 12.04's is nonexistant
- wget http://registrationcenter.intel.com/irc_nas/2563/intel_sdk_for_ocl_applications_2012_x64.tgz
- tar -xzvf intel_sdk_for_ocl_applications_2012_x64.tgz
- sudo apt-get install alien
- sudo alien -i intel_ocl_sdk_2012_x64.rpm
- sudo ln -s /usr/lib64/libOpenCL.so /usr/lib/libOpenCL.so
# finally, run the build
- source /opt/qt54/bin/qt54-env.sh
- g++ --version
- Builds/QtCreator/build_all.sh --travis

View File

@ -1,74 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.7</ProductVersion>
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Fractorium_22.21.4.2</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DefineConstants>Debug</DefineConstants>
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<WixVariables>
</WixVariables>
<DefineConstants>GpuType=AMD_NVIDIA</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|x86' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|x64' ">
<SuppressPdbOutput>True</SuppressPdbOutput>
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<WixVariables>
</WixVariables>
<DefineConstants>GpuType=NVIDIA</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|AnyCPU' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|Any CPU' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUIExtension">
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<Project Sdk="WixToolset.Sdk/4.0.0">
<PropertyGroup>
<ProductVersion>3.7</ProductVersion>
<OutputName>Fractorium_22.21.4.2</OutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DefineConstants>Debug</DefineConstants>
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<SuppressPdbOutput>True</SuppressPdbOutput>
<WixVariables>
</WixVariables>
<DefineConstants>GpuType=AMD_NVIDIA</DefineConstants>
<SuppressValidation>false</SuppressValidation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|x86' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|x64' ">
<SuppressPdbOutput>True</SuppressPdbOutput>
<OutputPath>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<WixVariables>
</WixVariables>
<DefineConstants>GpuType=NVIDIA</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|AnyCPU' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNvidia|Any CPU' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="WixToolset.UI.wixext" Version="4.0.0" />
</ItemGroup>
</Project>

View File

@ -1,392 +1,362 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define ProductVersion="22.21.4.2" ?>
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
<?define Manufacturer="Fractorium"?>
<!--
Original GUID,
<?define ProductCode="{703001af-6255-4671-9a69-571198b4c0dd}"?>
-->
<!--
Change this for every release.
-->
<?define ProductCode="{5EB322AE-7613-4D8B-AC60-2B53C4CC7941}"?>
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package
Keywords="Installer"
Platform="x64"
Description="$(var.Manufacturer)"
Comments="$(var.Manufacturer)"
Manufacturer="$(var.Manufacturer)"
InstallScope="perUser"
InstallerVersion="400"
InstallPrivileges="limited"
Compressed="yes"
Languages="1033"
SummaryCodepage="1252"
/>
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="0.0.0"
IncludeMinimum="no"
OnlyDetect="no"
Maximum="$(var.ProductVersion)"
IncludeMaximum="no"
Property="PREVIOUSFOUND" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize"/>
</InstallExecuteSequence>
<MediaTemplate EmbedCab="yes" />
<Icon Id="AddRemoveProgramsIcon" SourceFile="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\Fractorium.ico"/>
<Property Id="ARPPRODUCTICON" Value="AddRemoveProgramsIcon" />
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentGroupRef Id="BenchComponents" />
<ComponentGroupRef Id="ExampleComponents" />
<ComponentGroupRef Id="PlatformComponents" />
<ComponentGroupRef Id="ImageFormatComponents" />
<ComponentRef Id="FractoriumStartMenuShortcut"/>
<ComponentRef Id="FractoriumDesktopShortcut"/>
</Feature>
<WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)..\..\..\Data\gplv3.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\banner.bmp" /><!--493 x 58 pixels -->
<WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\dialog.bmp" /><!--493 x 312 pixels -->
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
<Property Id="MSIFASTINSTALL" Value="1" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
<UIRef Id="WixUI_InstallDir" />
<UIRef Id="WixUI_ErrorProgressText" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir" >
<!-- Doing this requires admin access, so we don't do it.
<Directory Id="ProgramFiles64Folder" >
<Directory Id="INSTALLFOLDER" Name="Fractorium" >
<Directory Id="INSTALLFOLDERPLATFORMS" Name="platforms" />
</Directory>
</Directory>
-->
<!-- Doing this doesn't require admin access.
It reports a ton of errors, but oddly enough, an MSI is still created with the errors.
-->
<Directory Id="AppDataFolder" >
<Directory Id="INSTALLFOLDER" Name="Fractorium" >
<Directory Id="INSTALLFOLDERBENCH" Name="Bench" />
<Directory Id="INSTALLFOLDEREXAMPLES" Name="Examples" />
<Directory Id="INSTALLFOLDERPLATFORMS" Name="platforms" />
<Directory Id="INSTALLFOLDERIMAGEFORMATS" Name="imageformats" />
</Directory>
</Directory>
<!-- Shortcut folders-->
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDirLevel1" Name="Fractorium" />
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
</Fragment>
<Fragment>
<Component Id="FractoriumStartMenuShortcut" Directory="ProgramMenuDirLevel1" Guid="f1eaf3ba-9b61-48b6-8994-49ebc6b405aa">
<Shortcut Id="FractoriumStartMenuShortcut"
Directory="ProgramMenuDirLevel1"
Name="Fractorium"
Target="[INSTALLFOLDER]\Fractorium.exe"
WorkingDirectory="INSTALLFOLDER"
Icon="AddRemoveProgramsIcon"
/>
<Condition>1</Condition>
<RemoveFolder Id="FractoriumStartMenuShortcut" On="uninstall" />
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
<Component Id="FractoriumDesktopShortcut" Directory="DesktopFolder" Guid="b73ff21c-08ac-47ad-a510-b3ce90e43979">
<Shortcut Id="FractoriumDesktopShortcut"
Directory="DesktopFolder"
Name="Fractorium"
Target="[INSTALLFOLDER]\Fractorium.exe"
WorkingDirectory="INSTALLFOLDER"
Icon="AddRemoveProgramsIcon"
/>
<RemoveFolder Id="FractoriumDesktopShortcut" On="uninstall" />
<Condition>1</Condition>
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="Fractorium.exe" Guid="ccc04ca4-c747-4330-8cfd-bdd943b185c0">
<File Id="Fractorium.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\Fractorium.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="EmberRender.exe" Guid="12d49219-9269-495a-b8e4-3d33cb32d280">
<File Id="EmberRender.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberRender.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="EmberAnimate.exe" Guid="ae362704-93a3-48dc-a13b-7c4eabd87ee1">
<File Id="EmberAnimate.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberAnimate.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="EmberGenome.exe" Guid="7a93f079-216a-4d1c-9b02-8ca93a6a8daa">
<File Id="EmberGenome.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberGenome.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="Ember.dll" Guid="c0f80dee-7a16-4d6a-b7ed-d6cd162154eb">
<File Id="Ember.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\Ember.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="EmberCL.dll" Guid="21c0e372-c605-4e0d-9ba8-94e38949833b">
<File Id="EmberCL.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberCL.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="Iex_3_1.dll" Guid="e485e9d1-c883-46f9-a898-5fdbbe6a83f8">
<File Id="Iex_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\Iex-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="OpenEXR_3_1.dll" Guid="911ec3b1-c2e2-439c-af3b-cd16a9280c7f">
<File Id="OpenEXR_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\OpenEXR-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="IlmThread_3_1.dll" Guid="89d0f2d4-7619-4bd2-8c22-6ae677d666b8">
<File Id="IlmThread_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\IlmThread-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="Imath_3_1.dll" Guid="16c3c309-18b7-4232-b19b-59e56d4b75bf">
<File Id="Imath_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\Imath-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="libxml2.dll" Guid="bb3aa687-7a3d-4d16-a27c-28529b472754">
<File Id="libxml2.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\libxml2.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="userpalettes.xml" Guid="53e1e43e-b01e-4159-94fa-bdf6e8fd1d57">
<File Id="userpalettes.xml" Source="$(var.SolutionDir)..\..\..\Data\user-palettes.xml" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="boxtail_pack_02.gradient" Guid="f9bd8f21-6a61-4e4a-a7e6-bc50f2633dd6">
<File Id="boxtail_pack_02.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_02.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="boxtail_pack_03_triangle.gradient" Guid="19d4957a-7ce7-4afd-b74b-5049265dffa2">
<File Id="boxtail_pack_03_triangle.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_03_triangle.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="boxtail_pack_04_mineshack.gradient" Guid="2f144d87-97bd-4fe6-8000-f0a9e62f770f">
<File Id="boxtail_pack_04_mineshack.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_04_mineshack.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="fardareismai_pack_01_variety_number_128.gradient" Guid="9ee0a298-b35b-4501-9beb-c0cdca41ca25">
<File Id="fardareismai_pack_01_variety_number_128.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_01_variety_number_128.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="fardareismai_pack_02_b_sides.gradient" Guid="69e0c7d9-283b-4161-a924-b015eb658e8d">
<File Id="fardareismai_pack_02_b_sides.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_02_b_sides.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="fardareismai_pack_03_old_and_new.gradient" Guid="1059241b-67e7-4a36-878d-675f3282c530">
<File Id="fardareismai_pack_03_old_and_new.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_03_old_and_new.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="fardareismai_pack_04_hoard.gradient" Guid="c611ee88-e0f4-493b-84f5-c65f899d43f3">
<File Id="fardareismai_pack_04_hoard.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_04_hoard.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="fractaldesire_pack_01.gradient" Guid="9f0885ab-920f-420d-a962-9bc515986701">
<File Id="fractaldesire_pack_01.gradient" Source="$(var.SolutionDir)..\..\..\Data\fractaldesire_pack_01.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="rce_ordinary_pack_01_colornation.gradient" Guid="8eb62cb8-279b-4518-9098-c0fec5830493">
<File Id="rce_ordinary_pack_01_colornation.gradient" Source="$(var.SolutionDir)..\..\..\Data\rce_ordinary_pack_01_colornation.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_01.gradient" Guid="967c9577-74d1-4bc0-aa52-2fb78507b572">
<File Id="tatasz_pack_01.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_01.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_02_colder.gradient" Guid="304976a2-8ae7-47eb-bf1f-c6f3cbe380b8">
<File Id="tatasz_pack_02_colder.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_colder.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_02_dark.gradient" Guid="05ed49cf-364c-4547-a107-2bd46afc6664">
<File Id="tatasz_pack_02_dark.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_dark.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_02_warmer.gradient" Guid="62282580-0ae3-484e-98ba-38ec7bbf80e2">
<File Id="tatasz_pack_02_warmer.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_warmer.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_03.gradient" Guid="7e5b5ef3-45be-4807-a88f-a8b773663e77">
<File Id="tatasz_pack_03.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_03.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_04.gradient" Guid="455d27f4-215f-4db8-9a06-826e8327b8b3">
<File Id="tatasz_pack_04.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_04.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_05.gradient" Guid="6a146786-9514-4a3a-b7d7-31d3074e2101">
<File Id="tatasz_pack_05.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_05.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_06.gradient" Guid="927c7a40-093f-4e1f-8f53-869bb31f219a">
<File Id="tatasz_pack_06.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_06.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_pack_07.gradient" Guid="917183d1-7e85-478f-9c73-3ca34f50ac70">
<File Id="tatasz_pack_07.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_07.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Quartz_Varieties.ugr" Guid="b319cfb3-9037-490f-a7bc-608c4fc51361">
<File Id="Quartz_Varieties.ugr" Source="$(var.SolutionDir)..\..\..\Data\Quartz_Varieties.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Amphibole_Supergroup.ugr" Guid="17f19f07-bf1a-441f-8547-cf76ac5d146d">
<File Id="Amphibole_Supergroup.ugr" Source="$(var.SolutionDir)..\..\..\Data\Amphibole_Supergroup.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Apatite_Supergroup.ugr" Guid="98355dc3-d06c-4182-8948-0ff17557b041">
<File Id="Apatite_Supergroup.ugr" Source="$(var.SolutionDir)..\..\..\Data\Apatite_Supergroup.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Feldspar_Group.ugr" Guid="5bb329fe-c8ea-475e-988b-2108f64b2228">
<File Id="Feldspar_Group.ugr" Source="$(var.SolutionDir)..\..\..\Data\Feldspar_Group.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Mica_Group.ugr" Guid="d907fead-c39a-4a97-9574-ed886d43c6ca">
<File Id="Mica_Group.ugr" Source="$(var.SolutionDir)..\..\..\Data\Mica_Group.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="dark_windows.qss" Guid="c120ace3-5fab-416f-b7f1-a8d9e3e0f061">
<File Id="dark_windows.qss" Source="$(var.SolutionDir)..\..\..\Data\dark_windows.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="lightdark.qss" Guid="e4cbb38c-359e-464d-938b-e52ff0ce375d">
<File Id="lightdark.qss" Source="$(var.SolutionDir)..\..\..\Data\lightdark.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="uranium.qss" Guid="64e23769-0631-4c5c-a714-bf7c50dc3c1a">
<File Id="uranium.qss" Source="$(var.SolutionDir)..\..\..\Data\uranium.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="VersionHistory.txt" Guid="8b031217-9e7d-4700-9ab8-2593a4e002b6">
<File Id="VersionHistory.txt" Source="$(var.SolutionDir)..\..\..\Data\Version History.txt" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="Qt5Core.dll" Guid="0198dd4b-9bbb-4ea2-86e3-6ea0f4f6ac51">
<File Id="Qt5Core.dll" Source="$(env.QTDIR)\bin\Qt5Core.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="Qt5Gui.dll" Guid="7f93dcc2-55db-4920-83d7-e06c23f7719a">
<File Id="Qt5Gui.dll" Source="$(env.QTDIR)\bin\Qt5Gui.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="Qt5Widgets.dll" Guid="006bb2f1-7a38-426f-ba2c-5196d1d6c24d">
<File Id="Qt5Widgets.dll" Source="$(env.QTDIR)\bin\Qt5Widgets.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="BenchComponents" Directory="INSTALLFOLDERBENCH">
<Component Id="EmberBench.ps1" Guid="a0362c11-e54a-4712-b800-0bb7c43d285e">
<File Id="EmberBench.ps1" Source="$(var.SolutionDir)..\..\..\Data\Bench\EmberBench.ps1" KeyPath="yes" Checksum="yes" ReadOnly="no"/>
</Component>
<Component Id="golubaja_rippingfrominside_complexcode.flame" Guid="74fc54d8-eb7f-4e88-b839-c6d0b847d78e">
<File Id="golubaja_rippingfrominside_complexcode.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\golubaja_rippingfrominside_complexcode.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="mfeemster_basicmemory.flame" Guid="4ebf1154-b06a-4e04-aeb7-6fb505dd9b90">
<File Id="mfeemster_basicmemory.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\mfeemster_basicmemory.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_springcrown_manysimplexforms.flame" Guid="29993c8f-26b6-41ab-b585-d535aac0bfb5">
<File Id="tatasz_springcrown_manysimplexforms.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\tatasz_springcrown_manysimplexforms.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tyrantwave_flippeddisc_normal.flame" Guid="ee38fdfd-8300-45c8-b3fb-897dca530df0">
<File Id="tyrantwave_flippeddisc_normal.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\tyrantwave_flippeddisc_normal.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="zy0rg_six_bigcomplexcode.flame" Guid="95ef408d-6d99-4dd0-89c3-105b56ff50b2">
<File Id="zy0rg_six_bigcomplexcode.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\zy0rg_six_bigcomplexcode.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ExampleComponents" Directory="INSTALLFOLDEREXAMPLES">
<Component Id="pillemaster_hexagonal_tilings.flame" Guid="a0b85758-30b2-49e7-85ca-438046cb83e8">
<File Id="pillemaster_hexagonal_tilings.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\pillemaster_hexagonal_tilings.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="plangkye_examples.flame" Guid="aa6c81a6-28e4-49e7-bef6-fdebfe21e47c">
<File Id="plangkye_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\plangkye_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_examples.flame" Guid="27d621ec-88b7-4957-ae5f-9b3cc8c8f21a">
<File Id="tatasz_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tatasz_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tatasz_substitution.flame" Guid="bb1cb196-e5d9-4250-843a-1e649c896ba8">
<File Id="tatasz_substitution.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tatasz_substitution.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="triptychaos_examples.flame" Guid="ded3e790-29ee-40c8-a279-49bf354a41ae">
<File Id="triptychaos_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\triptychaos_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="tyrantwave_base_forms.flame" Guid="8773ff3a-d29f-4a41-acb4-e06cafb236ad">
<File Id="tyrantwave_base_forms.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tyrantwave_base_forms.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="b33rheart_examples.flame" Guid="c014f5b0-d45f-4bb5-9af7-ac98326dcef1">
<File Id="b33rheart_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\b33rheart_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="b33rheart_sierpinski.flame" Guid="535430de-6878-41b2-913e-cb35e915cb4f">
<File Id="b33rheart_sierpinski.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\b33rheart_sierpinski.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="c91_examples.flame" Guid="4155dcda-ba38-4211-b894-77c85d57bc9d">
<File Id="c91_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\c-91_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="PlatformComponents" Directory="INSTALLFOLDERPLATFORMS">
<Component Id="qwindows.dll" Guid="627b7f5a-8fa6-4c78-a6b7-81fcdd8fdd63">
<File Id="qwindows.dll" Source="$(env.QTDIR)\plugins\platforms\qwindows.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ImageFormatComponents" Directory="INSTALLFOLDERIMAGEFORMATS">
<Component Id="qjpeg.dll" Guid="da079a2d-1ab7-443c-a21e-4434ef58c6cc">
<File Id="qjpeg.dll" Source="$(env.QTDIR)\plugins\imageformats\qjpeg.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
<?define ProductVersion="22.21.4.2" ?>
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
<?define Manufacturer="Fractorium"?>
<!--
Original GUID,
<?define ProductCode="{703001af-6255-4671-9a69-571198b4c0dd}"?>
-->
<!--
Change this for every release.
-->
<?define ProductCode="{5EB322AE-7613-4D8B-AC60-2B53C4CC7941}"?>
<Package Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" InstallerVersion="400" Scope="perMachine" ProductCode="$(var.ProductCode)">
<SummaryInformation Keywords="Installer" Description="$(var.Manufacturer)" Manufacturer="$(var.Manufacturer)" />
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="0.0.0" IncludeMinimum="no" OnlyDetect="no" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Property="PREVIOUSFOUND" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
<MediaTemplate EmbedCab="yes" />
<Icon Id="AddRemoveProgramsIcon" SourceFile="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
<Property Id="ARPPRODUCTICON" Value="AddRemoveProgramsIcon" />
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentGroupRef Id="BenchComponents" />
<ComponentGroupRef Id="ExampleComponents" />
<ComponentGroupRef Id="PlatformComponents" />
<ComponentGroupRef Id="ImageFormatComponents" />
<ComponentRef Id="FractoriumStartMenuShortcut" />
<ComponentRef Id="FractoriumDesktopShortcut" />
</Feature>
<WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)..\..\..\Data\gplv3.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\banner.bmp" /><!--493 x 58 pixels -->
<WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)..\..\..\Source\Fractorium\Icons\dialog.bmp" /><!--493 x 312 pixels -->
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
<Property Id="MSIFASTINSTALL" Value="1" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
<ui:WixUI Id="WixUI_InstallDir" />
<UIRef Id="WixUI_ErrorProgressText" />
</Package>
<Fragment>
<!--
<StandardDirectory Id="AppDataFolder">
-->
<StandardDirectory Id="ProgramFiles64Folder" >
<Directory Id="INSTALLFOLDER" Name="Fractorium">
<Directory Id="INSTALLFOLDERBENCH" Name="Bench" />
<Directory Id="INSTALLFOLDEREXAMPLES" Name="Examples" />
<Directory Id="INSTALLFOLDERPLATFORMS" Name="platforms" />
<Directory Id="INSTALLFOLDERIMAGEFORMATS" Name="imageformats" />
</Directory>
</StandardDirectory>
<!-- Shortcut folders-->
<StandardDirectory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDirLevel1" Name="Fractorium" />
</StandardDirectory>
<StandardDirectory Id="DesktopFolder" />
</Fragment>
<Fragment>
<Component Id="FractoriumStartMenuShortcut" Directory="ProgramMenuDirLevel1" Guid="f1eaf3ba-9b61-48b6-8994-49ebc6b405aa" Condition="1">
<Shortcut Id="FractoriumStartMenuShortcut" Directory="ProgramMenuDirLevel1" Name="Fractorium" Target="[INSTALLFOLDER]\Fractorium.exe" WorkingDirectory="INSTALLFOLDER" Icon="AddRemoveProgramsIcon" />
<RemoveFolder Id="FractoriumStartMenuShortcut" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
</Component>
<Component Id="FractoriumDesktopShortcut" Directory="DesktopFolder" Guid="b73ff21c-08ac-47ad-a510-b3ce90e43979" Condition="1">
<Shortcut Id="FractoriumDesktopShortcut" Directory="DesktopFolder" Name="Fractorium" Target="[INSTALLFOLDER]\Fractorium.exe" WorkingDirectory="INSTALLFOLDER" Icon="AddRemoveProgramsIcon" />
<RemoveFolder Id="FractoriumDesktopShortcut" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
</Component>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="Fractorium.exe" Guid="ccc04ca4-c747-4330-8cfd-bdd943b185c0">
<File Id="Fractorium.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\Fractorium.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="EmberRender.exe" Guid="12d49219-9269-495a-b8e4-3d33cb32d280">
<File Id="EmberRender.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberRender.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="EmberAnimate.exe" Guid="ae362704-93a3-48dc-a13b-7c4eabd87ee1">
<File Id="EmberAnimate.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberAnimate.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="EmberGenome.exe" Guid="7a93f079-216a-4d1c-9b02-8ca93a6a8daa">
<File Id="EmberGenome.exe" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberGenome.exe" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Ember.dll" Guid="c0f80dee-7a16-4d6a-b7ed-d6cd162154eb">
<File Id="Ember.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\Ember.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="EmberCL.dll" Guid="21c0e372-c605-4e0d-9ba8-94e38949833b">
<File Id="EmberCL.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\$(var.Configuration)\EmberCL.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Iex_3_1.dll" Guid="e485e9d1-c883-46f9-a898-5fdbbe6a83f8">
<File Id="Iex_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\Iex-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="OpenEXR_3_1.dll" Guid="911ec3b1-c2e2-439c-af3b-cd16a9280c7f">
<File Id="OpenEXR_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\OpenEXR-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="IlmThread_3_1.dll" Guid="89d0f2d4-7619-4bd2-8c22-6ae677d666b8">
<File Id="IlmThread_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\IlmThread-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Imath_3_1.dll" Guid="16c3c309-18b7-4232-b19b-59e56d4b75bf">
<File Id="Imath_3_1.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\Imath-3_1.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="libxml2.dll" Guid="bb3aa687-7a3d-4d16-a27c-28529b472754">
<File Id="libxml2.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\libxml2.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vcruntime140_1.dll" Guid="a02507f8-326b-45b2-b734-e5091921559f">
<File Id="vcruntime140_1.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vcruntime140_1.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.34.31931\x64\Microsoft.VC143.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="userpalettes.xml" Guid="53e1e43e-b01e-4159-94fa-bdf6e8fd1d57">
<File Id="userpalettes.xml" Source="$(var.SolutionDir)..\..\..\Data\user-palettes.xml" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="boxtail_pack_02.gradient" Guid="f9bd8f21-6a61-4e4a-a7e6-bc50f2633dd6">
<File Id="boxtail_pack_02.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_02.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="boxtail_pack_03_triangle.gradient" Guid="19d4957a-7ce7-4afd-b74b-5049265dffa2">
<File Id="boxtail_pack_03_triangle.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_03_triangle.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="boxtail_pack_04_mineshack.gradient" Guid="2f144d87-97bd-4fe6-8000-f0a9e62f770f">
<File Id="boxtail_pack_04_mineshack.gradient" Source="$(var.SolutionDir)..\..\..\Data\boxtail_pack_04_mineshack.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="fardareismai_pack_01_variety_number_128.gradient" Guid="9ee0a298-b35b-4501-9beb-c0cdca41ca25">
<File Id="fardareismai_pack_01_variety_number_128.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_01_variety_number_128.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="fardareismai_pack_02_b_sides.gradient" Guid="69e0c7d9-283b-4161-a924-b015eb658e8d">
<File Id="fardareismai_pack_02_b_sides.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_02_b_sides.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="fardareismai_pack_03_old_and_new.gradient" Guid="1059241b-67e7-4a36-878d-675f3282c530">
<File Id="fardareismai_pack_03_old_and_new.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_03_old_and_new.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="fardareismai_pack_04_hoard.gradient" Guid="c611ee88-e0f4-493b-84f5-c65f899d43f3">
<File Id="fardareismai_pack_04_hoard.gradient" Source="$(var.SolutionDir)..\..\..\Data\fardareismai_pack_04_hoard.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="fractaldesire_pack_01.gradient" Guid="9f0885ab-920f-420d-a962-9bc515986701">
<File Id="fractaldesire_pack_01.gradient" Source="$(var.SolutionDir)..\..\..\Data\fractaldesire_pack_01.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="rce_ordinary_pack_01_colornation.gradient" Guid="8eb62cb8-279b-4518-9098-c0fec5830493">
<File Id="rce_ordinary_pack_01_colornation.gradient" Source="$(var.SolutionDir)..\..\..\Data\rce_ordinary_pack_01_colornation.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_01.gradient" Guid="967c9577-74d1-4bc0-aa52-2fb78507b572">
<File Id="tatasz_pack_01.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_01.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_02_colder.gradient" Guid="304976a2-8ae7-47eb-bf1f-c6f3cbe380b8">
<File Id="tatasz_pack_02_colder.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_colder.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_02_dark.gradient" Guid="05ed49cf-364c-4547-a107-2bd46afc6664">
<File Id="tatasz_pack_02_dark.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_dark.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_02_warmer.gradient" Guid="62282580-0ae3-484e-98ba-38ec7bbf80e2">
<File Id="tatasz_pack_02_warmer.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_02_warmer.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_03.gradient" Guid="7e5b5ef3-45be-4807-a88f-a8b773663e77">
<File Id="tatasz_pack_03.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_03.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_04.gradient" Guid="455d27f4-215f-4db8-9a06-826e8327b8b3">
<File Id="tatasz_pack_04.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_04.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_05.gradient" Guid="6a146786-9514-4a3a-b7d7-31d3074e2101">
<File Id="tatasz_pack_05.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_05.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_06.gradient" Guid="927c7a40-093f-4e1f-8f53-869bb31f219a">
<File Id="tatasz_pack_06.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_06.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_pack_07.gradient" Guid="917183d1-7e85-478f-9c73-3ca34f50ac70">
<File Id="tatasz_pack_07.gradient" Source="$(var.SolutionDir)..\..\..\Data\tatasz_pack_07.gradient" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Quartz_Varieties.ugr" Guid="b319cfb3-9037-490f-a7bc-608c4fc51361">
<File Id="Quartz_Varieties.ugr" Source="$(var.SolutionDir)..\..\..\Data\Quartz_Varieties.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Amphibole_Supergroup.ugr" Guid="17f19f07-bf1a-441f-8547-cf76ac5d146d">
<File Id="Amphibole_Supergroup.ugr" Source="$(var.SolutionDir)..\..\..\Data\Amphibole_Supergroup.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Apatite_Supergroup.ugr" Guid="98355dc3-d06c-4182-8948-0ff17557b041">
<File Id="Apatite_Supergroup.ugr" Source="$(var.SolutionDir)..\..\..\Data\Apatite_Supergroup.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Feldspar_Group.ugr" Guid="5bb329fe-c8ea-475e-988b-2108f64b2228">
<File Id="Feldspar_Group.ugr" Source="$(var.SolutionDir)..\..\..\Data\Feldspar_Group.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Mica_Group.ugr" Guid="d907fead-c39a-4a97-9574-ed886d43c6ca">
<File Id="Mica_Group.ugr" Source="$(var.SolutionDir)..\..\..\Data\Mica_Group.ugr" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="dark_windows.qss" Guid="c120ace3-5fab-416f-b7f1-a8d9e3e0f061">
<File Id="dark_windows.qss" Source="$(var.SolutionDir)..\..\..\Data\dark_windows.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="lightdark.qss" Guid="e4cbb38c-359e-464d-938b-e52ff0ce375d">
<File Id="lightdark.qss" Source="$(var.SolutionDir)..\..\..\Data\lightdark.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="uranium.qss" Guid="64e23769-0631-4c5c-a714-bf7c50dc3c1a">
<File Id="uranium.qss" Source="$(var.SolutionDir)..\..\..\Data\uranium.qss" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="VersionHistory.txt" Guid="8b031217-9e7d-4700-9ab8-2593a4e002b6">
<File Id="VersionHistory.txt" Source="$(var.SolutionDir)..\..\..\Data\Version History.txt" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="Qt6Core.dll" Guid="0198dd4b-9bbb-4ea2-86e3-6ea0f4f6ac51">
<File Id="Qt6Core.dll" Source="$(env.QTDIR)\bin\Qt6Core.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Qt6Gui.dll" Guid="7f93dcc2-55db-4920-83d7-e06c23f7719a">
<File Id="Qt6Gui.dll" Source="$(env.QTDIR)\bin\Qt6Gui.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Qt6Widgets.dll" Guid="006bb2f1-7a38-426f-ba2c-5196d1d6c24d">
<File Id="Qt6Widgets.dll" Source="$(env.QTDIR)\bin\Qt6Widgets.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Qt6OpenGL.dll" Guid="4693556b-5392-4e84-94f8-7a97ef55da87">
<File Id="Qt6OpenGL.dll" Source="$(env.QTDIR)\bin\Qt6OpenGL.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
<Component Id="Qt6OpenGLWidgets.dll" Guid="1d8c4733-e0be-4a7b-bf3a-00e2b1b7a4a8">
<File Id="Qt6OpenGLWidgets.dll" Source="$(env.QTDIR)\bin\Qt6OpenGLWidgets.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="BenchComponents" Directory="INSTALLFOLDERBENCH">
<Component Id="EmberBench.ps1" Guid="a0362c11-e54a-4712-b800-0bb7c43d285e">
<File Id="EmberBench.ps1" Source="$(var.SolutionDir)..\..\..\Data\Bench\EmberBench.ps1" KeyPath="yes" Checksum="yes" ReadOnly="no" />
</Component>
<Component Id="golubaja_rippingfrominside_complexcode.flame" Guid="74fc54d8-eb7f-4e88-b839-c6d0b847d78e">
<File Id="golubaja_rippingfrominside_complexcode.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\golubaja_rippingfrominside_complexcode.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="mfeemster_basicmemory.flame" Guid="4ebf1154-b06a-4e04-aeb7-6fb505dd9b90">
<File Id="mfeemster_basicmemory.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\mfeemster_basicmemory.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_springcrown_manysimplexforms.flame" Guid="29993c8f-26b6-41ab-b585-d535aac0bfb5">
<File Id="tatasz_springcrown_manysimplexforms.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\tatasz_springcrown_manysimplexforms.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tyrantwave_flippeddisc_normal.flame" Guid="ee38fdfd-8300-45c8-b3fb-897dca530df0">
<File Id="tyrantwave_flippeddisc_normal.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\tyrantwave_flippeddisc_normal.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="zy0rg_six_bigcomplexcode.flame" Guid="95ef408d-6d99-4dd0-89c3-105b56ff50b2">
<File Id="zy0rg_six_bigcomplexcode.flame" Source="$(var.SolutionDir)..\..\..\Data\Bench\zy0rg_six_bigcomplexcode.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ExampleComponents" Directory="INSTALLFOLDEREXAMPLES">
<Component Id="pillemaster_hexagonal_tilings.flame" Guid="a0b85758-30b2-49e7-85ca-438046cb83e8">
<File Id="pillemaster_hexagonal_tilings.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\pillemaster_hexagonal_tilings.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="plangkye_examples.flame" Guid="aa6c81a6-28e4-49e7-bef6-fdebfe21e47c">
<File Id="plangkye_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\plangkye_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_examples.flame" Guid="27d621ec-88b7-4957-ae5f-9b3cc8c8f21a">
<File Id="tatasz_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tatasz_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tatasz_substitution.flame" Guid="bb1cb196-e5d9-4250-843a-1e649c896ba8">
<File Id="tatasz_substitution.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tatasz_substitution.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="triptychaos_examples.flame" Guid="ded3e790-29ee-40c8-a279-49bf354a41ae">
<File Id="triptychaos_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\triptychaos_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="tyrantwave_base_forms.flame" Guid="8773ff3a-d29f-4a41-acb4-e06cafb236ad">
<File Id="tyrantwave_base_forms.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\tyrantwave_base_forms.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="b33rheart_examples.flame" Guid="c014f5b0-d45f-4bb5-9af7-ac98326dcef1">
<File Id="b33rheart_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\b33rheart_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="b33rheart_sierpinski.flame" Guid="535430de-6878-41b2-913e-cb35e915cb4f">
<File Id="b33rheart_sierpinski.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\b33rheart_sierpinski.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
<Component Id="c91_examples.flame" Guid="4155dcda-ba38-4211-b894-77c85d57bc9d">
<File Id="c91_examples.flame" Source="$(var.SolutionDir)..\..\..\Data\examples\c-91_examples.flame" KeyPath="yes" Checksum="yes" ReadOnly="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="PlatformComponents" Directory="INSTALLFOLDERPLATFORMS">
<Component Id="qwindows.dll" Guid="627b7f5a-8fa6-4c78-a6b7-81fcdd8fdd63">
<File Id="qwindows.dll" Source="$(env.QTDIR)\plugins\platforms\qwindows.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
<ComponentGroup Id="ImageFormatComponents" Directory="INSTALLFOLDERIMAGEFORMATS">
<Component Id="qjpeg.dll" Guid="da079a2d-1ab7-443c-a21e-4434ef58c6cc">
<File Id="qjpeg.dll" Source="$(env.QTDIR)\plugins\imageformats\qjpeg.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@ -1,176 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberNs</RootNamespace>
<ProjectName>Ember</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_EMBER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<StructMemberAlignment>Default</StructMemberAlignment>
<PrecompiledHeaderFile>EmberPch.h</PrecompiledHeaderFile>
<FloatingPointModel>Precise</FloatingPointModel>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libxml2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_EMBER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PrecompiledHeaderFile>EmberPch.h</PrecompiledHeaderFile>
<StringPooling>true</StringPooling>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libxml2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\Ember\Affine2D.h" />
<ClInclude Include="..\..\..\Source\Ember\CarToRas.h" />
<ClInclude Include="..\..\..\Source\Ember\Spline.h" />
<ClInclude Include="..\..\..\Source\Ember\Curves.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberDefines.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberMotion.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberPch.h" />
<ClInclude Include="..\..\..\Source\Ember\Ember.h" />
<ClInclude Include="..\..\..\Source\Ember\DensityFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\Interpolate.h" />
<ClInclude Include="..\..\..\Source\Ember\VarFuncs.h" />
<ClInclude Include="..\..\..\Source\Ember\PaletteList.h" />
<ClInclude Include="..\..\..\Source\Ember\Renderer.h" />
<ClInclude Include="..\..\..\Source\Ember\RendererBase.h" />
<ClInclude Include="..\..\..\Source\Ember\SpatialFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\Iterator.h" />
<ClInclude Include="..\..\..\Source\Ember\Palette.h" />
<ClInclude Include="..\..\..\Source\Ember\Point.h" />
<ClInclude Include="..\..\..\Source\Ember\TemporalFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberToXml.h" />
<ClInclude Include="..\..\..\Source\Ember\SheepTools.h" />
<ClInclude Include="..\..\..\Source\Ember\Utils.h" />
<ClInclude Include="..\..\..\Source\Ember\Variation.h" />
<ClInclude Include="..\..\..\Source\Ember\VariationList.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations01.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations02.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations03.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations04.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations05.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations06.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations07.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations08.h" />
<ClInclude Include="..\..\..\Source\Ember\VariationsDC.h" />
<ClInclude Include="..\..\..\Source\Ember\Xform.h" />
<ClInclude Include="..\..\..\Source\Ember\Isaac.h" />
<ClInclude Include="..\..\..\Source\Ember\Timing.h" />
<ClInclude Include="..\..\..\Source\Ember\XmlToEmber.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Ember\Affine2D.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Spline.cpp" />
<ClCompile Include="..\..\..\Source\Ember\DllMain.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Ember.cpp" />
<ClCompile Include="..\..\..\Source\Ember\EmberPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberToXml.cpp" />
<ClCompile Include="..\..\..\Source\Ember\PaletteList.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Renderer.cpp" />
<ClCompile Include="..\..\..\Source\Ember\RendererBase.cpp" />
<ClCompile Include="..\..\..\Source\Ember\VariationList.cpp" />
<ClCompile Include="..\..\..\Source\Ember\XmlToEmber.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Ember.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberNs</RootNamespace>
<ProjectName>Ember</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_EMBER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<StructMemberAlignment>Default</StructMemberAlignment>
<PrecompiledHeaderFile>EmberPch.h</PrecompiledHeaderFile>
<FloatingPointModel>Precise</FloatingPointModel>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libxml2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_EMBER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PrecompiledHeaderFile>EmberPch.h</PrecompiledHeaderFile>
<StringPooling>true</StringPooling>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libxml2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\Ember\Affine2D.h" />
<ClInclude Include="..\..\..\Source\Ember\CarToRas.h" />
<ClInclude Include="..\..\..\Source\Ember\Spline.h" />
<ClInclude Include="..\..\..\Source\Ember\Curves.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberDefines.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberMotion.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberPch.h" />
<ClInclude Include="..\..\..\Source\Ember\Ember.h" />
<ClInclude Include="..\..\..\Source\Ember\DensityFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\Interpolate.h" />
<ClInclude Include="..\..\..\Source\Ember\VarFuncs.h" />
<ClInclude Include="..\..\..\Source\Ember\PaletteList.h" />
<ClInclude Include="..\..\..\Source\Ember\Renderer.h" />
<ClInclude Include="..\..\..\Source\Ember\RendererBase.h" />
<ClInclude Include="..\..\..\Source\Ember\SpatialFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\Iterator.h" />
<ClInclude Include="..\..\..\Source\Ember\Palette.h" />
<ClInclude Include="..\..\..\Source\Ember\Point.h" />
<ClInclude Include="..\..\..\Source\Ember\TemporalFilter.h" />
<ClInclude Include="..\..\..\Source\Ember\EmberToXml.h" />
<ClInclude Include="..\..\..\Source\Ember\SheepTools.h" />
<ClInclude Include="..\..\..\Source\Ember\Utils.h" />
<ClInclude Include="..\..\..\Source\Ember\Variation.h" />
<ClInclude Include="..\..\..\Source\Ember\VariationList.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations01.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations02.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations03.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations04.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations05.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations06.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations07.h" />
<ClInclude Include="..\..\..\Source\Ember\Variations08.h" />
<ClInclude Include="..\..\..\Source\Ember\VariationsDC.h" />
<ClInclude Include="..\..\..\Source\Ember\Xform.h" />
<ClInclude Include="..\..\..\Source\Ember\Isaac.h" />
<ClInclude Include="..\..\..\Source\Ember\Timing.h" />
<ClInclude Include="..\..\..\Source\Ember\XmlToEmber.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Ember\Affine2D.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Spline.cpp" />
<ClCompile Include="..\..\..\Source\Ember\DllMain.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Ember.cpp" />
<ClCompile Include="..\..\..\Source\Ember\EmberPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberToXml.cpp" />
<ClCompile Include="..\..\..\Source\Ember\PaletteList.cpp" />
<ClCompile Include="..\..\..\Source\Ember\Renderer.cpp" />
<ClCompile Include="..\..\..\Source\Ember\RendererBase.cpp" />
<ClCompile Include="..\..\..\Source\Ember\VariationList.cpp" />
<ClCompile Include="..\..\..\Source\Ember\XmlToEmber.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Ember.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,178 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\Xml">
<UniqueIdentifier>{bc119dca-b280-4071-b72d-f8c377b2e192}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Filters">
<UniqueIdentifier>{39f9b624-d25e-4af7-9f76-3b1a36a8a0f5}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Variations">
<UniqueIdentifier>{1ae77918-b5ee-4186-9fec-802fed55144e}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{782f9ed7-c2d4-4cad-9676-f707ccde10a6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\Ember\Timing.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Isaac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Interpolate.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Iterator.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Palette.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\PaletteList.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Point.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Renderer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Utils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Xform.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\DensityFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\SpatialFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\TemporalFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberToXml.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\XmlToEmber.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\CarToRas.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberDefines.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Ember.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Affine2D.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\SheepTools.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variation.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VariationList.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations01.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations02.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations03.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations04.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations05.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VariationsDC.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\RendererBase.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Curves.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberMotion.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations06.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VarFuncs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations07.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Spline.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations08.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Ember\DllMain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Ember.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Affine2D.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Renderer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\RendererBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\VariationList.cpp">
<Filter>Header Files\Variations</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberToXml.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\XmlToEmber.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\PaletteList.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Spline.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Ember.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\Xml">
<UniqueIdentifier>{bc119dca-b280-4071-b72d-f8c377b2e192}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Filters">
<UniqueIdentifier>{39f9b624-d25e-4af7-9f76-3b1a36a8a0f5}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Variations">
<UniqueIdentifier>{1ae77918-b5ee-4186-9fec-802fed55144e}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{782f9ed7-c2d4-4cad-9676-f707ccde10a6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\Ember\Timing.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Isaac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Interpolate.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Iterator.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Palette.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\PaletteList.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Point.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Renderer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Utils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Xform.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\DensityFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\SpatialFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\TemporalFilter.h">
<Filter>Header Files\Filters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberToXml.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\XmlToEmber.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\CarToRas.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberDefines.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Ember.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Affine2D.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\SheepTools.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variation.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VariationList.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations01.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations02.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations03.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations04.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations05.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VariationsDC.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\RendererBase.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Curves.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\EmberMotion.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations06.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\VarFuncs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations07.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Spline.h">
<Filter>Header Files\Xml</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Ember\Variations08.h">
<Filter>Header Files\Variations</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Ember\DllMain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Ember.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Affine2D.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Renderer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\RendererBase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\VariationList.cpp">
<Filter>Header Files\Variations</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\EmberToXml.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\XmlToEmber.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\PaletteList.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Ember\Spline.cpp">
<Filter>Header Files\Xml</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Ember.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,98 +1,98 @@
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberAnimate.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberAnimate.exe"
VALUE "ProductName", "Ember Animate"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberAnimate.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberAnimate.exe"
VALUE "ProductName", "Ember Animate"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,153 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{35285FCF-6FA8-410E-841B-70AE744D38B8}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberAnimate</RootNamespace>
<ProjectName>EmberAnimate</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberAnimate\EmberAnimate.h" />
<ClInclude Include="..\..\..\Source\EmberAnimate\resource.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberAnimate\EmberAnimate.cpp" />
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberAnimate.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{35285FCF-6FA8-410E-841B-70AE744D38B8}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberAnimate</RootNamespace>
<ProjectName>EmberAnimate</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberAnimate\EmberAnimate.h" />
<ClInclude Include="..\..\..\Source\EmberAnimate\resource.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberAnimate\EmberAnimate.cpp" />
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberAnimate.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,62 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberAnimate\EmberAnimate.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberAnimate\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberAnimate\EmberAnimate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberAnimate.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberAnimate\EmberAnimate.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberAnimate\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberAnimate\EmberAnimate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberAnimate.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,155 +1,177 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F6A9102C-69A9-48FB-BC4B-49E49AF43236}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberCLns</RootNamespace>
<ProjectName>EmberCL</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_EMBERCL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember\;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<StructMemberAlignment>Default</StructMemberAlignment>
<PrecompiledHeaderFile>EmberCLPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libxml2.lib;opencl.lib;Opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_EMBERCL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember\;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PrecompiledHeaderFile>EmberCLPch.h</PrecompiledHeaderFile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libxml2.lib;opencl.lib;Opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCL\DllMain.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\FunctionMapper.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLInfo.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLWrapper.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\RendererCL.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\RendererClDevice.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLFunctions.h" />
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLStructs.h" />
<ClInclude Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\FunctionMapper.h" />
<ClInclude Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLInfo.h" />
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLWrapper.h" />
<ClInclude Include="..\..\..\Source\EmberCL\RendererCL.h" />
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLPch.h" />
<ClInclude Include="..\..\..\Source\EmberCL\RendererClDevice.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberCL.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F6A9102C-69A9-48FB-BC4B-49E49AF43236}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberCLns</RootNamespace>
<ProjectName>EmberCL</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BUILDING_EMBERCL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember\;$(ProjectDir)..\..\..\Source\EmberCL\;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<StructMemberAlignment>Default</StructMemberAlignment>
<PrecompiledHeaderFile>EmberCLPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libxml2.lib;opencl.lib;Opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_EMBERCL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember\;$(ProjectDir)..\..\..\Source\EmberCL\;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libxml2\include</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PrecompiledHeaderFile>EmberCLPch.h</PrecompiledHeaderFile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libxml2.lib;opencl.lib;Opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCL\DllMain.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\FunctionMapper.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLInfo.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLWrapper.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\RendererCL.cpp" />
<ClCompile Include="..\..\..\Source\EmberCL\RendererClDevice.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_d3d10.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_d3d11.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_dx9_media_sharing.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_dx9_media_sharing_intel.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_egl.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_ext.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_ext_intel.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_gl.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_gl_ext.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_half.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_icd.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_layer.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_platform.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_va_api_media_sharing_intel.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_version.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\opencl.h" />
<ClInclude Include="..\..\..\Source\EmberCL\CL\opencl.hpp" />
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLFunctions.h" />
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLStructs.h" />
<ClInclude Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\FunctionMapper.h" />
<ClInclude Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.h" />
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLInfo.h" />
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLWrapper.h" />
<ClInclude Include="..\..\..\Source\EmberCL\RendererCL.h" />
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLPch.h" />
<ClInclude Include="..\..\..\Source\EmberCL\RendererClDevice.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberCL.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,89 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Kernel Creators">
<UniqueIdentifier>{d66f35ca-a4cd-470a-9c56-653b0665b598}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCL\DllMain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLWrapper.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\RendererCL.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\RendererClDevice.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLInfo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FunctionMapper.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLWrapper.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\RendererCL.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLStructs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLFunctions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\RendererClDevice.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLInfo.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\FunctionMapper.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberCL.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Kernel Creators">
<UniqueIdentifier>{d66f35ca-a4cd-470a-9c56-653b0665b598}</UniqueIdentifier>
</Filter>
<Filter Include="CL">
<UniqueIdentifier>{e37b04de-79bc-483b-9725-618dbe484452}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCL\DllMain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLWrapper.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\RendererCL.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.cpp">
<Filter>Kernel Creators</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\RendererClDevice.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\OpenCLInfo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCL\FunctionMapper.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLWrapper.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\RendererCL.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLStructs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\EmberCLFunctions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\DEOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\FinalAccumOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\IterOpenCLKernelCreator.h">
<Filter>Kernel Creators</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\RendererClDevice.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\OpenCLInfo.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\FunctionMapper.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_d3d10.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_d3d11.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_dx9_media_sharing.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_dx9_media_sharing_intel.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_egl.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_ext.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_ext_intel.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_gl.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_gl_ext.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_half.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_icd.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_layer.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_platform.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_va_api_media_sharing_intel.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\cl_version.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\opencl.h">
<Filter>CL</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCL\CL\opencl.hpp">
<Filter>CL</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberCL.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,98 +1,98 @@
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Manipulates fractal flame parameter files"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberGenome.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberGenome.exe"
VALUE "ProductName", "Ember Genome"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Manipulates fractal flame parameter files"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberGenome.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberGenome.exe"
VALUE "ProductName", "Ember Genome"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,152 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberGenome</RootNamespace>
<ProjectName>EmberGenome</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberGenome\EmberGenome.h" />
<ClInclude Include="..\..\..\Source\EmberGenome\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberGenome\EmberGenome.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberGenome.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberGenome</RootNamespace>
<ProjectName>EmberGenome</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberGenome\EmberGenome.h" />
<ClInclude Include="..\..\..\Source\EmberGenome\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberGenome\EmberGenome.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberGenome.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,61 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberGenome\EmberGenome.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberGenome\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberGenome\EmberGenome.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberGenome.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberGenome\EmberGenome.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberGenome\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberGenome\EmberGenome.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberGenome.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,98 +1,98 @@
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as single images"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberRender.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberRender.exe"
VALUE "ProductName", "Ember Render"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
// Microsoft Visual C++ generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\..\\..\\Source\\Fractorium\\Icons\\Fractorium.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 22, 21, 4, 2
PRODUCTVERSION 22, 21, 4, 2
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x0L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as single images"
VALUE "FileVersion", "22, 21, 4, 2"
VALUE "InternalName", "EmberRender.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2021, GPL v3"
VALUE "OriginalFilename", "EmberRender.exe"
VALUE "ProductName", "Ember Render"
VALUE "ProductVersion", "22, 21, 4, 2"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -1,153 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberRender</RootNamespace>
<ProjectName>EmberRender</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberRender\EmberRender.h" />
<ClInclude Include="..\..\..\Source\EmberRender\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberRender\EmberRender.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberRender.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberRender</RootNamespace>
<ProjectName>EmberRender</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<FloatingPointModel>Precise</FloatingPointModel>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FloatingPointExceptions>false</FloatingPointExceptions>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberRender\EmberRender.h" />
<ClInclude Include="..\..\..\Source\EmberRender\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberRender\EmberRender.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberRender.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,61 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberRender\EmberRender.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberRender\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberRender\EmberRender.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberRender.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberRender\EmberRender.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberRender\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberRender\EmberRender.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="EmberRender.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,145 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{320F611A-F9CE-4196-A8DC-FA24B2E8A320}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberTester</RootNamespace>
<ProjectName>EmberTester</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OPENEXR_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OPENEXR_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR;$(AMDAPPSDKROOT)\include;$(CUDA_PATH)\include</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(AMDAPPSDKROOT)\lib\x86_64;$(CUDA_PATH)\lib\$(PlatformName)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberTester\EmberTester.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberTester\EmberTester.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{320F611A-F9CE-4196-A8DC-FA24B2E8A320}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>EmberTester</RootNamespace>
<ProjectName>EmberTester</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<RunCodeAnalysis>false</RunCodeAnalysis>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)..\..\..\Bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)Obj\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
<RunCodeAnalysis>false</RunCodeAnalysis>
<EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;OPENEXR_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;OPENEXR_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ProgramDataBaseFileName>$(TargetDir)$(TargetName).pdb</ProgramDataBaseFileName>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\Source\Ember;$(ProjectDir)..\..\..\Source\EmberCommon;$(ProjectDir)..\..\..\Source\EmberCL;$(ProjectDir)..\..\..\..\glm;$(ProjectDir)..\..\..\..\libjpeg;$(ProjectDir)..\..\..\..\libpng;$(ProjectDir)..\..\..\..\libxml2\include;$(ProjectDir)..\..\..\..\openexr\output\include\Imath;$(ProjectDir)..\..\..\..\openexr\output\include\OpenEXR</AdditionalIncludeDirectories>
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PrecompiledHeaderFile>EmberCommonPch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<StringPooling>true</StringPooling>
<FloatingPointExceptions>false</FloatingPointExceptions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>libjpeg.lib;libpng.lib;libxml2.lib;zlib.lib;Iex-3_1.lib;Imath-3_1.lib;OpenEXR-3_1.lib;opencl.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(ProjectDir)..\..\..\Deps;$(OCL_ROOT)\lib\x86_64</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Deps\*.dll" "$(OutDir)"
xcopy /F /Y /R /D "$(SolutionDir)..\..\..\Data\flam3-palettes.xml" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="Ember.vcxproj">
<Project>{2bdb7a54-bb1a-476b-a6e5-f81e90ad4e67}</Project>
</ProjectReference>
<ProjectReference Include="EmberCL.vcxproj">
<Project>{f6a9102c-69a9-48fb-bc4b-49e49af43236}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h" />
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h" />
<ClInclude Include="..\..\..\Source\EmberTester\EmberTester.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberTester\EmberTester.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,48 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberTester\EmberTester.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberTester\EmberTester.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommonPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberOptions.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\JpegUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleGlob.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\SimpleOpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberTester\EmberTester.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\EmberTester\EmberTester.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\EmberCommon\EmberCommonPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,107 +1,107 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2036
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ember", "Ember.vcxproj", "{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberTester", "EmberTester.vcxproj", "{320F611A-F9CE-4196-A8DC-FA24B2E8A320}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Fractorium", "Fractorium.vcxproj", "{6547D5FA-64CE-44BA-9D3C-B6E217456445}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberRender", "EmberRender.vcxproj", "{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberAnimate", "EmberAnimate.vcxproj", "{35285FCF-6FA8-410E-841B-70AE744D38B8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberGenome", "EmberGenome.vcxproj", "{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberCL", "EmberCL.vcxproj", "{F6A9102C-69A9-48FB-BC4B-49E49AF43236}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "FractoriumInstaller", "..\Installer\FractoriumInstaller.wixproj", "{C8096C47-E358-438C-A520-146D46B0637D}"
ProjectSection(ProjectDependencies) = postProject
{F6A9102C-69A9-48FB-BC4B-49E49AF43236} = {F6A9102C-69A9-48FB-BC4B-49E49AF43236}
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29} = {4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67} = {2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7} = {7930CAAC-9FC4-4202-B6A3-E760F73F88B7}
{35285FCF-6FA8-410E-841B-70AE744D38B8} = {35285FCF-6FA8-410E-841B-70AE744D38B8}
{6547D5FA-64CE-44BA-9D3C-B6E217456445} = {6547D5FA-64CE-44BA-9D3C-B6E217456445}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5CD06D80-903E-45D6-90F3-3C3EB4FFE46F}"
ProjectSection(SolutionItems) = preProject
..\..\..\Data\Version History.txt = ..\..\..\Data\Version History.txt
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "apoconv", "..\..\..\Source\apoconv\apoconv.csproj", "{4F78C421-8985-4411-8FFD-B0F323F857BE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|Any CPU.ActiveCfg = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|x64.ActiveCfg = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|x64.Build.0 = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|Any CPU.ActiveCfg = Release|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|x64.ActiveCfg = Release|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|x64.Build.0 = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|Any CPU.ActiveCfg = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|x64.ActiveCfg = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|x64.Build.0 = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|Any CPU.ActiveCfg = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|x64.ActiveCfg = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|x64.Build.0 = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|Any CPU.ActiveCfg = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|x64.ActiveCfg = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|x64.Build.0 = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|Any CPU.ActiveCfg = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|x64.ActiveCfg = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|x64.Build.0 = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|Any CPU.ActiveCfg = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|x64.ActiveCfg = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|x64.Build.0 = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|Any CPU.ActiveCfg = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|x64.ActiveCfg = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|x64.Build.0 = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|Any CPU.ActiveCfg = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|x64.ActiveCfg = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|x64.Build.0 = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|Any CPU.ActiveCfg = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|x64.ActiveCfg = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|x64.Build.0 = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|Any CPU.ActiveCfg = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|x64.ActiveCfg = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|x64.Build.0 = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|Any CPU.ActiveCfg = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|x64.ActiveCfg = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|x64.Build.0 = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|Any CPU.ActiveCfg = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|x64.ActiveCfg = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|x64.Build.0 = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|Any CPU.ActiveCfg = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|x64.ActiveCfg = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|x64.Build.0 = Release|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Debug|Any CPU.ActiveCfg = Debug|x86
{C8096C47-E358-438C-A520-146D46B0637D}.Debug|x64.ActiveCfg = Debug|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Release|Any CPU.ActiveCfg = Release|x86
{C8096C47-E358-438C-A520-146D46B0637D}.Release|x64.ActiveCfg = Release|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Release|x64.Build.0 = Release|x64
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|x64.ActiveCfg = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|x64.Build.0 = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|Any CPU.Build.0 = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|x64.ActiveCfg = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7C67FAD-9040-4BCB-8613-18DFE58D38C4}
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2036
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ember", "Ember.vcxproj", "{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberTester", "EmberTester.vcxproj", "{320F611A-F9CE-4196-A8DC-FA24B2E8A320}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Fractorium", "Fractorium.vcxproj", "{6547D5FA-64CE-44BA-9D3C-B6E217456445}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberRender", "EmberRender.vcxproj", "{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberAnimate", "EmberAnimate.vcxproj", "{35285FCF-6FA8-410E-841B-70AE744D38B8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberGenome", "EmberGenome.vcxproj", "{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmberCL", "EmberCL.vcxproj", "{F6A9102C-69A9-48FB-BC4B-49E49AF43236}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "FractoriumInstaller", "..\Installer\FractoriumInstaller.wixproj", "{C8096C47-E358-438C-A520-146D46B0637D}"
ProjectSection(ProjectDependencies) = postProject
{F6A9102C-69A9-48FB-BC4B-49E49AF43236} = {F6A9102C-69A9-48FB-BC4B-49E49AF43236}
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29} = {4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67} = {2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7} = {7930CAAC-9FC4-4202-B6A3-E760F73F88B7}
{35285FCF-6FA8-410E-841B-70AE744D38B8} = {35285FCF-6FA8-410E-841B-70AE744D38B8}
{6547D5FA-64CE-44BA-9D3C-B6E217456445} = {6547D5FA-64CE-44BA-9D3C-B6E217456445}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5CD06D80-903E-45D6-90F3-3C3EB4FFE46F}"
ProjectSection(SolutionItems) = preProject
..\..\..\Data\Version History.txt = ..\..\..\Data\Version History.txt
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "apoconv", "..\..\..\Source\apoconv\apoconv.csproj", "{4F78C421-8985-4411-8FFD-B0F323F857BE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|Any CPU.ActiveCfg = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|x64.ActiveCfg = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Debug|x64.Build.0 = Debug|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|Any CPU.ActiveCfg = Release|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|x64.ActiveCfg = Release|x64
{2BDB7A54-BB1A-476B-A6E5-F81E90AD4E67}.Release|x64.Build.0 = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|Any CPU.ActiveCfg = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|x64.ActiveCfg = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Debug|x64.Build.0 = Debug|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|Any CPU.ActiveCfg = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|x64.ActiveCfg = Release|x64
{320F611A-F9CE-4196-A8DC-FA24B2E8A320}.Release|x64.Build.0 = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|Any CPU.ActiveCfg = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|x64.ActiveCfg = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Debug|x64.Build.0 = Debug|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|Any CPU.ActiveCfg = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|x64.ActiveCfg = Release|x64
{6547D5FA-64CE-44BA-9D3C-B6E217456445}.Release|x64.Build.0 = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|Any CPU.ActiveCfg = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|x64.ActiveCfg = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Debug|x64.Build.0 = Debug|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|Any CPU.ActiveCfg = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|x64.ActiveCfg = Release|x64
{4A191F4C-03AC-4F1B-AFFD-F5483ECEBD29}.Release|x64.Build.0 = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|Any CPU.ActiveCfg = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|x64.ActiveCfg = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Debug|x64.Build.0 = Debug|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|Any CPU.ActiveCfg = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|x64.ActiveCfg = Release|x64
{35285FCF-6FA8-410E-841B-70AE744D38B8}.Release|x64.Build.0 = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|Any CPU.ActiveCfg = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|x64.ActiveCfg = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Debug|x64.Build.0 = Debug|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|Any CPU.ActiveCfg = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|x64.ActiveCfg = Release|x64
{7930CAAC-9FC4-4202-B6A3-E760F73F88B7}.Release|x64.Build.0 = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|Any CPU.ActiveCfg = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|x64.ActiveCfg = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Debug|x64.Build.0 = Debug|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|Any CPU.ActiveCfg = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|x64.ActiveCfg = Release|x64
{F6A9102C-69A9-48FB-BC4B-49E49AF43236}.Release|x64.Build.0 = Release|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Debug|Any CPU.ActiveCfg = Debug|x86
{C8096C47-E358-438C-A520-146D46B0637D}.Debug|x64.ActiveCfg = Debug|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Release|Any CPU.ActiveCfg = Release|x86
{C8096C47-E358-438C-A520-146D46B0637D}.Release|x64.ActiveCfg = Release|x64
{C8096C47-E358-438C-A520-146D46B0637D}.Release|x64.Build.0 = Release|x64
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|x64.ActiveCfg = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Debug|x64.Build.0 = Debug|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|Any CPU.Build.0 = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|x64.ActiveCfg = Release|Any CPU
{4F78C421-8985-4411-8FFD-B0F323F857BE}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C7C67FAD-9040-4BCB-8613-18DFE58D38C4}
EndGlobalSection
EndGlobal

File diff suppressed because it is too large Load Diff

View File

@ -1,489 +1,489 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;cxx;c;def</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h</Extensions>
</Filter>
<Filter Include="Form Files">
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
<Extensions>ui</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
<Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
<Extensions>moc;h;cpp</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Generated Files\Debug">
<UniqueIdentifier>{44a6e761-1e1f-46ce-820d-b80d1c0265ae}</UniqueIdentifier>
<Extensions>cpp;moc</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Generated Files\Release">
<UniqueIdentifier>{cc25f297-1a73-4c08-9b5f-8dad7c7c7452}</UniqueIdentifier>
<Extensions>cpp;moc</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Glm">
<UniqueIdentifier>{d61ea4d8-e7a6-4d86-934e-992611e1c181}</UniqueIdentifier>
</Filter>
<Filter Include="Widgets">
<UniqueIdentifier>{84e24710-0e4f-4aa3-9f74-82cd2a3b39a7}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs">
<UniqueIdentifier>{5555e39d-b8d2-4bac-bf6c-6763228b15bc}</UniqueIdentifier>
</Filter>
<Filter Include="MainWindows">
<UniqueIdentifier>{26fa32d9-268c-4021-8398-d40d46344dff}</UniqueIdentifier>
</Filter>
<Filter Include="Controllers">
<UniqueIdentifier>{811962f9-51c1-48ba-a9da-f5ce981aea71}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs\Qss">
<UniqueIdentifier>{5ba9fccd-8922-4037-956f-d57177a43700}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs\PaletteEditor">
<UniqueIdentifier>{30bfa226-b712-471b-a4ff-cf01d10cf1f4}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Fractorium\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\qrc_Fractorium.cpp">
<Filter>Generated Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\DoubleSpinBox.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\SpinBox.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\AboutDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FinalRenderDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\OptionsDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\Fractorium.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\GLWidget.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumParams.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXforms.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsColor.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsAffine.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsVariations.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumPalette.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumLibrary.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumInfo.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumMenus.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumRender.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumSettings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumToolbar.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FinalRenderEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\GLEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\CurvesGraphicsView.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXaos.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsSelect.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\VariationsDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\QssDialog.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\csshighlighter.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\qcssparser.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\QssTextEdit.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\qcssscanner.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_VariationsDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_VariationsDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_TwoButtonComboWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_TwoButtonComboWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_TableWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_TableWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_StealthComboBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_StealthComboBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_SpinBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_SpinBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_QssTextEdit.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_QssTextEdit.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_QssDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_QssDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_OptionsDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_OptionsDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_GLWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_GLWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_FractoriumSettings.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_FractoriumSettings.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_Fractorium.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_Fractorium.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_FinalRenderDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_FinalRenderDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_DoubleSpinBoxTableItemDelegate.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_DoubleSpinBoxTableItemDelegate.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_DoubleSpinBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_DoubleSpinBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_CurvesGraphicsView.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_CurvesGraphicsView.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_csshighlighter.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_csshighlighter.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_AboutDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_AboutDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_LibraryTreeWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_LibraryTreeWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\LibraryTreeWidget.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPanel.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorPanel.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorPanel.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPickerWidget.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorPickerWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorPickerWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorTriangle.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorTriangle.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorTriangle.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\GradientColorsView.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_GradientColorsView.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_GradientColorsView.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\PaletteEditor.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_PaletteEditor.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_PaletteEditor.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="GeneratedFiles\ui_Fractorium.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\glm\glm\glm.hpp">
<Filter>Glm</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\EmberFile.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_OptionsDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_AboutDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_FinalRenderDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FinalRenderEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\GLEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\PaletteTableWidgetItem.h">
<Filter>Widgets</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_VariationsDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_QssDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\qcssparser.h">
<Filter>Dialogs\Qss</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\qfunctions.h">
<Filter>Dialogs\Qss</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\PaletteEditor\GradientArrow.h">
<Filter>Dialogs\PaletteEditor</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_paletteeditor.h">
<Filter>Generated Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.qrc">
<Filter>Resource Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\OptionsDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\AboutDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FinalRenderDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\DoubleSpinBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\TableWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationTreeWidgetItem.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\AboutDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FinalRenderDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\OptionsDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\SpinBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\GLWidget.h">
<Filter>MainWindows</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\EmberTreeWidgetItem.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\StealthComboBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FractoriumSettings.h">
<Filter>Header Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\TwoButtonComboWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\CurvesGraphicsView.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\DoubleSpinBoxTableItemDelegate.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationsDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationsDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssDialog.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssTextEdit.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\csshighlighter.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\LibraryTreeWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPanel.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPickerWidget.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorTriangle.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\GradientColorsView.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\PaletteEditor.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\paletteeditor.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.h">
<Filter>Header Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Fractorium.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;cxx;c;def</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h</Extensions>
</Filter>
<Filter Include="Form Files">
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
<Extensions>ui</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
<Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
<Extensions>moc;h;cpp</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Generated Files\Debug">
<UniqueIdentifier>{44a6e761-1e1f-46ce-820d-b80d1c0265ae}</UniqueIdentifier>
<Extensions>cpp;moc</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Generated Files\Release">
<UniqueIdentifier>{cc25f297-1a73-4c08-9b5f-8dad7c7c7452}</UniqueIdentifier>
<Extensions>cpp;moc</Extensions>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
<Filter Include="Glm">
<UniqueIdentifier>{d61ea4d8-e7a6-4d86-934e-992611e1c181}</UniqueIdentifier>
</Filter>
<Filter Include="Widgets">
<UniqueIdentifier>{84e24710-0e4f-4aa3-9f74-82cd2a3b39a7}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs">
<UniqueIdentifier>{5555e39d-b8d2-4bac-bf6c-6763228b15bc}</UniqueIdentifier>
</Filter>
<Filter Include="MainWindows">
<UniqueIdentifier>{26fa32d9-268c-4021-8398-d40d46344dff}</UniqueIdentifier>
</Filter>
<Filter Include="Controllers">
<UniqueIdentifier>{811962f9-51c1-48ba-a9da-f5ce981aea71}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs\Qss">
<UniqueIdentifier>{5ba9fccd-8922-4037-956f-d57177a43700}</UniqueIdentifier>
</Filter>
<Filter Include="Dialogs\PaletteEditor">
<UniqueIdentifier>{30bfa226-b712-471b-a4ff-cf01d10cf1f4}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\Source\Fractorium\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\qrc_Fractorium.cpp">
<Filter>Generated Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumPch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\DoubleSpinBox.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\SpinBox.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\AboutDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FinalRenderDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\OptionsDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\Fractorium.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\GLWidget.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumParams.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXforms.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsColor.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsAffine.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsVariations.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumPalette.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumLibrary.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumInfo.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumMenus.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumRender.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumSettings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumToolbar.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FinalRenderEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\GLEmberController.cpp">
<Filter>Controllers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\CurvesGraphicsView.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXaos.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\FractoriumXformsSelect.cpp">
<Filter>MainWindows</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\VariationsDialog.cpp">
<Filter>Dialogs</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\QssDialog.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\csshighlighter.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\qcssparser.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\QssTextEdit.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\qcssscanner.cpp">
<Filter>Dialogs\Qss</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_VariationsDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_VariationsDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_TwoButtonComboWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_TwoButtonComboWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_TableWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_TableWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_StealthComboBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_StealthComboBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_SpinBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_SpinBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_QssTextEdit.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_QssTextEdit.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_QssDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_QssDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_OptionsDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_OptionsDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_GLWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_GLWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_FractoriumSettings.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_FractoriumSettings.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_Fractorium.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_Fractorium.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_FinalRenderDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_FinalRenderDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_DoubleSpinBoxTableItemDelegate.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_DoubleSpinBoxTableItemDelegate.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_DoubleSpinBox.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_DoubleSpinBox.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_CurvesGraphicsView.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_CurvesGraphicsView.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_csshighlighter.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_csshighlighter.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_AboutDialog.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_AboutDialog.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_LibraryTreeWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_LibraryTreeWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\LibraryTreeWidget.cpp">
<Filter>Widgets</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPanel.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorPanel.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorPanel.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPickerWidget.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorPickerWidget.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorPickerWidget.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\ColorTriangle.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_ColorTriangle.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_ColorTriangle.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\GradientColorsView.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_GradientColorsView.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_GradientColorsView.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="..\..\..\Source\Fractorium\PaletteEditor\PaletteEditor.cpp">
<Filter>Dialogs\PaletteEditor</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Debug\moc_PaletteEditor.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_PaletteEditor.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="GeneratedFiles\ui_Fractorium.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\glm\glm\glm.hpp">
<Filter>Glm</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\EmberFile.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumPch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_OptionsDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_AboutDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_FinalRenderDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FinalRenderEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\GLEmberController.h">
<Filter>Controllers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\EmberCommon\EmberCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\FractoriumCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\PaletteTableWidgetItem.h">
<Filter>Widgets</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_VariationsDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_QssDialog.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\qcssparser.h">
<Filter>Dialogs\Qss</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\qfunctions.h">
<Filter>Dialogs\Qss</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Source\Fractorium\PaletteEditor\GradientArrow.h">
<Filter>Dialogs\PaletteEditor</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\ui_paletteeditor.h">
<Filter>Generated Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.qrc">
<Filter>Resource Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\OptionsDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\AboutDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FinalRenderDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\DoubleSpinBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\TableWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationTreeWidgetItem.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\AboutDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FinalRenderDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\OptionsDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\SpinBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\GLWidget.h">
<Filter>MainWindows</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\EmberTreeWidgetItem.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\StealthComboBox.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\FractoriumSettings.h">
<Filter>Header Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\TwoButtonComboWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\CurvesGraphicsView.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\DoubleSpinBoxTableItemDelegate.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationsDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\VariationsDialog.h">
<Filter>Dialogs</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssDialog.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssDialog.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\QssTextEdit.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\csshighlighter.h">
<Filter>Dialogs\Qss</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\LibraryTreeWidget.h">
<Filter>Widgets</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPanel.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorPickerWidget.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\ColorTriangle.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\GradientColorsView.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\PaletteEditor\PaletteEditor.h">
<Filter>Dialogs\PaletteEditor</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\paletteeditor.ui">
<Filter>Form Files</Filter>
</CustomBuild>
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.h">
<Filter>Header Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Fractorium.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -1,14 +1,14 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by EmberCL.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by EmberCL.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -1,14 +1,14 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Ember.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Ember.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -1,37 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
* zlib.props - location of zlib source
*
* libpng version 1.5.12 - July 11, 2012
*
* Copyright (c) 1998-2011 Glenn Randers-Pehrson
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
* You must edit this file to record the location of the zlib
* source code.
-->
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<!-- Place the name of the directory containing the source of zlib used for
debugging in this property.
The directory need only contain the '.c' and '.h' files from the
source.
If you use a relative directory name (as below) then it must be
relative to the project directories; these are one level deepers than
the directories containing this file.
If the version of zlib you use does not match that used when the
distribution was built you will get warnings from pngtest that the zlib
versions do not match. The zlib version used in this build is recorded
below:
-->
<ZLibSrcDir>..\..\..\..\zlib</ZLibSrcDir>
</PropertyGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<!--
* zlib.props - location of zlib source
*
* libpng version 1.5.12 - July 11, 2012
*
* Copyright (c) 1998-2011 Glenn Randers-Pehrson
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
* and license in png.h
* You must edit this file to record the location of the zlib
* source code.
-->
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<!-- Place the name of the directory containing the source of zlib used for
debugging in this property.
The directory need only contain the '.c' and '.h' files from the
source.
If you use a relative directory name (as below) then it must be
relative to the project directories; these are one level deepers than
the directories containing this file.
If the version of zlib you use does not match that used when the
distribution was built you will get warnings from pngtest that the zlib
versions do not match. The zlib version used in this build is recorded
below:
-->
<ZLibSrcDir>..\..\..\..\zlib</ZLibSrcDir>
</PropertyGroup>
</Project>

View File

@ -1,491 +1,491 @@
# =========================================================================
# WIN32.MAK - Win32 application master NMAKE definitions file for the
# Microsoft Plaform SDK for Win32 programming samples
# Copyright 1991 - 1998 Microsoft Corporation
# -------------------------------------------------------------------------
# This files should be included at the top of all MAKEFILEs as follows:
# !include <win32.mak>
# -------------------------------------------------------------------------
#
# Define APPVER = [ 4.0 | 5.0 ] prior to including win32.mak to get
# build time checking for version dependencies and to mark the executable
# with version information.
#
# Define TARGETOS = [ WIN95 | WINNT | BOTH ] prior to including win32.mak
# to get some build time checking for platform dependencies.
#
# Define TARGETLANG = [ LANG_JAPANESE | LANG_CHINESE | LANG_KOREAN ] prior
# to including win32.mak to getcompile & link flags for building
# applications to run on Far-East Windows. (This is an optional parameter.
# The system locale is the default.)
#
# Define _WIN32_IE = [ 0x0300 | 0x0400 ] prior to including win32.mak to
# get compile and link flags for building applications and components to
# run on Internet Explorer. (This is an optional parameter. IE 4.0 is
# the default.)
#
# -------------------------------------------------------------------------
# NMAKE Options
#
# Use the table below to determine the additional options for NMAKE to
# generate various application debugging, profiling and performance tuning
# information.
#
# Application Information Type Invoke NMAKE
# ---------------------------- ------------
# For No Debugging Info nmake nodebug=1
# For Working Set Tuner Info nmake tune=1
# For Call Attributed Profiling Info nmake profile=1
#
# Note: The three options above are mutually exclusive (you may use only
# one to compile/link the application).
#
# Note: creating the environment variables NODEBUG, TUNE, and PROFILE is an
# alternate method to setting these options via the nmake command line.
#
# Additional NMAKE Options Invoke NMAKE
# ---------------------------- ------------
# For No ANSI NULL Compliance nmake no_ansi=1
# (ANSI NULL is defined as PVOID 0)
#
# =========================================================================
!IFNDEF _WIN32_MAK_
_WIN32_MAK_ = 1
# -------------------------------------------------------------------------
# Get CPU Type - exit if CPU environment variable is not defined
# -------------------------------------------------------------------------
# Win95 does not define PROCESSOR_ARCHITECTURE - default to i386
!IF "$(PROCESSOR_ARCHITECTURE)" == ""
CPU=i386
PROCESSOR_ARCHITECTURE=x86
!endif
!IF !DEFINED(CPU) || "$(CPU)" == ""
CPU = $(PROCESSOR_ARCHITECTURE)
!ENDIF # CPU
# if PROCESSOR_ARCHITECTURE was x86 or X86 change CPU to i386
!IF ( "$(CPU)" == "X86" ) || ( "$(CPU)" == "x86" )
CPU = i386
!ENDIF # CPU == X86
!IF "$(CPU)" != "i386"
!IF "$(CPU)" != "ALPHA"
!ERROR Must specify CPU environment variable ( CPU=i386, CPU=ALPHA)
!ENDIF
!ENDIF
# -------------------------------------------------------------------------
# Get Target Operating System - Default to WINNT
# -------------------------------------------------------------------------
!IFNDEF TARGETOS
TARGETOS = WINNT
!ENDIF
!IF "$(TARGETOS)" != "WINNT"
!IF "$(TARGETOS)" != "WIN95"
!IF "$(TARGETOS)" != "BOTH"
!ERROR Must specify TARGETOS environment variable (BOTH, WIN95, WINNT)
!ENDIF
!ENDIF
!ENDIF
# default to APPVER of 4.0
!IFNDEF APPVER
APPVER = 4.0
!ENDIF
!IF "$(APPVER)" != "5.0"
!IF "$(APPVER)" != "4.0"
!ERROR Must specify APPVER environment variable (4.0, 5.0)
!ENDIF
!ENDIF
!IF "$(APPVER)" =="5.0"
!IFNDEF _WIN32_IE
_WIN32_IE = 0x0400
!ENDIF # _WIN32_IE
!ENDIF # APPVER == 5.0
!IFNDEF _WIN32_IE
_WIN32_IE = 0x0300
!ENDIF
# binary declarations common to all platforms
cc = cl
rc = rc
link = link
implib = lib
hc = hcrtf -xn
# for compatibility with older-style makefiles
cvtobj = REM !!! CVTOBJ is no longer necessary - please remove !!!
cvtres = REM !!! CVTRES is no longer necessary - please remove !!!
# -------------------------------------------------------------------------
# Platform Dependent Compile Flags - must be specified after $(cc)
#
# Note: Debug switches are on by default for current release
#
# These switches allow for source level debugging with WinDebug for local
# and global variables.
#
# Both compilers now use the same front end - you must still define either
# _X86_ or _ALPHA_. These have replaced the i386 and ALPHA definitions
# which are not ANSI compliant.
#
# Common compiler flags:
# -c - compile without linking
# -W3 - Set warning level to level 3
# -Zi - generate debugging information
# -Od - disable all optimizations
# -Ox - use maximum optimizations
# -Zd - generate only public symbols and line numbers for debugging
#
# i386 specific compiler flags:
# -Gz - stdcall
#
# -------------------------------------------------------------------------
# declarations common to all compiler options
ccommon = -c -W3 -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo
# for compatibility with old source code, map {try, except, leave, finally}
# to their proper names (i.e. prefaced by "__")
!IFDEF SEHMAP
ccommon = $(ccommon) -FIsehmap.h
!ENDIF
!IF "$(TARGETLANG)" == "LANG_JAPANESE"
ccommon = $(ccommon) -DJAPAN -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_CHINESE"
ccommon = $(ccommon) -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_KOREAN"
ccommon = $(ccommon) -DDBCS -DFE_IME
!ENDIF
!IF "$(CPU)" == "i386"
cflags = $(ccommon) -D_X86_=1
scall = -Gz
!ELSE
!IF "$(CPU)" == "ALPHA"
cflags = $(ccommon) -D_ALPHA_=1
scall =
!ENDIF
!ENDIF
!IF "$(APPVER)" == "4.0"
NMAKE_WINVER = 0x0400
! IFNDEF _WIN32_IE
_WIN32_IE = 0x0300
! ENDIF
!ELSEIF "$(APPVER)" == "5.0"
NMAKE_WINVER = 0x0500
! IFNDEF _WIN32_IE
_WIN32_IE = 0x0400
! ENDIF
!ENDIF
!IF "$(TARGETOS)" == "WINNT"
cflags = $(cflags) -D_WINNT -D_WIN32_WINNT=$(NMAKE_WINVER)
!ENDIF
!IF "$(TARGETOS)" == "WIN95"
cflags = $(cflags) -D_WIN95 -D_WIN32_WINDOWS=$(NMAKE_WINVER)
!ENDIF
# regardless of the TARGET OS, define compile time WINVER to match APPVER macro
cflags = $(cflags) -D_WIN32_IE=$(_WIN32_IE) -DWINVER=$(NMAKE_WINVER)
!IFDEF NODEBUG
cdebug = -Ox
!ELSE
!IFDEF PROFILE
cdebug = -Gh -Zd -Ox
!ELSE
!IFDEF TUNE
cdebug = -Gh -Zd -Ox
!ELSE
cdebug = -Z7 -Od
!ENDIF
!ENDIF
!ENDIF
# -------------------------------------------------------------------------
# Target Module & Subsystem Dependent Compile Defined Variables - must be
# specified after $(cc)
#
# The following table indicates the various acceptable combinations of
# the C Run-Time libraries LIBC, LIBCMT, and CRTDLL respect to the creation
# of a EXE and/or DLL target object. The appropriate compiler flag macros
# that should be used for each combination are also listed.
#
# Link EXE Create Exe Link DLL Create DLL
# with Using with Using
# ----------------------------------------------------
# LIBC CVARS None None *
# LIBC CVARS LIBC CVARS
# LIBC CVARS LIBCMT CVARSMT
# LIBCMT CVARSMT None None *
# LIBCMT CVARSMT LIBC CVARS
# LIBCMT CVARSMT LIBCMT CVARSMT
# CRTDLL CVARSDLL None None *
# CRTDLL CVARSDLL LIBC CVARS
# CRTDLL CVARSDLL LIBCMT CVARSMT
# CRTDLL CVARSDLL CRTDLL CVARSDLL *
#
# * - Denotes the Recommended Configuration
#
# When building single-threaded applications you can link your executable
# with either LIBC, LIBCMT, or CRTDLL, although LIBC will provide the best
# performance.
#
# When building multi-threaded applications, either LIBCMT or CRTDLL can
# be used as the C-Runtime library, as both are multi-thread safe.
#
# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
# also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
# When using DLLs, it is recommended that all of the modules be
# linked with CRTDLL.LIB.
#
# Note: The macros of the form xDLL are used when linking the object with
# the DLL version of the C Run-Time (that is, CRTDLL.LIB). They are
# not used when the target object is itself a DLL.
#
# -------------------------------------------------------------------------
!IFDEF NO_ANSI
noansi = -DNULL=0
!ENDIF
# for Windows applications that use the C Run-Time libraries
cvars = -DWIN32 $(noansi) -D_WIN32
cvarsmt = $(cvars) -D_MT -MT
cvarsdll = $(cvars) -D_MT -D_DLL -MD
# for compatibility with older-style makefiles
cvarsmtdll = $(cvarsmt) -D_DLL
# for POSIX applications
psxvars = -D_POSIX_
# resource compiler
rcflags = /r
rcvars = -DWIN32 -D_WIN32 -DWINVER=$(NMAKE_WINVER) $(noansi)
!IF "$(TARGETLANG)" == "LANG_JAPANESE"
rcflags = $(rcflags) /c932
rcvars = $(rcvars) -DJAPAN -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_CHINESE"
rcvars = $(rcvars) -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_KOREAN"
rcvars = $(rcvars) -DDBCS -DFE_IME
!ENDIF
# -------------------------------------------------------------------------
# Platform Dependent Link Flags - must be specified after $(link)
#
# Note: $(DLLENTRY) should be appended to each -entry: flag on the link
# line.
#
# Note: When creating a DLL that uses C Run-Time functions it is
# recommended to include the entry point function of the name DllMain
# in the DLL's source code. Also, the MAKEFILE should include the
# -entry:_DllMainCRTStartup$(DLLENTRY) option for the creation of
# this DLL. (The C Run-Time entry point _DllMainCRTStartup in turn
# calls the DLL defined DllMain entry point.)
#
# -------------------------------------------------------------------------
# declarations common to all linker options
lflags = /NODEFAULTLIB /INCREMENTAL:NO /PDB:NONE /RELEASE /NOLOGO
# declarations for use on Intel i386, i486, and Pentium systems
!IF "$(CPU)" == "i386"
DLLENTRY = @12
!ENDIF
# declarations for use on self hosted Digital Alpha AXP systems
!IF "$(CPU)" == "ALPHA"
DLLENTRY =
!ENDIF
# -------------------------------------------------------------------------
# Target Module Dependent Link Debug Flags - must be specified after $(link)
#
# These switches allow the inclusion of the necessary symbolic information
# for source level debugging with WinDebug, profiling and/or performance
# tuning.
#
# Note: Debug switches are on by default.
# -------------------------------------------------------------------------
!IFDEF NODEBUG
ldebug = /RELEASE
!ELSE
!IFDEF PROFILE
ldebug = -debug:mapped,partial -debugtype:coff
!ELSE
!IFDEF TUNE
ldebug = -debug:mapped,partial -debugtype:coff
!ELSE
ldebug = -debug:full -debugtype:cv
!ENDIF
!ENDIF
!ENDIF
# for compatibility with older-style makefiles
linkdebug = $(ldebug)
# -------------------------------------------------------------------------
# Subsystem Dependent Link Flags - must be specified after $(link)
#
# These switches allow for source level debugging with WinDebug for local
# and global variables. They also provide the standard application type and
# entry point declarations.
#
# Note that on x86 screensavers have a WinMain entrypoint, but on RISC
# platforms it is main. This is a Win95 compatibility issue.
#
# -------------------------------------------------------------------------
# for Windows applications that use the C Run-Time libraries
conlflags = $(lflags) -subsystem:console,$(APPVER)
guilflags = $(lflags) -subsystem:windows,$(APPVER)
dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
!IF "$(CPU)" == "i386"
savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:WinMainCRTStartup
!ELSE
savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:mainCRTStartup
!ENDIF
# for POSIX applications
psxlflags = $(lflags) -subsystem:posix -entry:__PosixProcessStartup
# for compatibility with older-style makefiles
conflags = $(conlflags)
guiflags = $(guilflags)
psxflags = $(psxlflags)
# -------------------------------------------------------------------------
# C Run-Time Target Module Dependent Link Libraries
#
# Below is a table which describes which libraries to use depending on the
# target module type, although the table specifically refers to Graphical
# User Interface apps, the exact same dependencies apply to Console apps.
# That is, you could replace all occurrences of 'GUI' with 'CON' in the
# following:
#
# Desired CRT Libraries Desired CRT Libraries
# Library to link Library to link
# for EXE with EXE for DLL with DLL
# ----------------------------------------------------
# LIBC GUILIBS None None *
# LIBC GUILIBS LIBC GUILIBS
# LIBC GUILIBS LIBCMT GUILIBSMT
# LIBCMT GUILIBSMT None None *
# LIBCMT GUILIBSMT LIBC GUILIBS
# LIBCMT GUILIBSMT LIBCMT GUILIBSMT
# CRTDLL GUILIBSDLL None None *
# CRTDLL GUILIBSDLL LIBC GUILIBS
# CRTDLL GUILIBSDLL LIBCMT GUILIBSMT
# CRTDLL GUILIBSDLL CRTDLL GUILIBSDLL *
#
# * - Recommended Configurations.
#
# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
# also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
#
# Note: For POSIX applications, link with $(psxlibs).
#
# -------------------------------------------------------------------------
# These CRT Libraries assume the use of Microsoft Visual C++. If you are
# using another Compiler product, change the libc* variable to correspond
# to your import library names.
libc = libc.lib oldnames.lib
libcmt = libcmt.lib oldnames.lib
libcdll = msvcrt.lib oldnames.lib
# for POSIX applications
psxlibs = libcpsx.lib psxdll.lib psxrtl.lib oldnames.lib
# optional profiling and tuning libraries
!IFDEF PROFILE
optlibs = cap.lib
!ELSE
!IFDEF TUNE
optlibs = wst.lib
!ELSE
optlibs =
!ENDIF
!ENDIF
# if building for basic Windows 95, use WinSock1, else use WinSock2
!IF "$(TARGETOS)" == "WIN95"
!IF "$(APPVER)" == "4.0"
winsocklibs = wsock32.lib
!ELSE
winsocklibs = ws2_32.lib mswsock.lib
!ENDIF
!ELSE
winsocklibs = ws2_32.lib mswsock.lib
!ENDIF
# basic subsystem specific libraries, less the C Run-Time
baselibs = kernel32.lib $(optlibs) $(winsocklibs) advapi32.lib
winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib
# for Windows applications that use the C Run-Time libraries
conlibs = $(libc) $(baselibs)
conlibsmt = $(libcmt) $(baselibs)
conlibsdll = $(libcdll) $(baselibs)
guilibs = $(libc) $(winlibs)
guilibsmt = $(libcmt) $(winlibs)
guilibsdll = $(libcdll) $(winlibs)
# for OLE applications
olelibs = ole32.lib uuid.lib oleaut32.lib $(guilibs)
olelibsmt = ole32.lib uuid.lib oleaut32.lib $(guilibsmt)
olelibsdll = ole32.lib uuid.lib oleaut32.lib $(guilibsdll)
# for backward compatibility
ole2libs = $(olelibs)
ole2libsmt = $(olelibsmt)
ole2libsdll = $(olelibsdll)
#ENDIF _WIN32_MAK_
!ENDIF
# =========================================================================
# WIN32.MAK - Win32 application master NMAKE definitions file for the
# Microsoft Plaform SDK for Win32 programming samples
# Copyright 1991 - 1998 Microsoft Corporation
# -------------------------------------------------------------------------
# This files should be included at the top of all MAKEFILEs as follows:
# !include <win32.mak>
# -------------------------------------------------------------------------
#
# Define APPVER = [ 4.0 | 5.0 ] prior to including win32.mak to get
# build time checking for version dependencies and to mark the executable
# with version information.
#
# Define TARGETOS = [ WIN95 | WINNT | BOTH ] prior to including win32.mak
# to get some build time checking for platform dependencies.
#
# Define TARGETLANG = [ LANG_JAPANESE | LANG_CHINESE | LANG_KOREAN ] prior
# to including win32.mak to getcompile & link flags for building
# applications to run on Far-East Windows. (This is an optional parameter.
# The system locale is the default.)
#
# Define _WIN32_IE = [ 0x0300 | 0x0400 ] prior to including win32.mak to
# get compile and link flags for building applications and components to
# run on Internet Explorer. (This is an optional parameter. IE 4.0 is
# the default.)
#
# -------------------------------------------------------------------------
# NMAKE Options
#
# Use the table below to determine the additional options for NMAKE to
# generate various application debugging, profiling and performance tuning
# information.
#
# Application Information Type Invoke NMAKE
# ---------------------------- ------------
# For No Debugging Info nmake nodebug=1
# For Working Set Tuner Info nmake tune=1
# For Call Attributed Profiling Info nmake profile=1
#
# Note: The three options above are mutually exclusive (you may use only
# one to compile/link the application).
#
# Note: creating the environment variables NODEBUG, TUNE, and PROFILE is an
# alternate method to setting these options via the nmake command line.
#
# Additional NMAKE Options Invoke NMAKE
# ---------------------------- ------------
# For No ANSI NULL Compliance nmake no_ansi=1
# (ANSI NULL is defined as PVOID 0)
#
# =========================================================================
!IFNDEF _WIN32_MAK_
_WIN32_MAK_ = 1
# -------------------------------------------------------------------------
# Get CPU Type - exit if CPU environment variable is not defined
# -------------------------------------------------------------------------
# Win95 does not define PROCESSOR_ARCHITECTURE - default to i386
!IF "$(PROCESSOR_ARCHITECTURE)" == ""
CPU=i386
PROCESSOR_ARCHITECTURE=x86
!endif
!IF !DEFINED(CPU) || "$(CPU)" == ""
CPU = $(PROCESSOR_ARCHITECTURE)
!ENDIF # CPU
# if PROCESSOR_ARCHITECTURE was x86 or X86 change CPU to i386
!IF ( "$(CPU)" == "X86" ) || ( "$(CPU)" == "x86" )
CPU = i386
!ENDIF # CPU == X86
!IF "$(CPU)" != "i386"
!IF "$(CPU)" != "ALPHA"
!ERROR Must specify CPU environment variable ( CPU=i386, CPU=ALPHA)
!ENDIF
!ENDIF
# -------------------------------------------------------------------------
# Get Target Operating System - Default to WINNT
# -------------------------------------------------------------------------
!IFNDEF TARGETOS
TARGETOS = WINNT
!ENDIF
!IF "$(TARGETOS)" != "WINNT"
!IF "$(TARGETOS)" != "WIN95"
!IF "$(TARGETOS)" != "BOTH"
!ERROR Must specify TARGETOS environment variable (BOTH, WIN95, WINNT)
!ENDIF
!ENDIF
!ENDIF
# default to APPVER of 4.0
!IFNDEF APPVER
APPVER = 4.0
!ENDIF
!IF "$(APPVER)" != "5.0"
!IF "$(APPVER)" != "4.0"
!ERROR Must specify APPVER environment variable (4.0, 5.0)
!ENDIF
!ENDIF
!IF "$(APPVER)" =="5.0"
!IFNDEF _WIN32_IE
_WIN32_IE = 0x0400
!ENDIF # _WIN32_IE
!ENDIF # APPVER == 5.0
!IFNDEF _WIN32_IE
_WIN32_IE = 0x0300
!ENDIF
# binary declarations common to all platforms
cc = cl
rc = rc
link = link
implib = lib
hc = hcrtf -xn
# for compatibility with older-style makefiles
cvtobj = REM !!! CVTOBJ is no longer necessary - please remove !!!
cvtres = REM !!! CVTRES is no longer necessary - please remove !!!
# -------------------------------------------------------------------------
# Platform Dependent Compile Flags - must be specified after $(cc)
#
# Note: Debug switches are on by default for current release
#
# These switches allow for source level debugging with WinDebug for local
# and global variables.
#
# Both compilers now use the same front end - you must still define either
# _X86_ or _ALPHA_. These have replaced the i386 and ALPHA definitions
# which are not ANSI compliant.
#
# Common compiler flags:
# -c - compile without linking
# -W3 - Set warning level to level 3
# -Zi - generate debugging information
# -Od - disable all optimizations
# -Ox - use maximum optimizations
# -Zd - generate only public symbols and line numbers for debugging
#
# i386 specific compiler flags:
# -Gz - stdcall
#
# -------------------------------------------------------------------------
# declarations common to all compiler options
ccommon = -c -W3 -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo
# for compatibility with old source code, map {try, except, leave, finally}
# to their proper names (i.e. prefaced by "__")
!IFDEF SEHMAP
ccommon = $(ccommon) -FIsehmap.h
!ENDIF
!IF "$(TARGETLANG)" == "LANG_JAPANESE"
ccommon = $(ccommon) -DJAPAN -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_CHINESE"
ccommon = $(ccommon) -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_KOREAN"
ccommon = $(ccommon) -DDBCS -DFE_IME
!ENDIF
!IF "$(CPU)" == "i386"
cflags = $(ccommon) -D_X86_=1
scall = -Gz
!ELSE
!IF "$(CPU)" == "ALPHA"
cflags = $(ccommon) -D_ALPHA_=1
scall =
!ENDIF
!ENDIF
!IF "$(APPVER)" == "4.0"
NMAKE_WINVER = 0x0400
! IFNDEF _WIN32_IE
_WIN32_IE = 0x0300
! ENDIF
!ELSEIF "$(APPVER)" == "5.0"
NMAKE_WINVER = 0x0500
! IFNDEF _WIN32_IE
_WIN32_IE = 0x0400
! ENDIF
!ENDIF
!IF "$(TARGETOS)" == "WINNT"
cflags = $(cflags) -D_WINNT -D_WIN32_WINNT=$(NMAKE_WINVER)
!ENDIF
!IF "$(TARGETOS)" == "WIN95"
cflags = $(cflags) -D_WIN95 -D_WIN32_WINDOWS=$(NMAKE_WINVER)
!ENDIF
# regardless of the TARGET OS, define compile time WINVER to match APPVER macro
cflags = $(cflags) -D_WIN32_IE=$(_WIN32_IE) -DWINVER=$(NMAKE_WINVER)
!IFDEF NODEBUG
cdebug = -Ox
!ELSE
!IFDEF PROFILE
cdebug = -Gh -Zd -Ox
!ELSE
!IFDEF TUNE
cdebug = -Gh -Zd -Ox
!ELSE
cdebug = -Z7 -Od
!ENDIF
!ENDIF
!ENDIF
# -------------------------------------------------------------------------
# Target Module & Subsystem Dependent Compile Defined Variables - must be
# specified after $(cc)
#
# The following table indicates the various acceptable combinations of
# the C Run-Time libraries LIBC, LIBCMT, and CRTDLL respect to the creation
# of a EXE and/or DLL target object. The appropriate compiler flag macros
# that should be used for each combination are also listed.
#
# Link EXE Create Exe Link DLL Create DLL
# with Using with Using
# ----------------------------------------------------
# LIBC CVARS None None *
# LIBC CVARS LIBC CVARS
# LIBC CVARS LIBCMT CVARSMT
# LIBCMT CVARSMT None None *
# LIBCMT CVARSMT LIBC CVARS
# LIBCMT CVARSMT LIBCMT CVARSMT
# CRTDLL CVARSDLL None None *
# CRTDLL CVARSDLL LIBC CVARS
# CRTDLL CVARSDLL LIBCMT CVARSMT
# CRTDLL CVARSDLL CRTDLL CVARSDLL *
#
# * - Denotes the Recommended Configuration
#
# When building single-threaded applications you can link your executable
# with either LIBC, LIBCMT, or CRTDLL, although LIBC will provide the best
# performance.
#
# When building multi-threaded applications, either LIBCMT or CRTDLL can
# be used as the C-Runtime library, as both are multi-thread safe.
#
# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
# also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
# When using DLLs, it is recommended that all of the modules be
# linked with CRTDLL.LIB.
#
# Note: The macros of the form xDLL are used when linking the object with
# the DLL version of the C Run-Time (that is, CRTDLL.LIB). They are
# not used when the target object is itself a DLL.
#
# -------------------------------------------------------------------------
!IFDEF NO_ANSI
noansi = -DNULL=0
!ENDIF
# for Windows applications that use the C Run-Time libraries
cvars = -DWIN32 $(noansi) -D_WIN32
cvarsmt = $(cvars) -D_MT -MT
cvarsdll = $(cvars) -D_MT -D_DLL -MD
# for compatibility with older-style makefiles
cvarsmtdll = $(cvarsmt) -D_DLL
# for POSIX applications
psxvars = -D_POSIX_
# resource compiler
rcflags = /r
rcvars = -DWIN32 -D_WIN32 -DWINVER=$(NMAKE_WINVER) $(noansi)
!IF "$(TARGETLANG)" == "LANG_JAPANESE"
rcflags = $(rcflags) /c932
rcvars = $(rcvars) -DJAPAN -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_CHINESE"
rcvars = $(rcvars) -DDBCS -DFE_IME
!ENDIF
!IF "$(TARGETLANG)" == "LANG_KOREAN"
rcvars = $(rcvars) -DDBCS -DFE_IME
!ENDIF
# -------------------------------------------------------------------------
# Platform Dependent Link Flags - must be specified after $(link)
#
# Note: $(DLLENTRY) should be appended to each -entry: flag on the link
# line.
#
# Note: When creating a DLL that uses C Run-Time functions it is
# recommended to include the entry point function of the name DllMain
# in the DLL's source code. Also, the MAKEFILE should include the
# -entry:_DllMainCRTStartup$(DLLENTRY) option for the creation of
# this DLL. (The C Run-Time entry point _DllMainCRTStartup in turn
# calls the DLL defined DllMain entry point.)
#
# -------------------------------------------------------------------------
# declarations common to all linker options
lflags = /NODEFAULTLIB /INCREMENTAL:NO /PDB:NONE /RELEASE /NOLOGO
# declarations for use on Intel i386, i486, and Pentium systems
!IF "$(CPU)" == "i386"
DLLENTRY = @12
!ENDIF
# declarations for use on self hosted Digital Alpha AXP systems
!IF "$(CPU)" == "ALPHA"
DLLENTRY =
!ENDIF
# -------------------------------------------------------------------------
# Target Module Dependent Link Debug Flags - must be specified after $(link)
#
# These switches allow the inclusion of the necessary symbolic information
# for source level debugging with WinDebug, profiling and/or performance
# tuning.
#
# Note: Debug switches are on by default.
# -------------------------------------------------------------------------
!IFDEF NODEBUG
ldebug = /RELEASE
!ELSE
!IFDEF PROFILE
ldebug = -debug:mapped,partial -debugtype:coff
!ELSE
!IFDEF TUNE
ldebug = -debug:mapped,partial -debugtype:coff
!ELSE
ldebug = -debug:full -debugtype:cv
!ENDIF
!ENDIF
!ENDIF
# for compatibility with older-style makefiles
linkdebug = $(ldebug)
# -------------------------------------------------------------------------
# Subsystem Dependent Link Flags - must be specified after $(link)
#
# These switches allow for source level debugging with WinDebug for local
# and global variables. They also provide the standard application type and
# entry point declarations.
#
# Note that on x86 screensavers have a WinMain entrypoint, but on RISC
# platforms it is main. This is a Win95 compatibility issue.
#
# -------------------------------------------------------------------------
# for Windows applications that use the C Run-Time libraries
conlflags = $(lflags) -subsystem:console,$(APPVER)
guilflags = $(lflags) -subsystem:windows,$(APPVER)
dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll
!IF "$(CPU)" == "i386"
savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:WinMainCRTStartup
!ELSE
savlflags = $(lflags) -subsystem:windows,$(APPVER) -entry:mainCRTStartup
!ENDIF
# for POSIX applications
psxlflags = $(lflags) -subsystem:posix -entry:__PosixProcessStartup
# for compatibility with older-style makefiles
conflags = $(conlflags)
guiflags = $(guilflags)
psxflags = $(psxlflags)
# -------------------------------------------------------------------------
# C Run-Time Target Module Dependent Link Libraries
#
# Below is a table which describes which libraries to use depending on the
# target module type, although the table specifically refers to Graphical
# User Interface apps, the exact same dependencies apply to Console apps.
# That is, you could replace all occurrences of 'GUI' with 'CON' in the
# following:
#
# Desired CRT Libraries Desired CRT Libraries
# Library to link Library to link
# for EXE with EXE for DLL with DLL
# ----------------------------------------------------
# LIBC GUILIBS None None *
# LIBC GUILIBS LIBC GUILIBS
# LIBC GUILIBS LIBCMT GUILIBSMT
# LIBCMT GUILIBSMT None None *
# LIBCMT GUILIBSMT LIBC GUILIBS
# LIBCMT GUILIBSMT LIBCMT GUILIBSMT
# CRTDLL GUILIBSDLL None None *
# CRTDLL GUILIBSDLL LIBC GUILIBS
# CRTDLL GUILIBSDLL LIBCMT GUILIBSMT
# CRTDLL GUILIBSDLL CRTDLL GUILIBSDLL *
#
# * - Recommended Configurations.
#
# Note: Any executable which accesses a DLL linked with CRTDLL.LIB must
# also link with CRTDLL.LIB instead of LIBC.LIB or LIBCMT.LIB.
#
# Note: For POSIX applications, link with $(psxlibs).
#
# -------------------------------------------------------------------------
# These CRT Libraries assume the use of Microsoft Visual C++. If you are
# using another Compiler product, change the libc* variable to correspond
# to your import library names.
libc = libc.lib oldnames.lib
libcmt = libcmt.lib oldnames.lib
libcdll = msvcrt.lib oldnames.lib
# for POSIX applications
psxlibs = libcpsx.lib psxdll.lib psxrtl.lib oldnames.lib
# optional profiling and tuning libraries
!IFDEF PROFILE
optlibs = cap.lib
!ELSE
!IFDEF TUNE
optlibs = wst.lib
!ELSE
optlibs =
!ENDIF
!ENDIF
# if building for basic Windows 95, use WinSock1, else use WinSock2
!IF "$(TARGETOS)" == "WIN95"
!IF "$(APPVER)" == "4.0"
winsocklibs = wsock32.lib
!ELSE
winsocklibs = ws2_32.lib mswsock.lib
!ENDIF
!ELSE
winsocklibs = ws2_32.lib mswsock.lib
!ENDIF
# basic subsystem specific libraries, less the C Run-Time
baselibs = kernel32.lib $(optlibs) $(winsocklibs) advapi32.lib
winlibs = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib
# for Windows applications that use the C Run-Time libraries
conlibs = $(libc) $(baselibs)
conlibsmt = $(libcmt) $(baselibs)
conlibsdll = $(libcdll) $(baselibs)
guilibs = $(libc) $(winlibs)
guilibsmt = $(libcmt) $(winlibs)
guilibsdll = $(libcdll) $(winlibs)
# for OLE applications
olelibs = ole32.lib uuid.lib oleaut32.lib $(guilibs)
olelibsmt = ole32.lib uuid.lib oleaut32.lib $(guilibsmt)
olelibsdll = ole32.lib uuid.lib oleaut32.lib $(guilibsdll)
# for backward compatibility
ole2libs = $(olelibs)
ole2libsmt = $(olelibsmt)
ole2libsdll = $(olelibsdll)
#ENDIF _WIN32_MAK_
!ENDIF

View File

@ -1,91 +1,91 @@
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = ember
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/Ember.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Ember)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBER
win32 {
DEFINES += BUILDING_EMBER
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberPch.h
SOURCES += \
$$PRJ_SRC_DIR/Affine2D.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/Ember.cpp \
$$PRJ_SRC_DIR/EmberPch.cpp \
$$PRJ_SRC_DIR/EmberToXml.cpp \
$$PRJ_SRC_DIR/PaletteList.cpp \
$$PRJ_SRC_DIR/RendererBase.cpp \
$$PRJ_SRC_DIR/Renderer.cpp \
$$PRJ_SRC_DIR/VariationList.cpp \
$$PRJ_SRC_DIR/Spline.cpp \
$$PRJ_SRC_DIR/XmlToEmber.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/Affine2D.h \
$$PRJ_SRC_DIR/CarToRas.h \
$$PRJ_SRC_DIR/Spline.h \
$$PRJ_SRC_DIR/Curves.h \
$$PRJ_SRC_DIR/DensityFilter.h \
$$PRJ_SRC_DIR/EmberDefines.h \
$$PRJ_SRC_DIR/Ember.h \
$$PRJ_SRC_DIR/EmberMotion.h \
$$PRJ_SRC_DIR/EmberPch.h \
$$PRJ_SRC_DIR/EmberToXml.h \
$$PRJ_SRC_DIR/Interpolate.h \
$$PRJ_SRC_DIR/Isaac.h \
$$PRJ_SRC_DIR/Iterator.h \
$$PRJ_SRC_DIR/Palette.h \
$$PRJ_SRC_DIR/PaletteList.h \
$$PRJ_SRC_DIR/Point.h \
$$PRJ_SRC_DIR/RendererBase.h \
$$PRJ_SRC_DIR/Renderer.h \
$$PRJ_SRC_DIR/SheepTools.h \
$$PRJ_SRC_DIR/SpatialFilter.h \
$$PRJ_SRC_DIR/TemporalFilter.h \
$$PRJ_SRC_DIR/Timing.h \
$$PRJ_SRC_DIR/Utils.h \
$$PRJ_SRC_DIR/Variation.h \
$$PRJ_SRC_DIR/VariationList.h \
$$PRJ_SRC_DIR/Variations01.h \
$$PRJ_SRC_DIR/Variations02.h \
$$PRJ_SRC_DIR/Variations03.h \
$$PRJ_SRC_DIR/Variations04.h \
$$PRJ_SRC_DIR/Variations05.h \
$$PRJ_SRC_DIR/Variations06.h \
$$PRJ_SRC_DIR/Variations07.h \
$$PRJ_SRC_DIR/Variations08.h \
$$PRJ_SRC_DIR/VariationsDC.h \
$$PRJ_SRC_DIR/VarFuncs.h \
$$PRJ_SRC_DIR/Xform.h \
$$PRJ_SRC_DIR/XmlToEmber.h
#message("")
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = ember
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/Ember.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Ember)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBER
win32 {
DEFINES += BUILDING_EMBER
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberPch.h
SOURCES += \
$$PRJ_SRC_DIR/Affine2D.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/Ember.cpp \
$$PRJ_SRC_DIR/EmberPch.cpp \
$$PRJ_SRC_DIR/EmberToXml.cpp \
$$PRJ_SRC_DIR/PaletteList.cpp \
$$PRJ_SRC_DIR/RendererBase.cpp \
$$PRJ_SRC_DIR/Renderer.cpp \
$$PRJ_SRC_DIR/VariationList.cpp \
$$PRJ_SRC_DIR/Spline.cpp \
$$PRJ_SRC_DIR/XmlToEmber.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/Affine2D.h \
$$PRJ_SRC_DIR/CarToRas.h \
$$PRJ_SRC_DIR/Spline.h \
$$PRJ_SRC_DIR/Curves.h \
$$PRJ_SRC_DIR/DensityFilter.h \
$$PRJ_SRC_DIR/EmberDefines.h \
$$PRJ_SRC_DIR/Ember.h \
$$PRJ_SRC_DIR/EmberMotion.h \
$$PRJ_SRC_DIR/EmberPch.h \
$$PRJ_SRC_DIR/EmberToXml.h \
$$PRJ_SRC_DIR/Interpolate.h \
$$PRJ_SRC_DIR/Isaac.h \
$$PRJ_SRC_DIR/Iterator.h \
$$PRJ_SRC_DIR/Palette.h \
$$PRJ_SRC_DIR/PaletteList.h \
$$PRJ_SRC_DIR/Point.h \
$$PRJ_SRC_DIR/RendererBase.h \
$$PRJ_SRC_DIR/Renderer.h \
$$PRJ_SRC_DIR/SheepTools.h \
$$PRJ_SRC_DIR/SpatialFilter.h \
$$PRJ_SRC_DIR/TemporalFilter.h \
$$PRJ_SRC_DIR/Timing.h \
$$PRJ_SRC_DIR/Utils.h \
$$PRJ_SRC_DIR/Variation.h \
$$PRJ_SRC_DIR/VariationList.h \
$$PRJ_SRC_DIR/Variations01.h \
$$PRJ_SRC_DIR/Variations02.h \
$$PRJ_SRC_DIR/Variations03.h \
$$PRJ_SRC_DIR/Variations04.h \
$$PRJ_SRC_DIR/Variations05.h \
$$PRJ_SRC_DIR/Variations06.h \
$$PRJ_SRC_DIR/Variations07.h \
$$PRJ_SRC_DIR/Variations08.h \
$$PRJ_SRC_DIR/VariationsDC.h \
$$PRJ_SRC_DIR/VarFuncs.h \
$$PRJ_SRC_DIR/Xform.h \
$$PRJ_SRC_DIR/XmlToEmber.h
#message("")

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberanimate
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberAnimate.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberAnimate)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberAnimate.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberAnimate.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberanimate
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberAnimate.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberAnimate)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberAnimate.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberAnimate.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,64 +1,63 @@
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = embercl
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/EmberCL.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberCL)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBERCL
win32 {
DEFINES += BUILDING_EMBERCL
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberCLPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
SOURCES += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/FunctionMapper.cpp \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/OpenCLInfo.cpp \
$$PRJ_SRC_DIR/OpenCLWrapper.cpp \
$$PRJ_SRC_DIR/RendererCL.cpp \
$$PRJ_SRC_DIR/RendererClDevice.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/EmberCLFunctions.h \
$$PRJ_SRC_DIR/EmberCLPch.h \
$$PRJ_SRC_DIR/EmberCLStructs.h \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/FunctionMapper.h \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/OpenCLInfo.h \
$$PRJ_SRC_DIR/OpenCLWrapper.h \
$$PRJ_SRC_DIR/RendererClDevice.h \
$$PRJ_SRC_DIR/RendererCL.h
TEMPLATE = lib
CONFIG += plugin
CONFIG += shared
CONFIG -= app_bundle
CONFIG -= qt
TARGET = embercl
include(../defaults.pri)
#Point to visual studio resource file to embed file information.
win32 {
RC = $$RCPATH/EmberCL.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberCL)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Project specific compiler flags.
QMAKE_CXXFLAGS += -BUILDING_EMBERCL
win32 {
DEFINES += BUILDING_EMBERCL
}
!win32 {
target.path = $$LIB_INSTALL_DIR
INSTALLS += target
}
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/EmberCLPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
SOURCES += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/DllMain.cpp \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/FunctionMapper.cpp \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.cpp \
$$PRJ_SRC_DIR/OpenCLInfo.cpp \
$$PRJ_SRC_DIR/OpenCLWrapper.cpp \
$$PRJ_SRC_DIR/RendererCL.cpp \
$$PRJ_SRC_DIR/RendererClDevice.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/DEOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/EmberCLFunctions.h \
$$PRJ_SRC_DIR/EmberCLPch.h \
$$PRJ_SRC_DIR/EmberCLStructs.h \
$$PRJ_SRC_DIR/FinalAccumOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/FunctionMapper.h \
$$PRJ_SRC_DIR/IterOpenCLKernelCreator.h \
$$PRJ_SRC_DIR/OpenCLInfo.h \
$$PRJ_SRC_DIR/OpenCLWrapper.h \
$$PRJ_SRC_DIR/RendererClDevice.h \
$$PRJ_SRC_DIR/RendererCL.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = embergenome
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberGenome.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberGenome)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberGenome.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberGenome.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = embergenome
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberGenome.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberGenome)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberGenome.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberGenome.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,71 +1,71 @@
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberrender
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberRender.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberRender)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberRender.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberRender.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h
TEMPLATE = app
CONFIG += console
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
CONFIG -= qt
TARGET = emberrender
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/EmberRender.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/EmberRender)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
themes.files = $$ASSETS_DIR/dark.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$SRC_COMMON_DIR/EmberCommonPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/EmberRender.cpp \
$$SRC_COMMON_DIR/EmberCommonPch.cpp
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
$$PRJ_SRC_DIR/EmberRender.h \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/EmberOptions.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$SRC_COMMON_DIR/SimpleGlob.h \
$$SRC_COMMON_DIR/SimpleOpt.h

View File

@ -1,191 +1,191 @@
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
greaterThan(QT_MAJOR_VERSION, 4) {
itemsources = $${item}.files
} else {
itemsources = $${item}.sources
}
$$itemsources = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath= $$eval($${deploymentfolder}.target)
export($$itemsources)
export($$itempath)
DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = /assets/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:win32 {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, /, \\)
sourcePathSegments = $$split(source, \\)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
target = $$replace(target, /, \\)
target ~= s,\\\\\\.?\\\\,\\,
!isEqual(source,$$target) {
!isEmpty(copyCommand):copyCommand += &&
isEqual(QMAKE_DIR_SEP, \\) {
copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
} else {
source = $$replace(source, \\\\, /)
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
}
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
} else:ios {
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += mkdir -p \"$$target\"
copyCommand += && cp -r \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = echo Copying application data... && $$copyCommand
!isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
QMAKE_POST_LINK += "$$copyCommand"
export(QMAKE_POST_LINK)
}
} else:unix {
maemo5 {
desktopfile.files = $${TARGET}.desktop
desktopfile.path = /usr/share/applications/hildon
icon.files = $${TARGET}64.png
icon.path = /usr/share/icons/hicolor/64x64/apps
} else:!isEmpty(MEEGO_VERSION_MAJOR) {
desktopfile.files = $${TARGET}_harmattan.desktop
desktopfile.path = /usr/share/applications
icon.files = $${TARGET}80.png
icon.path = /usr/share/icons/hicolor/80x80/apps
} else { # Assumed to be a Desktop Unix
copyCommand =
for(deploymentfolder, DEPLOYMENTFOLDERS) {
source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
source = $$replace(source, \\\\, /)
macx {
target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
} else {
target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
}
target = $$replace(target, \\\\, /)
sourcePathSegments = $$split(source, /)
targetFullPath = $$target/$$last(sourcePathSegments)
targetFullPath ~= s,/\\.?/,/,
!isEqual(source,$$targetFullPath) {
!isEmpty(copyCommand):copyCommand += &&
copyCommand += $(MKDIR) \"$$target\"
copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
}
}
!isEmpty(copyCommand) {
copyCommand = @echo Copying application data... && $$copyCommand
copydeploymentfolders.commands = $$copyCommand
first.depends = $(first) copydeploymentfolders
export(first.depends)
export(copydeploymentfolders.commands)
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
}
}
!isEmpty(target.path) {
installPrefix = $${target.path}
} else {
installPrefix = /opt/$${TARGET}
}
for(deploymentfolder, DEPLOYMENTFOLDERS) {
item = item$${deploymentfolder}
itemfiles = $${item}.files
$$itemfiles = $$eval($${deploymentfolder}.source)
itempath = $${item}.path
$$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
export($$itemfiles)
export($$itempath)
INSTALLS += $$item
}
!isEmpty(desktopfile.path) {
export(icon.files)
export(icon.path)
export(desktopfile.files)
export(desktopfile.path)
INSTALLS += icon desktopfile
}
isEmpty(target.path) {
target.path = $${installPrefix}/bin
export(target.path)
}
INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}

View File

@ -1,254 +1,256 @@
TEMPLATE = app
QT += core gui widgets opengl concurrent
TARGET = fractorium
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/Fractorium.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#message(QTDIR: $$(QTDIR))
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Fractorium)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Qt will be installed on a system wide level on *nix. It should be the same for Windows, but copy it local just to be safe.
win32 {
CONFIG(release, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt5Core.dll $$(QTDIR)\bin\Qt5Gui.dll $$(QTDIR)\bin\Qt5Widgets.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindows.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
CONFIG(debug, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt5Cored.dll $$(QTDIR)\bin\Qt5Guid.dll $$(QTDIR)\bin\Qt5Widgetsd.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindowsd.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
}
#For some reason, a Qt project needs to be told to look at itself.
INCLUDEPATH += $$PRJ_SRC_DIR
INCLUDEPATH += $$PRJ_SRC_DIR/PaletteEditor
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml \
$$ASSETS_DIR/boxtail_pack_02.gradient \
$$ASSETS_DIR/boxtail_pack_03_triangle.gradient \
$$ASSETS_DIR/boxtail_pack_04_mineshack.gradient \
$$ASSETS_DIR/fardareismai_pack_01_variety_number_128.gradient \
$$ASSETS_DIR/fardareismai_pack_02_b_sides.gradient \
$$ASSETS_DIR/fardareismai_pack_03_old_and_new.gradient \
$$ASSETS_DIR/fardareismai_pack_04_hoard.gradient \
$$ASSETS_DIR/fractaldesire_pack_01.gradient \
$$ASSETS_DIR/rce_ordinary_pack_01_colornation.gradient \
$$ASSETS_DIR/tatasz_pack_01.gradient \
$$ASSETS_DIR/tatasz_pack_02_colder.gradient \
$$ASSETS_DIR/tatasz_pack_02_dark.gradient \
$$ASSETS_DIR/tatasz_pack_02_warmer.gradient \
$$ASSETS_DIR/tatasz_pack_03.gradient \
$$ASSETS_DIR/tatasz_pack_04.gradient \
$$ASSETS_DIR/tatasz_pack_05.gradient \
$$ASSETS_DIR/tatasz_pack_06.gradient \
$$ASSETS_DIR/tatasz_pack_07.gradient \
$$ASSETS_DIR/Amphibole_Supergroup.ugr \
$$ASSETS_DIR/Apatite_Supergroup.ugr \
$$ASSETS_DIR/Feldspar_Group.ugr \
$$ASSETS_DIR/Mica_Group.ugr \
$$ASSETS_DIR/Quartz_Varieties.ugr
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
win32 {
themes.files = $$ASSETS_DIR/dark_windows.qss
}
macx {
themes.files = $$ASSETS_DIR/dark_mac.qss
}
unix:!macx {
themes.files = $$ASSETS_DIR/dark_linux.qss
}
themes.files += $$ASSETS_DIR/lightdark.qss
themes.files += $$ASSETS_DIR/uranium.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/FractoriumPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/AboutDialog.cpp \
$$PRJ_SRC_DIR/csshighlighter.cpp \
$$PRJ_SRC_DIR/CurvesGraphicsView.cpp \
$$PRJ_SRC_DIR/DoubleSpinBox.cpp \
$$PRJ_SRC_DIR/FinalRenderDialog.cpp \
$$PRJ_SRC_DIR/FinalRenderEmberController.cpp \
$$PRJ_SRC_DIR/Fractorium.cpp \
$$PRJ_SRC_DIR/FractoriumEmberController.cpp \
$$PRJ_SRC_DIR/FractoriumInfo.cpp \
$$PRJ_SRC_DIR/FractoriumLibrary.cpp \
$$PRJ_SRC_DIR/FractoriumMenus.cpp \
$$PRJ_SRC_DIR/FractoriumPalette.cpp \
$$PRJ_SRC_DIR/FractoriumParams.cpp \
$$PRJ_SRC_DIR/FractoriumPch.cpp \
$$PRJ_SRC_DIR/FractoriumRender.cpp \
$$PRJ_SRC_DIR/FractoriumSettings.cpp \
$$PRJ_SRC_DIR/FractoriumToolbar.cpp \
$$PRJ_SRC_DIR/FractoriumXaos.cpp \
$$PRJ_SRC_DIR/FractoriumXformsAffine.cpp \
$$PRJ_SRC_DIR/FractoriumXformsColor.cpp \
$$PRJ_SRC_DIR/FractoriumXforms.cpp \
$$PRJ_SRC_DIR/FractoriumXformsSelect.cpp \
$$PRJ_SRC_DIR/FractoriumXformsVariations.cpp \
$$PRJ_SRC_DIR/GLEmberController.cpp \
$$PRJ_SRC_DIR/GLWidget.cpp \
$$PRJ_SRC_DIR/Main.cpp \
$$PRJ_SRC_DIR/OptionsDialog.cpp \
$$PRJ_SRC_DIR/qcssparser.cpp \
$$PRJ_SRC_DIR/qcssscanner.cpp \
$$PRJ_SRC_DIR/QssDialog.cpp \
$$PRJ_SRC_DIR/QssTextEdit.cpp \
$$PRJ_SRC_DIR/SpinBox.cpp \
$$PRJ_SRC_DIR/VariationsDialog.cpp \
$$PRJ_SRC_DIR/LibraryTreeWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.cpp \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.cpp \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.cpp
HEADERS += \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$PRJ_SRC_DIR/AboutDialog.h \
$$PRJ_SRC_DIR/csshighlighter.h \
$$PRJ_SRC_DIR/CurvesGraphicsView.h \
$$PRJ_SRC_DIR/DoubleSpinBox.h \
$$PRJ_SRC_DIR/DoubleSpinBoxTableItemDelegate.h \
$$PRJ_SRC_DIR/EmberFile.h \
$$PRJ_SRC_DIR/EmberTreeWidgetItem.h \
$$PRJ_SRC_DIR/FinalRenderDialog.h \
$$PRJ_SRC_DIR/FinalRenderEmberController.h \
$$PRJ_SRC_DIR/FractoriumCommon.h \
$$PRJ_SRC_DIR/FractoriumEmberController.h \
$$PRJ_SRC_DIR/Fractorium.h \
$$PRJ_SRC_DIR/FractoriumPch.h \
$$PRJ_SRC_DIR/FractoriumSettings.h \
$$PRJ_SRC_DIR/GLEmberController.h \
$$PRJ_SRC_DIR/GLWidget.h \
$$PRJ_SRC_DIR/OptionsDialog.h \
$$PRJ_SRC_DIR/PaletteTableWidgetItem.h \
$$PRJ_SRC_DIR/qcssparser.h \
$$PRJ_SRC_DIR/qcssscanner.h \
$$PRJ_SRC_DIR/qfunctions.h \
$$PRJ_SRC_DIR/QssDialog.h \
$$PRJ_SRC_DIR/QssTextEdit.h \
$$PRJ_SRC_DIR/resource.h \
$$PRJ_SRC_DIR/SpinBox.h \
$$PRJ_SRC_DIR/StealthComboBox.h \
$$PRJ_SRC_DIR/TableWidget.h \
$$PRJ_SRC_DIR/TwoButtonComboWidget.h \
$$PRJ_SRC_DIR/VariationsDialog.h \
$$PRJ_SRC_DIR/VariationTreeWidgetItem.h \
$$PRJ_SRC_DIR/LibraryTreeWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientArrow.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.h \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.h
FORMS += \
$$PRJ_SRC_DIR/AboutDialog.ui \
$$PRJ_SRC_DIR/FinalRenderDialog.ui \
$$PRJ_SRC_DIR/Fractorium.ui \
$$PRJ_SRC_DIR/OptionsDialog.ui \
$$PRJ_SRC_DIR/QssDialog.ui \
$$PRJ_SRC_DIR/VariationsDialog.ui \
$$PRJ_SRC_DIR/PaletteEditor.ui
OTHER_FILES += \
$$PRJ_SRC_DIR/Fractorium.aps \
$$PRJ_SRC_DIR/Fractorium.rc
RESOURCES += \
$$PRJ_SRC_DIR/Fractorium.qrc
bench.path = $$SHARE_INSTALL_DIR/bench
bench.files += \
$$ASSETS_DIR/Bench/EmberBench.ps1 \
$$ASSETS_DIR/Bench/golubaja_rippingfrominside_complexcode.flame \
$$ASSETS_DIR/Bench/mfeemster_basicmemory.flame \
$$ASSETS_DIR/Bench/tatasz_springcrown_manysimplexforms.flame \
$$ASSETS_DIR/Bench/tyrantwave_flippeddisc_normal.flame \
$$ASSETS_DIR/Bench/zy0rg_six_bigcomplexcode.flame
#message(BENCH INSTALL SOURCE: $$bench.files)
INSTALLS += bench
examples.path = $$SHARE_INSTALL_DIR/examples
examples.files += \
$$ASSETS_DIR/examples/b33rheart_examples.flame \
$$ASSETS_DIR/examples/b33rheart_sierpinski.flame \
$$ASSETS_DIR/examples/c-91_examples.flame \
$$ASSETS_DIR/examples/pillemaster_hexagonal_tilings.flame \
$$ASSETS_DIR/examples/plangkye_examples.flame \
$$ASSETS_DIR/examples/tatasz_examples.flame \
$$ASSETS_DIR/examples/tatasz_substitution.flame \
$$ASSETS_DIR/examples/triptychaos_examples.flame \
$$ASSETS_DIR/examples/tyrantwave_base_forms.flame
#message(EXAMPLES INSTALL SOURCE: $$examples.files)
INSTALLS += examples
TEMPLATE = app
QT += core gui widgets opengl openglwidgets concurrent
TARGET = fractorium
include(../defaults.pri)
#Point to visual studio resource file to embed file information and icon.
win32 {
RC = $$RCPATH/Fractorium.rc
win32:RC_FILE = $$RC
#message(RC_FILE: $$RC)
}
#message(QTDIR: $$(QTDIR))
#Go up one folder because the paths defined in defaults were relative to it, which is up one folder.
PRJ_SRC_DIR = $$absolute_path($$EMBER_ROOT/../Source/Fractorium)
#message(PRJ_SRC_DIR: $$PRJ_SRC_DIR)
#Qt will be installed on a system wide level on *nix. It should be the same for Windows, but copy it local just to be safe.
win32 {
CONFIG(release, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt6Core.dll $$(QTDIR)\bin\Qt6Gui.dll $$(QTDIR)\bin\Qt6OpenGL.dll $$(QTDIR)\bin\Qt6OpenGLWidgets.dll $$(QTDIR)\bin\Qt6Widgets.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindows.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
CONFIG(debug, debug|release) {
qtfiles.path = $$BIN_INSTALL_DIR
qtfiles.files = $$(QTDIR)\bin\Qt6Cored.dll $$(QTDIR)\bin\Qt6Guid.dll $$(QTDIR)\bin\Qt6OpenGLd.dll $$(QTDIR)\bin\Qt6OpenGLWidgetsd.dll $$(QTDIR)\bin\Qt6Widgetsd.dll
INSTALLS += qtfiles
qtplatforms.path = $$BIN_INSTALL_DIR\platforms
qtplatforms.files = $$(QTDIR)\plugins\platforms\qwindowsd.dll
INSTALLS += qtplatforms
qimageformats.path = $$BIN_INSTALL_DIR\imageformats
qimageformats.files = $$(QTDIR)\plugins\imageformats\qjpeg.dll
INSTALLS += qimageformats
}
}
#For some reason, a Qt project needs to be told to look at itself.
INCLUDEPATH += $$PRJ_SRC_DIR
INCLUDEPATH += $$PRJ_SRC_DIR/PaletteEditor
INCLUDEPATH += $$(QTDIR)\include\QtWidget
# Uncomment this if you only want to build a binary instead of an app bundle.
#macx:CONFIG -= app_bundle
target.path = $$BIN_INSTALL_DIR
#message(TARGET INSTALL: $$target.path)
INSTALLS += target
palettes.path = $$SHARE_INSTALL_DIR
palettes.files = $$ASSETS_DIR/flam3-palettes.xml \
$$ASSETS_DIR/boxtail_pack_02.gradient \
$$ASSETS_DIR/boxtail_pack_03_triangle.gradient \
$$ASSETS_DIR/boxtail_pack_04_mineshack.gradient \
$$ASSETS_DIR/fardareismai_pack_01_variety_number_128.gradient \
$$ASSETS_DIR/fardareismai_pack_02_b_sides.gradient \
$$ASSETS_DIR/fardareismai_pack_03_old_and_new.gradient \
$$ASSETS_DIR/fardareismai_pack_04_hoard.gradient \
$$ASSETS_DIR/fractaldesire_pack_01.gradient \
$$ASSETS_DIR/rce_ordinary_pack_01_colornation.gradient \
$$ASSETS_DIR/tatasz_pack_01.gradient \
$$ASSETS_DIR/tatasz_pack_02_colder.gradient \
$$ASSETS_DIR/tatasz_pack_02_dark.gradient \
$$ASSETS_DIR/tatasz_pack_02_warmer.gradient \
$$ASSETS_DIR/tatasz_pack_03.gradient \
$$ASSETS_DIR/tatasz_pack_04.gradient \
$$ASSETS_DIR/tatasz_pack_05.gradient \
$$ASSETS_DIR/tatasz_pack_06.gradient \
$$ASSETS_DIR/tatasz_pack_07.gradient \
$$ASSETS_DIR/Amphibole_Supergroup.ugr \
$$ASSETS_DIR/Apatite_Supergroup.ugr \
$$ASSETS_DIR/Feldspar_Group.ugr \
$$ASSETS_DIR/Mica_Group.ugr \
$$ASSETS_DIR/Quartz_Varieties.ugr
#message(PALETTE INSTALL SOURCE: $$palettes.files)
INSTALLS += palettes
themes.path = $$SHARE_INSTALL_DIR
win32 {
themes.files = $$ASSETS_DIR/dark_windows.qss
}
macx {
themes.files = $$ASSETS_DIR/dark_mac.qss
}
unix:!macx {
themes.files = $$ASSETS_DIR/dark_linux.qss
}
themes.files += $$ASSETS_DIR/lightdark.qss
themes.files += $$ASSETS_DIR/uranium.qss
#message(THEMES INSTALL SOURCE: $$themes.files)
INSTALLS += themes
!win32 {
icon.path = $$SHARE_INSTALL_DIR
icon.files = $$absolute_path($$PRJ_SRC_DIR/Icons/Fractorium.png)
#message(ICON INSTALL SOURCE: $$icon.files)
INSTALLS += icon
launcher.path = $$LAUNCHER_INSTALL_DIR
launcher.files = $$ASSETS_DIR/Fractorium.desktop
#message(LAUNCHER INSTALL SOURCE: $$launcher.files)
INSTALLS += launcher
}
macx:ICON = $$ASSETS_DIR/Fractorium.icns
!macx:PRECOMPILED_HEADER = $$PRJ_SRC_DIR/FractoriumPch.h
LIBS += -L$$absolute_path($$DESTDIR) -lember
LIBS += -L$$absolute_path($$DESTDIR) -lembercl
SOURCES += \
$$PRJ_SRC_DIR/AboutDialog.cpp \
$$PRJ_SRC_DIR/csshighlighter.cpp \
$$PRJ_SRC_DIR/CurvesGraphicsView.cpp \
$$PRJ_SRC_DIR/DoubleSpinBox.cpp \
$$PRJ_SRC_DIR/FinalRenderDialog.cpp \
$$PRJ_SRC_DIR/FinalRenderEmberController.cpp \
$$PRJ_SRC_DIR/Fractorium.cpp \
$$PRJ_SRC_DIR/FractoriumEmberController.cpp \
$$PRJ_SRC_DIR/FractoriumInfo.cpp \
$$PRJ_SRC_DIR/FractoriumLibrary.cpp \
$$PRJ_SRC_DIR/FractoriumMenus.cpp \
$$PRJ_SRC_DIR/FractoriumPalette.cpp \
$$PRJ_SRC_DIR/FractoriumParams.cpp \
$$PRJ_SRC_DIR/FractoriumPch.cpp \
$$PRJ_SRC_DIR/FractoriumRender.cpp \
$$PRJ_SRC_DIR/FractoriumSettings.cpp \
$$PRJ_SRC_DIR/FractoriumToolbar.cpp \
$$PRJ_SRC_DIR/FractoriumXaos.cpp \
$$PRJ_SRC_DIR/FractoriumXformsAffine.cpp \
$$PRJ_SRC_DIR/FractoriumXformsColor.cpp \
$$PRJ_SRC_DIR/FractoriumXforms.cpp \
$$PRJ_SRC_DIR/FractoriumXformsSelect.cpp \
$$PRJ_SRC_DIR/FractoriumXformsVariations.cpp \
$$PRJ_SRC_DIR/GLEmberController.cpp \
$$PRJ_SRC_DIR/GLWidget.cpp \
$$PRJ_SRC_DIR/Main.cpp \
$$PRJ_SRC_DIR/OptionsDialog.cpp \
$$PRJ_SRC_DIR/qcssparser.cpp \
$$PRJ_SRC_DIR/qcssscanner.cpp \
$$PRJ_SRC_DIR/QssDialog.cpp \
$$PRJ_SRC_DIR/QssTextEdit.cpp \
$$PRJ_SRC_DIR/SpinBox.cpp \
$$PRJ_SRC_DIR/VariationsDialog.cpp \
$$PRJ_SRC_DIR/LibraryTreeWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.cpp \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.cpp \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.cpp \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.cpp
HEADERS += \
$$SRC_COMMON_DIR/EmberCommon.h \
$$SRC_COMMON_DIR/EmberCommonPch.h \
$$SRC_COMMON_DIR/JpegUtils.h \
$$PRJ_SRC_DIR/AboutDialog.h \
$$PRJ_SRC_DIR/csshighlighter.h \
$$PRJ_SRC_DIR/CurvesGraphicsView.h \
$$PRJ_SRC_DIR/DoubleSpinBox.h \
$$PRJ_SRC_DIR/DoubleSpinBoxTableItemDelegate.h \
$$PRJ_SRC_DIR/EmberFile.h \
$$PRJ_SRC_DIR/EmberTreeWidgetItem.h \
$$PRJ_SRC_DIR/FinalRenderDialog.h \
$$PRJ_SRC_DIR/FinalRenderEmberController.h \
$$PRJ_SRC_DIR/FractoriumCommon.h \
$$PRJ_SRC_DIR/FractoriumEmberController.h \
$$PRJ_SRC_DIR/Fractorium.h \
$$PRJ_SRC_DIR/FractoriumPch.h \
$$PRJ_SRC_DIR/FractoriumSettings.h \
$$PRJ_SRC_DIR/GLEmberController.h \
$$PRJ_SRC_DIR/GLWidget.h \
$$PRJ_SRC_DIR/OptionsDialog.h \
$$PRJ_SRC_DIR/PaletteTableWidgetItem.h \
$$PRJ_SRC_DIR/qcssparser.h \
$$PRJ_SRC_DIR/qcssscanner.h \
$$PRJ_SRC_DIR/qfunctions.h \
$$PRJ_SRC_DIR/QssDialog.h \
$$PRJ_SRC_DIR/QssTextEdit.h \
$$PRJ_SRC_DIR/resource.h \
$$PRJ_SRC_DIR/SpinBox.h \
$$PRJ_SRC_DIR/StealthComboBox.h \
$$PRJ_SRC_DIR/TableWidget.h \
$$PRJ_SRC_DIR/TwoButtonComboWidget.h \
$$PRJ_SRC_DIR/VariationsDialog.h \
$$PRJ_SRC_DIR/VariationTreeWidgetItem.h \
$$PRJ_SRC_DIR/LibraryTreeWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPanel.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorPickerWidget.h \
$$PRJ_SRC_DIR/PaletteEditor/ColorTriangle.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientArrow.h \
$$PRJ_SRC_DIR/PaletteEditor/GradientColorsView.h \
$$PRJ_SRC_DIR/PaletteEditor/PaletteEditor.h
FORMS += \
$$PRJ_SRC_DIR/AboutDialog.ui \
$$PRJ_SRC_DIR/FinalRenderDialog.ui \
$$PRJ_SRC_DIR/Fractorium.ui \
$$PRJ_SRC_DIR/OptionsDialog.ui \
$$PRJ_SRC_DIR/QssDialog.ui \
$$PRJ_SRC_DIR/VariationsDialog.ui \
$$PRJ_SRC_DIR/PaletteEditor.ui
OTHER_FILES += \
$$PRJ_SRC_DIR/Fractorium.aps \
$$PRJ_SRC_DIR/Fractorium.rc
RESOURCES += \
$$PRJ_SRC_DIR/Fractorium.qrc
bench.path = $$SHARE_INSTALL_DIR/bench
bench.files += \
$$ASSETS_DIR/Bench/EmberBench.ps1 \
$$ASSETS_DIR/Bench/golubaja_rippingfrominside_complexcode.flame \
$$ASSETS_DIR/Bench/mfeemster_basicmemory.flame \
$$ASSETS_DIR/Bench/tatasz_springcrown_manysimplexforms.flame \
$$ASSETS_DIR/Bench/tyrantwave_flippeddisc_normal.flame \
$$ASSETS_DIR/Bench/zy0rg_six_bigcomplexcode.flame
#message(BENCH INSTALL SOURCE: $$bench.files)
INSTALLS += bench
examples.path = $$SHARE_INSTALL_DIR/examples
examples.files += \
$$ASSETS_DIR/examples/b33rheart_examples.flame \
$$ASSETS_DIR/examples/b33rheart_sierpinski.flame \
$$ASSETS_DIR/examples/c-91_examples.flame \
$$ASSETS_DIR/examples/pillemaster_hexagonal_tilings.flame \
$$ASSETS_DIR/examples/plangkye_examples.flame \
$$ASSETS_DIR/examples/tatasz_examples.flame \
$$ASSETS_DIR/examples/tatasz_substitution.flame \
$$ASSETS_DIR/examples/triptychaos_examples.flame \
$$ASSETS_DIR/examples/tyrantwave_base_forms.flame
#message(EXAMPLES INSTALL SOURCE: $$examples.files)
INSTALLS += examples

View File

@ -1,300 +1,294 @@
VERSION = 22.21.4.2
win32:CONFIG += skip_target_version_ext
CONFIG += c++14
#message(PWD: $$absolute_path($$PWD))
#1) Declare the root of all files in this project, everything else will be
# defined in terms of this.
EMBER_ROOT = ./../..
# When compiling from project root
autobuild {
# EMBER_ROOT = $$(PWD)/../..
}
#2) Declare where dependency folders are.
# Point to local copy of OpenCL includes to ensure we have the right ones.
LOCAL_INCLUDE_DIR = $$absolute_path($$EMBER_ROOT/Builds/include/vendor)
# Parent folders for third party dependencies and their compiled outputs.
win32: {
EXTERNAL_DIR = $$absolute_path($$EMBER_ROOT/..)
EXTERNAL_LIB = $$absolute_path($$EMBER_ROOT/Deps)
}
#3) Declare where our source, data and resource files are.
SRC_DIR = $$EMBER_ROOT/Source
SRC_COMMON_DIR = $$absolute_path($$EMBER_ROOT/Source/EmberCommon)
ASSETS_DIR = $$absolute_path($$EMBER_ROOT/Data)
QTCREATOR_DIR = $$absolute_path($$EMBER_ROOT/Builds/QtCreator)
win32:RCPATH=$$absolute_path($$QTCREATOR_DIR/../MSVC/VS2019)
#4) Add up all include paths.
INCLUDEPATH += $$LOCAL_INCLUDE_DIR
INCLUDEPATH += $$absolute_path($$SRC_DIR/Ember)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCL)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCommon)
win32 {
INCLUDEPATH += $$EXTERNAL_DIR/glm
INCLUDEPATH += $$EXTERNAL_DIR/libjpeg
INCLUDEPATH += $$EXTERNAL_DIR/libpng
INCLUDEPATH += $$EXTERNAL_DIR/libxml2/include
INCLUDEPATH += $$EXTERNAL_DIR/zlib
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/Imath
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/OpenEXR
}
!win32 {
#If your global includes are stored elsewhere, add them here.
#INCLUDEPATH += /usr/include
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/include/GL
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/local/include/GL
}
INCLUDEPATH += /usr/include/glm
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/include/Imath
}
exists( /usr/include/OpenEXR ) {
INCLUDEPATH += /usr/include/OpenEXR
}
exists( /usr/include/Imath ) {
INCLUDEPATH += /usr/include/Imath
}
unix:!macx {
INCLUDEPATH += /usr/include/libxml2
}
else {
INCLUDEPATH += /usr/local/opt/libxml2/include/libxml2
}
#libjpeg and libpng aren't in separate folders, so nothing to add here for them.
}
#5) Add up all library paths. Ember and EmberCL don't need libjpeb, libpng or zlib and
# Ember doesn't need OpenCL. But just place them all here in the common file for ease of maintenance.
# Unneeded libs will just be ignored.
win32 {
LIBS = ""
LIBS += OpenGL32.lib
LIBS += WS2_32.lib
_AMDAPPSDK = $$(AMDAPPSDKROOT)
isEmpty(_AMDAPPSDK) {
LIBS += $$(CUDA_PATH)/lib/x64/OpenCL.lib
}
else {
LIBS += $$(AMDAPPSDKROOT)/lib/x86_64/OpenCL.lib
}
LIBS += $$absolute_path($$EXTERNAL_LIB)/libjpeg.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libpng.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libxml2.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/zlib.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Iex-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/IlmThread-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Imath-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/OpenEXR-3_1.lib
}
!win32 {
LIBS += -ljpeg
LIBS += -lpng
LIBS += -lpthread
LIBS += -lOpenEXR
unix:!macx {
LIBS += -lxml2
}
else {
LIBS += -L/usr/local/opt/libxml2/lib -lxml2
}
}
macx {
LIBS += -framework OpenGL
LIBS += -framework OpenCL
LIBS += -L/usr/local/lib# homebrew installs into /usr/local
}
unix:!macx {
LIBS += -lGL
LIBS += -lOpenCL
}
#6) Declare intermediate paths.
#7) Declare output paths for each configuration.
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/release)
}
CONFIG(debug, debug|release) {
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/debug)
}
#8) Set compiler options.
QMAKE_CXXFLAGS_RELEASE += -O2
QMAKE_CXXFLAGS_RELEASE += -DNDEBUG
QMAKE_CXXFLAGS += -D_M_X64
QMAKE_CXXFLAGS += -D_CONSOLE
QMAKE_CXXFLAGS += -D_USRDLL
win32 {
QMAKE_CXXFLAGS += -bigobj #Allow for very large object files.
QMAKE_CXXFLAGS += /MP #Enable multi-processor compilation.
QMAKE_CXXFLAGS += /Zc:wchar_t #Treat wchar_t as builtin type (we don't use wchar_t anyway).
QMAKE_CXXFLAGS += /Zi #Debug information format: program database.
QMAKE_CXXFLAGS += /Gm- #Disable minimal rebuild, needed to allow /MP.
QMAKE_CXXFLAGS += /fp:precise #Precise floating point model.
QMAKE_CXXFLAGS += /fp:except- #Disable floating point exceptions.
QMAKE_CXXFLAGS += /D "WIN32"
QMAKE_CXXFLAGS += /D "_WINDOWS"
QMAKE_CXXFLAGS += /D "_USRDLL"
QMAKE_CXXFLAGS += /D "_WINDLL" #Build as a DLL.
QMAKE_CXXFLAGS += /D "_MBCS" #Use multi-byte character set.
QMAKE_CXXFLAGS += /errorReport:prompt #Internal compiler error reporting, prompt immediately.
QMAKE_CXXFLAGS += /GF #Enable string pooling.
QMAKE_CXXFLAGS += /WX- #Don't treat warnings as errors.
QMAKE_CXXFLAGS += /Zc:forScope #Force conformance in for loop scope.
QMAKE_CXXFLAGS += /Gd #Calling convention: __cdecl.
QMAKE_CXXFLAGS += /EHsc #Enable C++ exceptions.
QMAKE_CXXFLAGS += /nologo #Suppress compiler startup banner.
QMAKE_CXXFLAGS_RELEASE += /GS- #Disable security check.
QMAKE_CXXFLAGS_RELEASE += /MD #Link to multi-threaded DLL.
QMAKE_CXXFLAGS_RELEASE += /Gy #Enable function level linking.
QMAKE_CXXFLAGS_RELEASE += /O2 #Maximize speed.
QMAKE_CXXFLAGS_RELEASE += /Ot #Favor fast code.
QMAKE_CXXFLAGS_RELEASE += /D "NDEBUG" #Release mode.
QMAKE_CXXFLAGS_DEBUG += /W3 #Error warning level to 3.
QMAKE_CXXFLAGS_DEBUG += /GS #Enable security check.
QMAKE_CXXFLAGS_DEBUG += /MDd #Link to multi-threaded debug DLL.
QMAKE_CXXFLAGS_DEBUG += /Od #Optimization disabled.
QMAKE_CXXFLAGS_DEBUG += /D "_DEBUG" #Debug mode.
QMAKE_CXXFLAGS_DEBUG += /RTC1 #Basic runtime checks: stack frames and uninitialized variables.
QMAKE_CXXFLAGS_DEBUG += /Ob2 #Inline function expansion: any suitable.
}
!win32 {
native {
QMAKE_CXXFLAGS += -march=native
} else {
QMAKE_CXXFLAGS += -march=k8
}
CMAKE_CXXFLAGS += -DCL_USE_DEPRECATED_OPENCL_1_1_APIS # Not sure if this is needed. We remove it if all systems we build on support 1.2.
QMAKE_CXXFLAGS_RELEASE += -fomit-frame-pointer
QMAKE_CXXFLAGS += -fPIC
QMAKE_CXXFLAGS += -fpermissive
QMAKE_CXXFLAGS += -pedantic
QMAKE_CXXFLAGS += -std=c++14
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
QMAKE_CXXFLAGS += -Wshadow
QMAKE_CXXFLAGS += -Winit-self
QMAKE_CXXFLAGS += -Wredundant-decls
QMAKE_CXXFLAGS += -Wcast-align
QMAKE_CXXFLAGS += -Winline
QMAKE_CXXFLAGS += -Wunreachable-code
QMAKE_CXXFLAGS += -Wswitch-enum
QMAKE_CXXFLAGS += -Wswitch-default
QMAKE_CXXFLAGS += -Wmain
QMAKE_CXXFLAGS += -Wfatal-errors
QMAKE_CXXFLAGS += -Wall -fpermissive
# CL has lots of old-style-cast which clogs up warning logs
#QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS += -Wno-unused-parameter
QMAKE_CXXFLAGS += -Wno-unused-function
QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS_DEBUG += -Wmissing-include-dirs
QMAKE_CXXFLAGS_DEBUG += -Wzero-as-null-pointer-constant
# NOTE: last path will be the first to search. gcc -I and -L appends to the
# beginning of the path list.
# NOTE: qmake will resolve symlinks. If /usr/local/include/CL is a symlink to
# /usr/include/nvidia-352/CL, qmake will generate Makefiles using the latter.
}
macx {
QMAKE_MAC_SDK = macosx10.14
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
QMAKE_CXXFLAGS += -mmacosx-version-min=10.10 -arch x86_64
QMAKE_CXXFLAGS += -stdlib=libc++
}
unix {
CONFIG += precompile_header
QMAKE_LFLAGS_RELEASE += -s
}
#9) Declare !win32 install dirs.
win32 {#For Windows, the install folder is just the output folder.
LIB_INSTALL_DIR = $$DESTDIR
BIN_INSTALL_DIR = $$DESTDIR
SHARE_INSTALL_DIR = $$DESTDIR
LAUNCHER_INSTALL_DIR = $$DESTDIR
}
!win32 {
LIB_INSTALL_DIR = /usr/lib
BIN_INSTALL_DIR = /usr/bin
SHARE_INSTALL_DIR = /usr/share/fractorium
LAUNCHER_INSTALL_DIR = /usr/share/applications
}
#10) Add third party libraries to install dir.
win32 {
libxml.path = $$BIN_INSTALL_DIR
libxml.files = $$absolute_path($$EMBER_ROOT/Deps/libxml2.dll)
INSTALLS += libxml
iex.path = $$BIN_INSTALL_DIR
iex.files = $$absolute_path($$EMBER_ROOT/Deps/Iex-3_1.dll)
INSTALLS += iex
imath.path = $$BIN_INSTALL_DIR
imath.files = $$absolute_path($$EMBER_ROOT/Deps/Imath-3_1.dll)
INSTALLS += imath
ilmthread.path = $$BIN_INSTALL_DIR
ilmthread.files = $$absolute_path($$EMBER_ROOT/Deps/IlmThread-3_1.dll)
INSTALLS += ilmthread
openexr.path = $$BIN_INSTALL_DIR
openexr.files = $$absolute_path($$EMBER_ROOT/Deps/OpenEXR-3_1.dll)
INSTALLS += openexr
}
#11) Print values of relevant variables for debugging.
#message(CONFIG: $(CONFIG))
#message(EMBER_ROOT: $$absolute_path($$EMBER_ROOT))
#message(EXTERNAL_DIR: $$absolute_path($$EXTERNAL_DIR))
#message(EXTERNAL_LIB: $$absolute_path($$EXTERNAL_LIB))
#message(SRC_DIR: $$absolute_path($$SRC_DIR))
#message(SRC_COMMON_DIR: $$SRC_COMMON_DIR)
#message(ASSETS_DIR: $$absolute_path($$ASSETS_DIR))
#message(LOCAL_INCLUDE_DIR: $$absolute_path($$LOCAL_INCLUDE_DIR))
#message(QTCREATOR_DIR: $$absolute_path($$QTCREATOR_DIR))
#message(LIBS: $$absolute_path($$LIBS))
#message(DESTDIR: $$absolute_path($$DESTDIR))
#message(DEPENDPATH: $$absolute_path($$DEPENDPATH))
#message(AMDAPPSDKROOT: $$(AMDAPPSDKROOT))
#message(CUDA_PATH: $$(CUDA_PATH))
win32 {
#message(RCPATH: $$RCPATH)
}
#message(LIB_INSTALL_DIR: $$absolute_path($$LIB_INSTALL_DIR))
#message(BIN_INSTALL_DIR: $$absolute_path($$BIN_INSTALL_DIR))
#message(SHARE_INSTALL_DIR: $$absolute_path($$SHARE_INSTALL_DIR))
#message(LAUNCHER_INSTALL_DIR: $$absolute_path($$LAUNCHER_INSTALL_DIR))
VERSION = 22.21.4.2
win32:CONFIG += skip_target_version_ext
CONFIG += c++20
#message(PWD: $$absolute_path($$PWD))
#1) Declare the root of all files in this project, everything else will be
# defined in terms of this.
EMBER_ROOT = ./../..
# When compiling from project root
autobuild {
# EMBER_ROOT = $$(PWD)/../..
}
#2) Declare where dependency folders are.
# Parent folders for third party dependencies and their compiled outputs.
win32: {
EXTERNAL_DIR = $$absolute_path($$EMBER_ROOT/..)
EXTERNAL_LIB = $$absolute_path($$EMBER_ROOT/Deps)
}
#3) Declare where our source, data and resource files are.
SRC_DIR = $$EMBER_ROOT/Source
SRC_COMMON_DIR = $$absolute_path($$EMBER_ROOT/Source/EmberCommon)
ASSETS_DIR = $$absolute_path($$EMBER_ROOT/Data)
QTCREATOR_DIR = $$absolute_path($$EMBER_ROOT/Builds/QtCreator)
win32:RCPATH=$$absolute_path($$QTCREATOR_DIR/../MSVC/Solution)
#4) Add up all include paths.
INCLUDEPATH += $$LOCAL_INCLUDE_DIR
INCLUDEPATH += $$absolute_path($$SRC_DIR/Ember)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCL)
INCLUDEPATH += $$absolute_path($$SRC_DIR/EmberCommon)
win32 {
INCLUDEPATH += $$EXTERNAL_DIR/glm
INCLUDEPATH += $$EXTERNAL_DIR/libjpeg
INCLUDEPATH += $$EXTERNAL_DIR/libpng
INCLUDEPATH += $$EXTERNAL_DIR/libxml2/include
INCLUDEPATH += $$EXTERNAL_DIR/zlib
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/Imath
INCLUDEPATH += $$EXTERNAL_DIR/openexr/output/include/OpenEXR
}
!win32 {
#If your global includes are stored elsewhere, add them here.
#INCLUDEPATH += /usr/include
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/include/GL
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/local/include/GL
}
INCLUDEPATH += /usr/include/glm
exists( /usr/local/include/GL ) {
INCLUDEPATH += /usr/include/Imath
}
exists( /usr/include/OpenEXR ) {
INCLUDEPATH += /usr/include/OpenEXR
}
exists( /usr/include/Imath ) {
INCLUDEPATH += /usr/include/Imath
}
unix:!macx {
INCLUDEPATH += /usr/include/libxml2
}
else {
INCLUDEPATH += /usr/local/opt/libxml2/include/libxml2
}
#libjpeg and libpng aren't in separate folders, so nothing to add here for them.
}
#5) Add up all library paths. Ember and EmberCL don't need libjpeb, libpng or zlib and
# Ember doesn't need OpenCL. But just place them all here in the common file for ease of maintenance.
# Unneeded libs will just be ignored.
win32 {
LIBS = ""
LIBS += OpenGL32.lib
LIBS += WS2_32.lib
LIBS += $$(OCL_ROOT)/lib/x86_64/OpenCL.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libjpeg.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libpng.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/libxml2.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/zlib.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Iex-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/IlmThread-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/Imath-3_1.lib
LIBS += $$absolute_path($$EXTERNAL_LIB)/OpenEXR-3_1.lib
}
!win32 {
LIBS += -ljpeg
LIBS += -lpng
LIBS += -lpthread
LIBS += -lOpenEXR
unix:!macx {
LIBS += -lxml2
}
else {
LIBS += -L/usr/local/opt/libxml2/lib -lxml2
}
}
macx {
LIBS += -framework OpenGL
LIBS += -framework OpenCL
LIBS += -L/usr/local/lib# homebrew installs into /usr/local
}
unix:!macx {
LIBS += -lGL
LIBS += -lOpenCL
}
#6) Declare intermediate paths.
#7) Declare output paths for each configuration.
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/release)
}
CONFIG(debug, debug|release) {
DESTDIR = $$absolute_path($$EMBER_ROOT/Bin/debug)
}
#8) Set compiler options.
QMAKE_CXXFLAGS_RELEASE += -O2
QMAKE_CXXFLAGS_RELEASE += -DNDEBUG
QMAKE_CXXFLAGS += -D_M_X64
QMAKE_CXXFLAGS += -D_CONSOLE
QMAKE_CXXFLAGS += -D_USRDLL
QMAKE_CXXFLAGS -= -D_UNICODE
QMAKE_CXXFLAGS -= -DUNICODE
DEFINES -= _UNICODE
DEFINES -= UNICODE
win32 {
QMAKE_CXXFLAGS += -bigobj #Allow for very large object files.
QMAKE_CXXFLAGS += /MP #Enable multi-processor compilation.
QMAKE_CXXFLAGS += /Zc:wchar_t #Treat wchar_t as builtin type (we don't use wchar_t anyway).
QMAKE_CXXFLAGS += /Zi #Debug information format: program database.
QMAKE_CXXFLAGS += /Gm- #Disable minimal rebuild, needed to allow /MP.
QMAKE_CXXFLAGS += /fp:precise #Precise floating point model.
QMAKE_CXXFLAGS += /fp:except- #Disable floating point exceptions.
QMAKE_CXXFLAGS += /D "WIN32"
QMAKE_CXXFLAGS += /D "_WINDOWS"
QMAKE_CXXFLAGS += /D "_USRDLL"
QMAKE_CXXFLAGS += /D "_WINDLL" #Build as a DLL.
QMAKE_CXXFLAGS += /D "_MBCS" #Use multi-byte character set.
QMAKE_CXXFLAGS += /errorReport:prompt #Internal compiler error reporting, prompt immediately.
QMAKE_CXXFLAGS += /GF #Enable string pooling.
QMAKE_CXXFLAGS += /WX- #Don't treat warnings as errors.
QMAKE_CXXFLAGS += /Zc:forScope #Force conformance in for loop scope.
QMAKE_CXXFLAGS += /Gd #Calling convention: __cdecl.
QMAKE_CXXFLAGS += /EHsc #Enable C++ exceptions.
QMAKE_CXXFLAGS += /nologo #Suppress compiler startup banner.
QMAKE_CXXFLAGS_RELEASE += /GS- #Disable security check.
QMAKE_CXXFLAGS_RELEASE += /MD #Link to multi-threaded DLL.
QMAKE_CXXFLAGS_RELEASE += /Gy #Enable function level linking.
QMAKE_CXXFLAGS_RELEASE += /O2 #Maximize speed.
QMAKE_CXXFLAGS_RELEASE += /Ot #Favor fast code.
QMAKE_CXXFLAGS_RELEASE += /D "NDEBUG" #Release mode.
QMAKE_CXXFLAGS_DEBUG += /W3 #Error warning level to 3.
QMAKE_CXXFLAGS_DEBUG += /GS #Enable security check.
QMAKE_CXXFLAGS_DEBUG += /MDd #Link to multi-threaded debug DLL.
QMAKE_CXXFLAGS_DEBUG += /Od #Optimization disabled.
QMAKE_CXXFLAGS_DEBUG += /D "_DEBUG" #Debug mode.
QMAKE_CXXFLAGS_DEBUG += /RTC1 #Basic runtime checks: stack frames and uninitialized variables.
QMAKE_CXXFLAGS_DEBUG += /Ob2 #Inline function expansion: any suitable.
}
!win32 {
native {
QMAKE_CXXFLAGS += -march=native
} else {
QMAKE_CXXFLAGS += -march=k8
}
QMAKE_CXXFLAGS_RELEASE += -fomit-frame-pointer
QMAKE_CXXFLAGS += -fPIC
QMAKE_CXXFLAGS += -fpermissive
QMAKE_CXXFLAGS += -pedantic
QMAKE_CXXFLAGS += -std=c++20
QMAKE_CXXFLAGS += -Wnon-virtual-dtor
QMAKE_CXXFLAGS += -Wshadow
QMAKE_CXXFLAGS += -Winit-self
QMAKE_CXXFLAGS += -Wredundant-decls
QMAKE_CXXFLAGS += -Wcast-align
QMAKE_CXXFLAGS += -Winline
QMAKE_CXXFLAGS += -Wunreachable-code
QMAKE_CXXFLAGS += -Wswitch-enum
QMAKE_CXXFLAGS += -Wswitch-default
QMAKE_CXXFLAGS += -Wmain
QMAKE_CXXFLAGS += -Wfatal-errors
QMAKE_CXXFLAGS += -Wall -fpermissive
# CL has lots of old-style-cast which clogs up warning logs
#QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS += -Wno-unused-parameter
QMAKE_CXXFLAGS += -Wno-unused-function
QMAKE_CXXFLAGS += -Wold-style-cast
QMAKE_CXXFLAGS_DEBUG += -Wmissing-include-dirs
QMAKE_CXXFLAGS_DEBUG += -Wzero-as-null-pointer-constant
# NOTE: last path will be the first to search. gcc -I and -L appends to the
# beginning of the path list.
# NOTE: qmake will resolve symlinks. If /usr/local/include/CL is a symlink to
# /usr/include/nvidia-352/CL, qmake will generate Makefiles using the latter.
}
macx {
QMAKE_MAC_SDK = macosx10.14
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
QMAKE_CXXFLAGS += -mmacosx-version-min=10.10 -arch x86_64
QMAKE_CXXFLAGS += -stdlib=libc++
}
unix {
CONFIG += precompile_header
QMAKE_LFLAGS_RELEASE += -s
}
#9) Declare !win32 install dirs.
win32 {#For Windows, the install folder is just the output folder.
LIB_INSTALL_DIR = $$DESTDIR
BIN_INSTALL_DIR = $$DESTDIR
SHARE_INSTALL_DIR = $$DESTDIR
LAUNCHER_INSTALL_DIR = $$DESTDIR
}
!win32 {
LIB_INSTALL_DIR = /usr/lib
BIN_INSTALL_DIR = /usr/bin
SHARE_INSTALL_DIR = /usr/share/fractorium
LAUNCHER_INSTALL_DIR = /usr/share/applications
}
#10) Add third party libraries to install dir.
win32 {
libxml.path = $$BIN_INSTALL_DIR
libxml.files = $$absolute_path($$EMBER_ROOT/Deps/libxml2.dll)
INSTALLS += libxml
iex.path = $$BIN_INSTALL_DIR
iex.files = $$absolute_path($$EMBER_ROOT/Deps/Iex-3_1.dll)
INSTALLS += iex
imath.path = $$BIN_INSTALL_DIR
imath.files = $$absolute_path($$EMBER_ROOT/Deps/Imath-3_1.dll)
INSTALLS += imath
ilmthread.path = $$BIN_INSTALL_DIR
ilmthread.files = $$absolute_path($$EMBER_ROOT/Deps/IlmThread-3_1.dll)
INSTALLS += ilmthread
openexr.path = $$BIN_INSTALL_DIR
openexr.files = $$absolute_path($$EMBER_ROOT/Deps/OpenEXR-3_1.dll)
INSTALLS += openexr
}
#11) Print values of relevant variables for debugging.
#message(CONFIG: $(CONFIG))
#message(EMBER_ROOT: $$absolute_path($$EMBER_ROOT))
#message(EXTERNAL_DIR: $$absolute_path($$EXTERNAL_DIR))
#message(EXTERNAL_LIB: $$absolute_path($$EXTERNAL_LIB))
#message(SRC_DIR: $$absolute_path($$SRC_DIR))
#message(SRC_COMMON_DIR: $$SRC_COMMON_DIR)
#message(ASSETS_DIR: $$absolute_path($$ASSETS_DIR))
#message(LOCAL_INCLUDE_DIR: $$absolute_path($$LOCAL_INCLUDE_DIR))
#message(QTCREATOR_DIR: $$absolute_path($$QTCREATOR_DIR))
#message(LIBS: $$absolute_path($$LIBS))
#message(DESTDIR: $$absolute_path($$DESTDIR))
#message(DEPENDPATH: $$absolute_path($$DEPENDPATH))
#message(AMDAPPSDKROOT: $$(AMDAPPSDKROOT))
#message(CUDA_PATH: $$(CUDA_PATH))
win32 {
#message(RCPATH: $$RCPATH)
}
#message(LIB_INSTALL_DIR: $$absolute_path($$LIB_INSTALL_DIR))
#message(BIN_INSTALL_DIR: $$absolute_path($$BIN_INSTALL_DIR))
#message(SHARE_INSTALL_DIR: $$absolute_path($$SHARE_INSTALL_DIR))
#message(LAUNCHER_INSTALL_DIR: $$absolute_path($$LAUNCHER_INSTALL_DIR))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,203 +1,203 @@
#!/bin/bash
# The purpose of this custom AppRun script is
# to allow symlinking the AppImage and invoking
# the corresponding binary depending on which
# symlink was used to invoke the AppImage
set -e
if [ ! -z "$DEBUG" ] ; then
env
set -x
fi
THIS="$0"
# http://stackoverflow.com/questions/3190818/
args=("$@")
NUMBER_OF_ARGS="$#"
CONFIG_PATH=~/.config/fractorium
DARK_LINUX=~/.config/fractorium/dark_linux.qss
LIGHT_DARK=~/.config/fractorium/lightdark.qss
URANIUM=~/.config/fractorium/uranium.qss
# please do not change $VENDORPREFIX as it will allow for desktop files
# belonging to AppImages to be recognized by future AppImageKit components
# such as desktop integration daemons
VENDORPREFIX=appimagekit
if [ -z $APPDIR ] ; then
# Find the AppDir. It is the directory that contains AppRun.
# This assumes that this script resides inside the AppDir or a subdirectory.
# If this script is run inside an AppImage, then the AppImage runtime likely has already set $APPDIR
path="$(dirname "$(readlink -f "${THIS}")")"
while [[ "$path" != "" && ! -e "$path/$1" ]]; do
path=${path%/*}
done
APPDIR="$path"
fi
#export PATH="${APPDIR}:${APPDIR}/usr/sbin:${PATH}"
#export XDG_DATA_DIRS="./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:${XDG_DATA_DIRS}"
#export XDG_DATA_DIRS="${APPDIR}"/usr/share/:"${XDG_DATA_DIRS}":/usr/share/gnome/:/usr/local/share/:/usr/share/
#export GSETTINGS_SCHEMA_DIR="${APPDIR}/usr/share/glib-2.0/schemas:${GSETTINGS_SCHEMA_DIR}"
export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}"
DESKTOP_FILE="$APPDIR/fractorium.desktop"
if [ -z "$APPIMAGE_EXIT_AFTER_INSTALL" ] ; then
trap atexit EXIT
fi
atexit()
{
if [ ! -z $APPIMAGE ] ; then
BINARY_NAME=$(basename "$ARGV0")
if [ $NUMBER_OF_ARGS -eq 0 ] ; then
FINAL_ARGS=""
else
FINAL_ARGS="${args[@]}"
fi
#echo "args: " $FINAL_ARGS
if [ -e "$APPDIR/usr/bin/$BINARY_NAME" ] ; then
exec "$APPDIR/usr/bin/$BINARY_NAME" $FINAL_ARGS
else
exec "$APPDIR/usr/bin/fractorium" $FINAL_ARGS
fi
else
exec "$APPDIR/usr/bin/fractorium"
fi
}
if [ ! -z $APPIMAGE ] ; then
BINARY_NAME=$(basename "$ARGV0")
if [[ ("$BINARY_NAME" == "emberrender") || ("$BINARY_NAME" == "embergenome") || ("$BINARY_NAME" == "emberanimate") ]] ; then
exit 0
fi
fi
if [ ! -e "$DARK_LINUX" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/dark_linux.qss $CONFIG_PATH
fi
if [ ! -e "$LIGHT_DARK" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/lightdark.qss $CONFIG_PATH
fi
if [ ! -e "$URANIUM" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/uranium.qss $CONFIG_PATH
fi
check_prevent()
{
FILE=$1
if [ -e "$FILE" ] ; then
exit 0
fi
}
# exit immediately of one of these files is present
# (e.g., because the desktop environment wants to handle desktop integration itself)
check_prevent "$HOME/.local/share/$VENDORPREFIX/no_desktopintegration"
check_prevent "/usr/share/$VENDORPREFIX/no_desktopintegration"
check_prevent "/etc/$VENDORPREFIX/no_desktopintegration"
check_prevent "/usr/share/applications/Fractorium.desktop"
check_prevent "/usr/share/applications/fractorium.desktop"
# exit immediately if appimaged is running
pidof appimaged 2>/dev/null && exit 0
# exit immediately if $DESKTOPINTEGRATION is not empty
if [ ! -z "$DESKTOPINTEGRATION" ] ; then
echo "no desktop integration."
exit 0
fi
check_dep()
{
DEP=$1
if [ -z $(which $DEP) ] ; then
echo "$DEP is missing. Skipping ${THIS}."
exit 0
fi
}
if [ ! -f "$DESKTOP_FILE" ] ; then
echo "Desktop file is missing. Please run ${THIS} from within an AppImage."
exit 0
fi
if [ -z "$APPIMAGE" ] ; then
APPIMAGE="$APPDIR/AppRun"
# not running from within an AppImage; hence using the AppRun for Exec=
fi
# determine where the desktop file should be installed
if [[ $EUID -ne 0 ]]; then
DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications"
SYSTEM_WIDE=""
else
DESTINATION_DIR_DESKTOP="/usr/local/share/applications"
# for xdg-mime and xdg-icon-resource
SYSTEM_WIDE="--mode system"
fi
desktopFilePath="$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-fractorium.desktop"
# check if the desktop file is already there and if so, whether it points to the same AppImage
if [ -e "$desktopFilePath" ] ; then
INSTALLED_PATH=$(grep "^Exec=" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-fractorium.desktop" | head -n 1 | cut -d= -f2)
RUNING_PATH=${APPIMAGE}
#echo "installed: $INSTALLED_APP_VERSION image: $APP_VERSION"
if [ "$INSTALLED_PATH" == "$RUNING_PATH" ] ; then
#echo "INSTALLED_PATH nothing to do"
exit 0
fi
fi
# check whether dependencies are present in base system (we do not bundle these)
# http://cgit.freedesktop.org/xdg/desktop-file-utils/
check_dep desktop-file-install
check_dep xdg-icon-resource
check_dep xdg-mime
check_dep xdg-desktop-menu
desktop-file-install --rebuild-mime-info-cache \
--vendor=$VENDORPREFIX --set-key=Exec --set-value=${APPIMAGE} \
--set-key=X-AppImage-Comment --set-value="Generated by ${THIS}" \
--set-icon="appimagekit-fractorium" --set-key=TryExec --set-value=${APPIMAGE// /\\s} "$DESKTOP_FILE" \
--dir "$DESTINATION_DIR_DESKTOP" \
--mode=755
# uninstall previous icons
xdg-icon-resource uninstall --noupdate --size 256 "appimagekit-fractorium"
# install the icon files
xdg-icon-resource install --noupdate --context apps --size 256 "$APPDIR/usr/share/icons/hicolor/256x256/apps/fractorium.png" "appimagekit-fractorium"
xdg-icon-resource forceupdate
# Install the icon files for the mime type
ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/mimetypes/*.png" 2>/dev/null || true)
for ICON in $ICONS ; do
ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1)
xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} "${ICON}" $(basename $ICON | sed -e 's/.png//g')
done
xdg-desktop-menu forceupdate
# for MIME
gtk-update-icon-cache
#!/bin/bash
# The purpose of this custom AppRun script is
# to allow symlinking the AppImage and invoking
# the corresponding binary depending on which
# symlink was used to invoke the AppImage
set -e
if [ ! -z "$DEBUG" ] ; then
env
set -x
fi
THIS="$0"
# http://stackoverflow.com/questions/3190818/
args=("$@")
NUMBER_OF_ARGS="$#"
CONFIG_PATH=~/.config/fractorium
DARK_LINUX=~/.config/fractorium/dark_linux.qss
LIGHT_DARK=~/.config/fractorium/lightdark.qss
URANIUM=~/.config/fractorium/uranium.qss
# please do not change $VENDORPREFIX as it will allow for desktop files
# belonging to AppImages to be recognized by future AppImageKit components
# such as desktop integration daemons
VENDORPREFIX=appimagekit
if [ -z $APPDIR ] ; then
# Find the AppDir. It is the directory that contains AppRun.
# This assumes that this script resides inside the AppDir or a subdirectory.
# If this script is run inside an AppImage, then the AppImage runtime likely has already set $APPDIR
path="$(dirname "$(readlink -f "${THIS}")")"
while [[ "$path" != "" && ! -e "$path/$1" ]]; do
path=${path%/*}
done
APPDIR="$path"
fi
#export PATH="${APPDIR}:${APPDIR}/usr/sbin:${PATH}"
#export XDG_DATA_DIRS="./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:${XDG_DATA_DIRS}"
#export XDG_DATA_DIRS="${APPDIR}"/usr/share/:"${XDG_DATA_DIRS}":/usr/share/gnome/:/usr/local/share/:/usr/share/
#export GSETTINGS_SCHEMA_DIR="${APPDIR}/usr/share/glib-2.0/schemas:${GSETTINGS_SCHEMA_DIR}"
export LD_LIBRARY_PATH="${APPDIR}/usr/lib:${LD_LIBRARY_PATH}"
DESKTOP_FILE="$APPDIR/fractorium.desktop"
if [ -z "$APPIMAGE_EXIT_AFTER_INSTALL" ] ; then
trap atexit EXIT
fi
atexit()
{
if [ ! -z $APPIMAGE ] ; then
BINARY_NAME=$(basename "$ARGV0")
if [ $NUMBER_OF_ARGS -eq 0 ] ; then
FINAL_ARGS=""
else
FINAL_ARGS="${args[@]}"
fi
#echo "args: " $FINAL_ARGS
if [ -e "$APPDIR/usr/bin/$BINARY_NAME" ] ; then
exec "$APPDIR/usr/bin/$BINARY_NAME" $FINAL_ARGS
else
exec "$APPDIR/usr/bin/fractorium" $FINAL_ARGS
fi
else
exec "$APPDIR/usr/bin/fractorium"
fi
}
if [ ! -z $APPIMAGE ] ; then
BINARY_NAME=$(basename "$ARGV0")
if [[ ("$BINARY_NAME" == "emberrender") || ("$BINARY_NAME" == "embergenome") || ("$BINARY_NAME" == "emberanimate") ]] ; then
exit 0
fi
fi
if [ ! -e "$DARK_LINUX" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/dark_linux.qss $CONFIG_PATH
fi
if [ ! -e "$LIGHT_DARK" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/lightdark.qss $CONFIG_PATH
fi
if [ ! -e "$URANIUM" ] ; then
mkdir -p $CONFIG_PATH
cp $APPDIR/usr/bin/uranium.qss $CONFIG_PATH
fi
check_prevent()
{
FILE=$1
if [ -e "$FILE" ] ; then
exit 0
fi
}
# exit immediately of one of these files is present
# (e.g., because the desktop environment wants to handle desktop integration itself)
check_prevent "$HOME/.local/share/$VENDORPREFIX/no_desktopintegration"
check_prevent "/usr/share/$VENDORPREFIX/no_desktopintegration"
check_prevent "/etc/$VENDORPREFIX/no_desktopintegration"
check_prevent "/usr/share/applications/Fractorium.desktop"
check_prevent "/usr/share/applications/fractorium.desktop"
# exit immediately if appimaged is running
pidof appimaged 2>/dev/null && exit 0
# exit immediately if $DESKTOPINTEGRATION is not empty
if [ ! -z "$DESKTOPINTEGRATION" ] ; then
echo "no desktop integration."
exit 0
fi
check_dep()
{
DEP=$1
if [ -z $(which $DEP) ] ; then
echo "$DEP is missing. Skipping ${THIS}."
exit 0
fi
}
if [ ! -f "$DESKTOP_FILE" ] ; then
echo "Desktop file is missing. Please run ${THIS} from within an AppImage."
exit 0
fi
if [ -z "$APPIMAGE" ] ; then
APPIMAGE="$APPDIR/AppRun"
# not running from within an AppImage; hence using the AppRun for Exec=
fi
# determine where the desktop file should be installed
if [[ $EUID -ne 0 ]]; then
DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications"
SYSTEM_WIDE=""
else
DESTINATION_DIR_DESKTOP="/usr/local/share/applications"
# for xdg-mime and xdg-icon-resource
SYSTEM_WIDE="--mode system"
fi
desktopFilePath="$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-fractorium.desktop"
# check if the desktop file is already there and if so, whether it points to the same AppImage
if [ -e "$desktopFilePath" ] ; then
INSTALLED_PATH=$(grep "^Exec=" "$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-fractorium.desktop" | head -n 1 | cut -d= -f2)
RUNING_PATH=${APPIMAGE}
#echo "installed: $INSTALLED_APP_VERSION image: $APP_VERSION"
if [ "$INSTALLED_PATH" == "$RUNING_PATH" ] ; then
#echo "INSTALLED_PATH nothing to do"
exit 0
fi
fi
# check whether dependencies are present in base system (we do not bundle these)
# http://cgit.freedesktop.org/xdg/desktop-file-utils/
check_dep desktop-file-install
check_dep xdg-icon-resource
check_dep xdg-mime
check_dep xdg-desktop-menu
desktop-file-install --rebuild-mime-info-cache \
--vendor=$VENDORPREFIX --set-key=Exec --set-value=${APPIMAGE} \
--set-key=X-AppImage-Comment --set-value="Generated by ${THIS}" \
--set-icon="appimagekit-fractorium" --set-key=TryExec --set-value=${APPIMAGE// /\\s} "$DESKTOP_FILE" \
--dir "$DESTINATION_DIR_DESKTOP" \
--mode=755
# uninstall previous icons
xdg-icon-resource uninstall --noupdate --size 256 "appimagekit-fractorium"
# install the icon files
xdg-icon-resource install --noupdate --context apps --size 256 "$APPDIR/usr/share/icons/hicolor/256x256/apps/fractorium.png" "appimagekit-fractorium"
xdg-icon-resource forceupdate
# Install the icon files for the mime type
ICONS=$(find "${APPDIR}/usr/share/icons/" -wholename "*/mimetypes/*.png" 2>/dev/null || true)
for ICON in $ICONS ; do
ICON_SIZE=$(echo "${ICON}" | rev | cut -d "/" -f 3 | rev | cut -d "x" -f 1)
xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} "${ICON}" $(basename $ICON | sed -e 's/.png//g')
done
xdg-desktop-menu forceupdate
# for MIME
gtk-update-icon-cache

View File

@ -1,112 +1,112 @@
$exe = ""
if ([System.Environment]::OSVersion.Platform.ToString().ToLower() -like "*win*")
{
$exe = "./EmberRender.exe"
}
else
{
$exe = "emberrender"
}
$benchprefix = "./bench/"
$devices = "2"#Set this to whatever device index your main GPU resides at. If you are unsure, just run emberrender --openclinfo to find out.
$cpuquality = 150
$gpuquality = 2000
$verbose = "--verbose"
$name_enable = "--name_enable"
$dump_args = ""#"--dumpargs"
$totalOutput = ""
$ssArray = @("1","2","4")
$ssSuffixArray = @("_ss1","_ss2","_ss4")
$Script:output = ""
[Collections.Generic.List[String]] $filteredLines = ""
$table = New-Object system.Data.DataTable "BenchTable"
$col1 = New-Object system.Data.DataColumn Filename, ([string])
$col2 = New-Object system.Data.DataColumn Precision, ([string])
$col3 = New-Object system.Data.DataColumn Device,([string])
$col4 = New-Object system.Data.DataColumn SS1, ([string])
$col5 = New-Object system.Data.DataColumn SS2, ([string])
$col6 = New-Object system.Data.DataColumn SS4, ([string])
#Add the Columns
$table.columns.add($col1)
$table.columns.add($col2)
$table.columns.add($col3)
$table.columns.add($col4)
$table.columns.add($col5)
$table.columns.add($col6)
function TestFileSupersamples([string]$filename, [string]$precision, [string]$suffix, [string]$quality, [string]$misc)
{
[int]$sscount = 0;
$row = $table.NewRow()
$row.Filename = [io.path]::GetFileNameWithoutExtension($filename)
if ($precision -eq "--sp")
{
$row.Precision = "Single"
}
else
{
$row.Precision = "Double"
}
if ($misc -like "*opencl*")
{
$row.Device = "GPU"
}
else
{
$row.Device = "CPU"
}
foreach ($ssval in $Script:ssArray)
{
$fullSuffix = $suffix + $Script:ssSuffixArray[$sscount]
$renderargs = ("--in=$filename", "$verbose", "$name_enable", "$dump_args", "--suffix=$fullSuffix", "--supersample=$ssval", "$precision", "--quality=$quality") + $misc.Split(" ")
$Script:output = (&$exe $renderargs) | Out-String
$val = $Script:output.split([environment]::NewLine) | where {$_ -like "*Iters/sec*"}
$val = (($val.split(' ')[1] -replace '[.,]',''))
$row[3 + $sscount] = $val
$Script:filteredLines += $val
$Script:totalOutput += [environment]::NewLine + "====================" + [environment]::NewLine + $Script:output
$sscount++
}
$table.Rows.Add($row)
}
function BenchAllForFile([string]$filename)
{
#if you want to test extreme speed on your GPU, add this option, --sbpctth=1.0, to increase the amount of each sub batch that is done on each opencl thread per kernel launch.
#set the value from somewhere between 0.025 (the default) and 1.0 (the max). Values above 0.3 don't make much of a difference.
#this usually results in a roughly 1% speed improvement.
#however, it can cause the render to fail, especially on the golubaja_rippingfrominside_complexcode and zy0rg_six_bigcomplexcode flames when using double precision.
$misc = "--opencl --device=" + $devices
TestFileSupersamples $filename "--sp" "_f32_cpu" $script:cpuquality ""
TestFileSupersamples $filename "" "_f64_cpu" $script:cpuquality ""
TestFileSupersamples $filename "--sp" "_f32_opencl" $script:gpuquality $misc
TestFileSupersamples $filename "" "_f64_opencl" $script:gpuquality $misc
}
cd ..
$fileOne = $benchprefix + "mfeemster_basicmemory.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "tatasz_springcrown_manysimplexforms.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "tyrantwave_flippeddisc_normal.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "golubaja_rippingfrominside_complexcode.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "zy0rg_six_bigcomplexcode.flame"
BenchAllForFile $fileOne
$Script:totalOutput | Out-File -FilePath benchout.txt
$table | Export-Csv -Path ".\benchout.csv" -Force -NoTypeInformation
$exe = ""
if ([System.Environment]::OSVersion.Platform.ToString().ToLower() -like "*win*")
{
$exe = "./EmberRender.exe"
}
else
{
$exe = "emberrender"
}
$benchprefix = "./bench/"
$devices = "2"#Set this to whatever device index your main GPU resides at. If you are unsure, just run emberrender --openclinfo to find out.
$cpuquality = 150
$gpuquality = 2000
$verbose = "--verbose"
$name_enable = "--name_enable"
$dump_args = ""#"--dumpargs"
$totalOutput = ""
$ssArray = @("1","2","4")
$ssSuffixArray = @("_ss1","_ss2","_ss4")
$Script:output = ""
[Collections.Generic.List[String]] $filteredLines = ""
$table = New-Object system.Data.DataTable "BenchTable"
$col1 = New-Object system.Data.DataColumn Filename, ([string])
$col2 = New-Object system.Data.DataColumn Precision, ([string])
$col3 = New-Object system.Data.DataColumn Device,([string])
$col4 = New-Object system.Data.DataColumn SS1, ([string])
$col5 = New-Object system.Data.DataColumn SS2, ([string])
$col6 = New-Object system.Data.DataColumn SS4, ([string])
#Add the Columns
$table.columns.add($col1)
$table.columns.add($col2)
$table.columns.add($col3)
$table.columns.add($col4)
$table.columns.add($col5)
$table.columns.add($col6)
function TestFileSupersamples([string]$filename, [string]$precision, [string]$suffix, [string]$quality, [string]$misc)
{
[int]$sscount = 0;
$row = $table.NewRow()
$row.Filename = [io.path]::GetFileNameWithoutExtension($filename)
if ($precision -eq "--sp")
{
$row.Precision = "Single"
}
else
{
$row.Precision = "Double"
}
if ($misc -like "*opencl*")
{
$row.Device = "GPU"
}
else
{
$row.Device = "CPU"
}
foreach ($ssval in $Script:ssArray)
{
$fullSuffix = $suffix + $Script:ssSuffixArray[$sscount]
$renderargs = ("--in=$filename", "$verbose", "$name_enable", "$dump_args", "--suffix=$fullSuffix", "--supersample=$ssval", "$precision", "--quality=$quality") + $misc.Split(" ")
$Script:output = (&$exe $renderargs) | Out-String
$val = $Script:output.split([environment]::NewLine) | where {$_ -like "*Iters/sec*"}
$val = (($val.split(' ')[1] -replace '[.,]',''))
$row[3 + $sscount] = $val
$Script:filteredLines += $val
$Script:totalOutput += [environment]::NewLine + "====================" + [environment]::NewLine + $Script:output
$sscount++
}
$table.Rows.Add($row)
}
function BenchAllForFile([string]$filename)
{
#if you want to test extreme speed on your GPU, add this option, --sbpctth=1.0, to increase the amount of each sub batch that is done on each opencl thread per kernel launch.
#set the value from somewhere between 0.025 (the default) and 1.0 (the max). Values above 0.3 don't make much of a difference.
#this usually results in a roughly 1% speed improvement.
#however, it can cause the render to fail, especially on the golubaja_rippingfrominside_complexcode and zy0rg_six_bigcomplexcode flames when using double precision.
$misc = "--opencl --device=" + $devices
TestFileSupersamples $filename "--sp" "_f32_cpu" $script:cpuquality ""
TestFileSupersamples $filename "" "_f64_cpu" $script:cpuquality ""
TestFileSupersamples $filename "--sp" "_f32_opencl" $script:gpuquality $misc
TestFileSupersamples $filename "" "_f64_opencl" $script:gpuquality $misc
}
cd ..
$fileOne = $benchprefix + "mfeemster_basicmemory.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "tatasz_springcrown_manysimplexforms.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "tyrantwave_flippeddisc_normal.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "golubaja_rippingfrominside_complexcode.flame"
BenchAllForFile $fileOne
$fileOne = $benchprefix + "zy0rg_six_bigcomplexcode.flame"
BenchAllForFile $fileOne
$Script:totalOutput | Out-File -FilePath benchout.txt
$table | Export-Csv -Path ".\benchout.csv" -Force -NoTypeInformation

View File

@ -1,40 +1,40 @@
<flame version="EMBER-WIN-1.0.0.7" time="0" name="golubaja_rippingfrominside_complexcode" size="1920 1080" center="0 0" scale="278" rotate="279.6" supersample="1" filter="1" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="75.7304" gamma="2.58" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="crackle flatten spherical eyefish elliptic juliascope" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" crackle="1" crackle_cellsize="0.4" crackle_power="-0.4" crackle_distort="0.2" crackle_scale="0.6" crackle_z="0.6" flatten="1" coefs="0.041436 0.195668 -0.195668 0.041436 -0.241281 0.520537" opacity="1"/>
<xform weight="40" color="0.1" var_color="1" color_speed="0.025" symmetry="0.95" name="" animate="0" spherical="1" eyefish="0.5" elliptic="0.1" flatten="1" coefs="-0.03168 -0.006227 0.009244 -0.03025 -0.163186 -0.029083" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" crackle="1" crackle_cellsize="0.4" crackle_power="-0.4" crackle_distort="0.6" crackle_scale="0.6" crackle_z="0" flatten="1" coefs="0.289664 0 0 0.289664 0.3 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" juliascope="1" juliascope_dist="1" juliascope_power="4" flatten="1" coefs="0 1 -1 0 0 0" opacity="1"/>
<palette count="256" format="RGB">
581F268A040B9A0B118C050C6C38204747474A4A4A575757
675F5280673EC67130F29224FF9316F47911C67130735E4D
5A58594B4B4B474B4C3F44482727270A0F0B0006040E0D15
303938484A49565A5B5E5E5E606060626262626262626262
666666646464626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262636363626262626262
62626261626463606B696969726870858585858B87858480
6F6E6A6E6663656565626264626262626262626262626262
63626061645D63635B60635C62626262626266626170665D
7F6469D97539FF8325FF8F1FFF7F14FD7F06F56F0EE56D17
B36B217A4D5062595C606060626262626262626262626262
6262625F5F5F5757575E38378C060F9304089C0B06A10F10
90191D6B585C655F61666062626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
62626264605D635D5D5E5E56654933951218A20B12A2090C
9E090F9A0B0D891C194C4A4B5C5C5E606060626262626262
626262626262626262626262646464676767696969656565
646464626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262605D68
5E5E6A5F616E58656B5F6362626262626262626262626262
626262626262626262626262626262626262626262626262
6464646767676A6A6A8383838A8A8A939393989E9EF8F8F8
99999986868669696961616157585A4343432B3537110E19
1309072312025528003E220A1F06000E08000D0A05200E0E
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.7" time="0" name="golubaja_rippingfrominside_complexcode" size="1920 1080" center="0 0" scale="278" rotate="279.6" supersample="1" filter="1" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="75.7304" gamma="2.58" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="crackle flatten spherical eyefish elliptic juliascope" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" crackle="1" crackle_cellsize="0.4" crackle_power="-0.4" crackle_distort="0.2" crackle_scale="0.6" crackle_z="0.6" flatten="1" coefs="0.041436 0.195668 -0.195668 0.041436 -0.241281 0.520537" opacity="1"/>
<xform weight="40" color="0.1" var_color="1" color_speed="0.025" symmetry="0.95" name="" animate="0" spherical="1" eyefish="0.5" elliptic="0.1" flatten="1" coefs="-0.03168 -0.006227 0.009244 -0.03025 -0.163186 -0.029083" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" crackle="1" crackle_cellsize="0.4" crackle_power="-0.4" crackle_distort="0.6" crackle_scale="0.6" crackle_z="0" flatten="1" coefs="0.289664 0 0 0.289664 0.3 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" juliascope="1" juliascope_dist="1" juliascope_power="4" flatten="1" coefs="0 1 -1 0 0 0" opacity="1"/>
<palette count="256" format="RGB">
581F268A040B9A0B118C050C6C38204747474A4A4A575757
675F5280673EC67130F29224FF9316F47911C67130735E4D
5A58594B4B4B474B4C3F44482727270A0F0B0006040E0D15
303938484A49565A5B5E5E5E606060626262626262626262
666666646464626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262636363626262626262
62626261626463606B696969726870858585858B87858480
6F6E6A6E6663656565626264626262626262626262626262
63626061645D63635B60635C62626262626266626170665D
7F6469D97539FF8325FF8F1FFF7F14FD7F06F56F0EE56D17
B36B217A4D5062595C606060626262626262626262626262
6262625F5F5F5757575E38378C060F9304089C0B06A10F10
90191D6B585C655F61666062626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
62626264605D635D5D5E5E56654933951218A20B12A2090C
9E090F9A0B0D891C194C4A4B5C5C5E606060626262626262
626262626262626262626262646464676767696969656565
646464626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262626262
626262626262626262626262626262626262626262605D68
5E5E6A5F616E58656B5F6362626262626262626262626262
626262626262626262626262626262626262626262626262
6464646767676A6A6A8383838A8A8A939393989E9EF8F8F8
99999986868669696961616157585A4343432B3537110E19
1309072312025528003E220A1F06000E08000D0A05200E0E
</palette>
</flame>

View File

@ -1,44 +1,44 @@
<flames>
<flame version="EMBER-WIN-1.0.0.15" time="0" name="mfeemster_basicmemory" size="1920 1280" center="0 0" scale="990" rotate="0" supersample="2" filter="1" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="4" gamma="4" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.333333" color="0.340114" var_color="1" color_speed="0.5" symmetry="0" name="" animate="0" linear="1" coefs="0.999822 -0.0188645 0.0188645 0.999822 0 0" opacity="1"/>
<palette count="256" format="RGB">
F1DFDDFAEAEDFDEDEEFDEFEFFFF0F3FCEBF3FDEBEBFBE7E8
FEDADEF8D9E1F1D4D8DFC2C4D89CB8AB82A2934C6E814A5D
644F6062495E5B414C5E3B4F6B3555853E5C9650527D6561
9995A4BBB1B9C5C8D7D0C7D8E7D5E5EAD6DFF5E1E2F1D9D9
ECCFD4DCACA2B78296B18890B68171A66F749F456B8D3862
822C495E1F323A171E1B0F0F110A041006070B0100120205
1A0C0C321B133F17206F18388D1A2788293DB35E75D5A4A7
F6D2D6FADCDCFEE9F2FFEEF6FEF5F8FDF9FAFDF7FBFFF6FF
FFF4FDFFF4FBFEF3F9FEF3F7FCEFF6FCF1F7FDF7FBFDF7FB
FCFAFBFEFCFDFEFCFDFBFAFFFDFDFDFFFEFCFEFEFEFEFEFE
FFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFDFEFFF7FFFFEBF8FE
F9F7F8FAEDF4FAE5ECE7DCECD8D9EBA4D0ED8ABAC65684A5
2452862B3B4B16142C050A0E02020202020201100B190F10
33141C531C31612C40862B3A64293D543545613E5265464C
7D555D7B7277AD969CBBA6B7D7C0C6E5D5D6D6C9D0D6B6BB
E0B2B2D9B9BEDAC3D5DFC7D4E0DDE8C5E8FEEAE9F1F4EDF5
FBF0F6FDF2F6FFF4F8FFF5F9FEF1F8FCECF7FCE5EDEDCDE5
C7B9D0B0AEC46F82935E4B69423A4F212330100F15030102
0101010100000000000000000101010102060C1011201615
33191C4221284D31404D374E46323E3B2B4535333E282140
3724373D2032451F3457233A7229447E2D4E962752DB0780
E50389EB2A87D33484CC7C95A9929C8D939F79778D825760
7F555F7A4C70917F99B3A9B1C4C4C4EAD8D8EED5DBF0D6E1
FFCEEAFFDCECFEE9EEFEEBEFFEEAECFCE1EAFFCDE5EFC6D4
F5A4C5CF597BAD4874B13B78B03957A4454BA6584E885544
68475053434640272D361528241D25231014250E182E141D
3B1A2356303D654463665A8C6B82C59585AAA587A19997A4
9D9FB892B4D995BFCFADA5BCBBB3C2DACBD0E4C5D4ECD4D4
EAD6D8EDD9DAF7DBD7F0D9E3E8DDEDEEE1EAF0E0E0F3D8E1
F4DFE6FAE8F4F8EBF4FCF0F4FCF1F7FEEFF4F9EAF1EFE4EA
E2D4E3C6B7CA9F8EAE667DA96B6071483B573A3247312A49
28213320172A151314100702090001020001010000050100
</palette>
<edit date="Sun Feb 17 20:04:18 -0800 2019" action="edit">
<edit date="Wed Nov 15 21:20:27 -0800 2017" action="edit" filename="C:/D/Dev/fractorium/Bin/x64/Release/Bench/mfeemster_basicmemory.flame" index="0">
<edit filename="" index="0"/>
</edit>
</edit>
</flame>
</flames>
<flames>
<flame version="EMBER-WIN-1.0.0.15" time="0" name="mfeemster_basicmemory" size="1920 1280" center="0 0" scale="990" rotate="0" supersample="2" filter="1" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="4" gamma="4" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.333333" color="0.340114" var_color="1" color_speed="0.5" symmetry="0" name="" animate="0" linear="1" coefs="0.999822 -0.0188645 0.0188645 0.999822 0 0" opacity="1"/>
<palette count="256" format="RGB">
F1DFDDFAEAEDFDEDEEFDEFEFFFF0F3FCEBF3FDEBEBFBE7E8
FEDADEF8D9E1F1D4D8DFC2C4D89CB8AB82A2934C6E814A5D
644F6062495E5B414C5E3B4F6B3555853E5C9650527D6561
9995A4BBB1B9C5C8D7D0C7D8E7D5E5EAD6DFF5E1E2F1D9D9
ECCFD4DCACA2B78296B18890B68171A66F749F456B8D3862
822C495E1F323A171E1B0F0F110A041006070B0100120205
1A0C0C321B133F17206F18388D1A2788293DB35E75D5A4A7
F6D2D6FADCDCFEE9F2FFEEF6FEF5F8FDF9FAFDF7FBFFF6FF
FFF4FDFFF4FBFEF3F9FEF3F7FCEFF6FCF1F7FDF7FBFDF7FB
FCFAFBFEFCFDFEFCFDFBFAFFFDFDFDFFFEFCFEFEFEFEFEFE
FFFFFFFFFFFFFFFFFFFEFFFFFEFFFFFDFEFFF7FFFFEBF8FE
F9F7F8FAEDF4FAE5ECE7DCECD8D9EBA4D0ED8ABAC65684A5
2452862B3B4B16142C050A0E02020202020201100B190F10
33141C531C31612C40862B3A64293D543545613E5265464C
7D555D7B7277AD969CBBA6B7D7C0C6E5D5D6D6C9D0D6B6BB
E0B2B2D9B9BEDAC3D5DFC7D4E0DDE8C5E8FEEAE9F1F4EDF5
FBF0F6FDF2F6FFF4F8FFF5F9FEF1F8FCECF7FCE5EDEDCDE5
C7B9D0B0AEC46F82935E4B69423A4F212330100F15030102
0101010100000000000000000101010102060C1011201615
33191C4221284D31404D374E46323E3B2B4535333E282140
3724373D2032451F3457233A7229447E2D4E962752DB0780
E50389EB2A87D33484CC7C95A9929C8D939F79778D825760
7F555F7A4C70917F99B3A9B1C4C4C4EAD8D8EED5DBF0D6E1
FFCEEAFFDCECFEE9EEFEEBEFFEEAECFCE1EAFFCDE5EFC6D4
F5A4C5CF597BAD4874B13B78B03957A4454BA6584E885544
68475053434640272D361528241D25231014250E182E141D
3B1A2356303D654463665A8C6B82C59585AAA587A19997A4
9D9FB892B4D995BFCFADA5BCBBB3C2DACBD0E4C5D4ECD4D4
EAD6D8EDD9DAF7DBD7F0D9E3E8DDEDEEE1EAF0E0E0F3D8E1
F4DFE6FAE8F4F8EBF4FCF0F4FCF1F7FEEFF4F9EAF1EFE4EA
E2D4E3C6B7CA9F8EAE667DA96B6071483B573A3247312A49
28213320172A151314100702090001020001010000050100
</palette>
<edit date="Sun Feb 17 20:04:18 -0800 2019" action="edit">
<edit date="Wed Nov 15 21:20:27 -0800 2017" action="edit" filename="C:/D/Dev/fractorium/Bin/x64/Release/Bench/mfeemster_basicmemory.flame" index="0">
<edit filename="" index="0"/>
</edit>
</edit>
</flame>
</flames>

View File

@ -1,88 +1,88 @@
<flame version="EMBER-WIN-1.0.0.7" time="0" name="tatasz_springcrown_manysimplexforms" size="1920 1080" center="2.4 -0.3" scale="422" rotate="-36" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="4" gamma="4" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.35" color="0" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 0.112257 0.112257 -0.154508 0 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0196078" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 1 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0392157" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.61803 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0588235" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 5.23607 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0784314" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 6.8541 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0980392" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 7.66272 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.117647" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 4.23607 3.07768" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.137255" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 0.112257 0.112257 -0.154508 2.11803 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.156863" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 1 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.176471" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 2.61803 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.196078" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 -1.61803 -4.9798" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.215686" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 0.181635 0.181635 -0.059017 -1.30902 -4.02874" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.235294" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 0.181635 0.181635 -0.059017 -0.809017 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.254902" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 6.3541 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.27451" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 5.8541 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.294118" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 4.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.313726" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 4.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.333333" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 3.92705 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.352941" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 6.04508 -4.39201" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.372549" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 0.5 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.35" color="0.392157" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 1.30902 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.411765" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 2.92705 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.431373" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.92705 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.45098" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 -0.112257 0.112257 -0.154508 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.470588" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.490196" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.059017 0.181636 -0.181636 -0.059017 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.509804" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 4.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.529412" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 4.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.54902" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.059017 0.181636 0.181636 0.059017 6.04508 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.568627" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 6.04508 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.588235" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 5.23607 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.607843" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 6.3541 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.627451" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.647059" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 1.30902 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.666667" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 1.30902 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.686275" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.059017 0.181636 0.181636 0.059017 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.705882" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 -0.112257 -0.112257 0.154508 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.72549" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.745098" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 0.190983 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.764706" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 0.190983 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.784314" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 -0.309017 -4.02874" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.803922" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.190983 0 0 -0.190983 2.61803 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.823529" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 -0.112257 0.112257 -0.154508 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.843137" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.862745" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.882353" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 4.23607 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.901961" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 3.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.921569" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 5.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.941176" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 3.42705 -1.31433" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.960784" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 4.73607 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.980392" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 5.54508 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.190983 0 0 -0.190983 5.54508 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<palette count="256" format="RGB">
FFF1E8F4E9E3E7E7DDCDD6D5BED3CEB9D0C6A9C9B1A7CAAA
9FC0937FAC8F7CB08C889C779571578F456A933E67603C62
593C5B533861443C633F3E66523A5E5C314F53294D410622
41042341214A464A495B6543668E696795706EA38773A588
85A894C29FA3D6B2B2F1C6BFFFDACAFEDDCEFEDBC7CCD7B7
B2C2A599BE957CB58C71A9846DA38977A88A8FBC9FB0CBAC
E7E1C1FEEDD3FEEBDAF1E6EEDDE4F4C4D9DAC6D3C9D0CBCF
EDC5BBF4C9C0F7CBC2FFDCC8E7E2DCCDD9CBC4D9C8BACEB2
AAC5A4A3C7AD9CC0A698BEAF8BBBA17EB9A37DA6966DA58C
69A684709979689F78559A87439C98569D956F8D9566838B
65838B5B827D66708B69708C73819B7B87979593A8BA9D9F
A89599A1838F776983464C6235465A263F55303845192E4B
1F224B281F3E2B1C3B2E1646332A47363B3F2E353F2B2E35
3A062A2F04202B041F1A0E1823082B2D193537214530385D
32435D3C525F3E677942677757617A535A774E5C77465C71
40566442525F4A67655779683276996087A68599A0C9BBB0
E1C7B8E1C7BAD8B8BBB7A9B6A3ABAE7EA7956E9F8C689B88
4B9B764F736941485B3E3F51343D4C3A3A4643423D494C41
4C63465371596A7F7A8A7489AA3675AA2F706A3C6A714872
7466876C8C7F75908978A19188B098B5BE9FD4BFBAECC6BB
FFD4CBFED6CCFCCCC2FBCDC0F5CBBFE7C5BBD3B0AEC0B6AD
A6C393B7C379B4CB9FB0BDB6BAD3D798CDD577AD8D6DA18B
74979B6885955F68876343685B3C6548436145465A39485D
46605F628A4E6D9A3F789555A6B476D7DAA1FADCD4FFE8EE
FFEEF4FFFFFFFFFFFFFFFFFFFFFFFFFFF4FCEBECFEE5E3F8
D7DFECBAC4C68EBCA06AA299477585246488385462334E57
3B515E4C6D74568774798F7874978182A07A93B17597AA73
98AE6EBECD68D1DD8BFFD9B2FFE5CEFFE8D6FFEDE3FFEEEE
FFF3F5FEF2F2FFF2EAFFEEE2FFECDEFFF0E0FFF0EBFFF1E8
FFEADDFEE4D5F6CFD0CBBEB69CB87D75A567608A64527967
4559623D4F5B51785D67935677A25B8AB486C5D396F4E0BB
FEE8D3FFEFE2FEF9F5FEFEFEFFF9FDFEF6F4F0EFFDFFECF3
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.7" time="0" name="tatasz_springcrown_manysimplexforms" size="1920 1080" center="2.4 -0.3" scale="422" rotate="-36" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="4" gamma="4" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.35" color="0" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 0.112257 0.112257 -0.154508 0 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0196078" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 1 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0392157" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.61803 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0588235" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 5.23607 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0784314" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 6.8541 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.0980392" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 7.66272 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.117647" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 4.23607 3.07768" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.137255" var_color="1" color_speed="0.5" symmetry="0" name="1_to_1" animate="1" linear="1" coefs="0.154508 0.112257 0.112257 -0.154508 2.11803 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.156863" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 1 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.176471" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 2.61803 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.196078" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 -1.61803 -4.9798" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.215686" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 0.181635 0.181635 -0.059017 -1.30902 -4.02874" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.235294" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 0.181635 0.181635 -0.059017 -0.809017 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.254902" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 6.3541 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.27451" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 5.8541 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.294118" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 -0.181636 -0.059017 4.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.313726" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 4.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.333333" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 3.92705 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.352941" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 6.04508 -4.39201" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.372549" var_color="1" color_speed="0.5" symmetry="0" name="1_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 0.5 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.35" color="0.392157" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 1.30902 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.411765" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 2.92705 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.431373" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.92705 0.951057" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.45098" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 -0.112257 0.112257 -0.154508 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.470588" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.490196" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.059017 0.181636 -0.181636 -0.059017 3.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.509804" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 4.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.529412" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 4.73607 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.54902" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.059017 0.181636 0.181636 0.059017 6.04508 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.568627" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 6.04508 0.587785" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.588235" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 5.23607 0" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.35" color="0.607843" var_color="1" color_speed="0.5" symmetry="0" name="2_to_1" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 6.3541 1.53884" chaos="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.627451" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.647059" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 0.112257 0.154508 1.30902 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.666667" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 1.30902 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.686275" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.059017 0.181636 0.181636 0.059017 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.705882" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 -0.112257 -0.112257 0.154508 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.72549" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 -0.112257 -0.154508 1 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.745098" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 0.190983 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.764706" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 0.190983 -2.4899" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.784314" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 0.181636 0.181636 -0.059017 -0.309017 -4.02874" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.803922" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.190983 0 0 -0.190983 2.61803 -1.90211" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.823529" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 -0.112257 0.112257 -0.154508 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.843137" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.862745" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 -0.190983 2.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.882353" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.190983 0 0 0.190983 4.23607 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.901961" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 0.112257 -0.112257 0.154508 3.92705 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.921569" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.059017 -0.181636 0.181636 0.059017 5.54508 -0.951057" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.941176" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 3.42705 -1.31433" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.960784" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.154508 0.112257 -0.112257 -0.154508 4.73607 -3.44095" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="0.980392" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="0.154508 -0.112257 0.112257 0.154508 5.54508 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0.5" symmetry="0" name="2_to_2" animate="1" linear="1" coefs="-0.190983 0 0 -0.190983 5.54508 -2.85317" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 " opacity="1"/>
<palette count="256" format="RGB">
FFF1E8F4E9E3E7E7DDCDD6D5BED3CEB9D0C6A9C9B1A7CAAA
9FC0937FAC8F7CB08C889C779571578F456A933E67603C62
593C5B533861443C633F3E66523A5E5C314F53294D410622
41042341214A464A495B6543668E696795706EA38773A588
85A894C29FA3D6B2B2F1C6BFFFDACAFEDDCEFEDBC7CCD7B7
B2C2A599BE957CB58C71A9846DA38977A88A8FBC9FB0CBAC
E7E1C1FEEDD3FEEBDAF1E6EEDDE4F4C4D9DAC6D3C9D0CBCF
EDC5BBF4C9C0F7CBC2FFDCC8E7E2DCCDD9CBC4D9C8BACEB2
AAC5A4A3C7AD9CC0A698BEAF8BBBA17EB9A37DA6966DA58C
69A684709979689F78559A87439C98569D956F8D9566838B
65838B5B827D66708B69708C73819B7B87979593A8BA9D9F
A89599A1838F776983464C6235465A263F55303845192E4B
1F224B281F3E2B1C3B2E1646332A47363B3F2E353F2B2E35
3A062A2F04202B041F1A0E1823082B2D193537214530385D
32435D3C525F3E677942677757617A535A774E5C77465C71
40566442525F4A67655779683276996087A68599A0C9BBB0
E1C7B8E1C7BAD8B8BBB7A9B6A3ABAE7EA7956E9F8C689B88
4B9B764F736941485B3E3F51343D4C3A3A4643423D494C41
4C63465371596A7F7A8A7489AA3675AA2F706A3C6A714872
7466876C8C7F75908978A19188B098B5BE9FD4BFBAECC6BB
FFD4CBFED6CCFCCCC2FBCDC0F5CBBFE7C5BBD3B0AEC0B6AD
A6C393B7C379B4CB9FB0BDB6BAD3D798CDD577AD8D6DA18B
74979B6885955F68876343685B3C6548436145465A39485D
46605F628A4E6D9A3F789555A6B476D7DAA1FADCD4FFE8EE
FFEEF4FFFFFFFFFFFFFFFFFFFFFFFFFFF4FCEBECFEE5E3F8
D7DFECBAC4C68EBCA06AA299477585246488385462334E57
3B515E4C6D74568774798F7874978182A07A93B17597AA73
98AE6EBECD68D1DD8BFFD9B2FFE5CEFFE8D6FFEDE3FFEEEE
FFF3F5FEF2F2FFF2EAFFEEE2FFECDEFFF0E0FFF0EBFFF1E8
FFEADDFEE4D5F6CFD0CBBEB69CB87D75A567608A64527967
4559623D4F5B51785D67935677A25B8AB486C5D396F4E0BB
FEE8D3FFEFE2FEF9F5FEFEFEFFF9FDFEF6F4F0EFFDFFECF3
</palette>
</flame>

View File

@ -1,40 +1,40 @@
<flame version="EMBER-WIN-1.0.0.7" time="0" name="tyrantwave_normal_flippeddisc" size="1920 1280" center="0 0" scale="625" rotate="0" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="30" gamma="3" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="disc linear spherical radial_blur" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="1" color="0" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" disc="1" coefs="0.4 0 0 0.4 0 0" opacity="1"/>
<xform weight="1" color="0" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" disc="1" coefs="0.4 0 0 0.4 0 0" post="-1 0 0 1 0 0" opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="0.5" spherical="0.5" radial_blur="1" radial_blur_angle="1" coefs="1 0 0 1 1 0" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="0.5" spherical="0.5" radial_blur="1" radial_blur_angle="1" coefs="1 0 0 1 -1 0" opacity="1"/>
<palette count="256" format="RGB">
2D3E584D76AE558DC05B98B45B98B45D96B36098B1688C9C
74934D6F93156086006578043F4C0015300300190A0E0F07
13120D142208243D152D5F18424436445569508BAD5291B0
5393AF5595B05595B05893B15893B15895B15895B15A9FAF
659A8072A336618114503C013D1F1D472011662511732C0E
872E04933309AA2A4BA84655A04B689791916399B1508CAE
507F933541570721540926221A282B44333B53393A504647
596A34585F2C5D600F6274065F5500582D1A862B19932F00
AA3102D03000D63500C41F0BB02601882B0A4C1006240902
1107000305040000070A0605170D0B14130E2423295E5A34
7C854696927990A0627FAC4790A94391A0438E9D40988F2A
9E8A319F862CC56018C75523BE5D33BD5B42C16B5A978B7F
908C8B639BB26AA3B76BA4B56FA6BA6CA5B967AAB372ACAE
A79EA1ACA7A4ADA8A5A0A7AD75A8BD629CB45693B0508CA8
6E6D6B873C1D8231207D27426C68675189A05B8498635E5B
873C1DA5481CC03936B14D4DC36960C56765CE5B5ECE5E53
D64F49CD5533CB5923DB621DC75E25BE5F319D954296A138
92A02F827C326D8122465F1D463308392608341B17440B00
4E0E1C832816AE3A09C24624C46859968C8A6496AD6199B2
5D96B35A95B35C95B26199B0778A98958B89A1656572756C
5F8DA55E96B15F97B26098B1639BB2629DAB9D9392A69C9D
A49E9E959A9D6AA3B6659EB2619BB1669EB768A1B492979A
9C9794A79F9CAAA1A2AFA6A7B4AEAEB5AFAF88BAD57CB4CF
70A9C46CABBD68AEB864A7B769A3B96C9EB5989292B670A6
C56064DE4C4DDE3B28CC182195082B73221F5F0A214E1F2F
542C345E47516B6C815D94B25C98B4609CB65E9EB95D9DB6
5E9AB65A9AB55A9AB55D9AB9609CB6649DB869A1B865A2B7
639FB7619FB85E9EB75999B45999B45B98B4619BB16495A6
7B8083913E52652A3C4514171D1216190B0A1B07090D080C
0D0B0E130D111A12103522245C3B426552705094A75292AE
5291B05291B05190AF4D88AA2F4982373F415124415F0A21
6E19308C2842863556994868B94C5FB1687C5E9EB7A29A98
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.7" time="0" name="tyrantwave_flippeddisc_normal" size="1920 1280" center="0 0" scale="625" rotate="0" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="30" gamma="3" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="disc linear spherical radial_blur" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="1" color="0" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" disc="1" coefs="0.4 0 0 0.4 0 0" opacity="1"/>
<xform weight="1" color="0" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" disc="1" coefs="0.4 0 0 0.4 0 0" post="-1 0 0 1 0 0" opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="0.5" spherical="0.5" radial_blur="1" radial_blur_angle="1" coefs="1 0 0 1 1 0" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="0.5" spherical="0.5" radial_blur="1" radial_blur_angle="1" coefs="1 0 0 1 -1 0" opacity="1"/>
<palette count="256" format="RGB">
2D3E584D76AE558DC05B98B45B98B45D96B36098B1688C9C
74934D6F93156086006578043F4C0015300300190A0E0F07
13120D142208243D152D5F18424436445569508BAD5291B0
5393AF5595B05595B05893B15893B15895B15895B15A9FAF
659A8072A336618114503C013D1F1D472011662511732C0E
872E04933309AA2A4BA84655A04B689791916399B1508CAE
507F933541570721540926221A282B44333B53393A504647
596A34585F2C5D600F6274065F5500582D1A862B19932F00
AA3102D03000D63500C41F0BB02601882B0A4C1006240902
1107000305040000070A0605170D0B14130E2423295E5A34
7C854696927990A0627FAC4790A94391A0438E9D40988F2A
9E8A319F862CC56018C75523BE5D33BD5B42C16B5A978B7F
908C8B639BB26AA3B76BA4B56FA6BA6CA5B967AAB372ACAE
A79EA1ACA7A4ADA8A5A0A7AD75A8BD629CB45693B0508CA8
6E6D6B873C1D8231207D27426C68675189A05B8498635E5B
873C1DA5481CC03936B14D4DC36960C56765CE5B5ECE5E53
D64F49CD5533CB5923DB621DC75E25BE5F319D954296A138
92A02F827C326D8122465F1D463308392608341B17440B00
4E0E1C832816AE3A09C24624C46859968C8A6496AD6199B2
5D96B35A95B35C95B26199B0778A98958B89A1656572756C
5F8DA55E96B15F97B26098B1639BB2629DAB9D9392A69C9D
A49E9E959A9D6AA3B6659EB2619BB1669EB768A1B492979A
9C9794A79F9CAAA1A2AFA6A7B4AEAEB5AFAF88BAD57CB4CF
70A9C46CABBD68AEB864A7B769A3B96C9EB5989292B670A6
C56064DE4C4DDE3B28CC182195082B73221F5F0A214E1F2F
542C345E47516B6C815D94B25C98B4609CB65E9EB95D9DB6
5E9AB65A9AB55A9AB55D9AB9609CB6649DB869A1B865A2B7
639FB7619FB85E9EB75999B45999B45B98B4619BB16495A6
7B8083913E52652A3C4514171D1216190B0A1B07090D080C
0D0B0E130D111A12103522245C3B426552705094A75292AE
5291B05291B05190AF4D88AA2F4982373F415124415F0A21
6E19308C2842863556994868B94C5FB1687C5E9EB7A29A98
</palette>
</flame>

View File

@ -1,82 +1,82 @@
<flame version="EMBER-WIN-1.0.0.7" time="0" name="zy0rg_six_bigcode" size="1920 1080" center="0 0" scale="1381.6" rotate="0" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="5" gamma="3.5" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.05" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="linear flatten spherical pre_crop bubble crop gaussian_blur bipolar post_crop pre_disc cylinder radial_blur lazysusan pre_gaussian_blur julian sinusoidal butterfly waves2 splits fan2 blur square" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 -1" chaos="1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 1" chaos="0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.125" symmetry="0.75" name="" animate="0" spherical="1" flatten="1" coefs="0 1 -1 0 0 0" chaos="1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.4"/>
<xform weight="0.4" color="0.4" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_crop="1" pre_crop_left="-2" pre_crop_top="-2" pre_crop_right="2" pre_crop_bottom="2" pre_crop_scatter_area="0" pre_crop_zero="0" bubble="1" coefs="0.4 0 0 0.4 0 0" post="0.5 0 0 0.5 0 -0.5" chaos="1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.4" color="0.6" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_crop="1" pre_crop_left="-2" pre_crop_top="-2" pre_crop_right="2" pre_crop_bottom="2" pre_crop_scatter_area="0" pre_crop_zero="0" bubble="1" coefs="0.4 0 0 0.4 0 0" post="0.5 0 0 0.5 0 0.5" chaos="0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.15" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 6.5 -4" chaos="0 0 0 0 0 1 1 3 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.15" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 -6.5 4" chaos="0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="0.61" var_color="1" color_speed="0.02" symmetry="0.96" name="" animate="0" crop="1" crop_left="-2" crop_top="-1000" crop_right="2" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="0.3026 -0.725116 0.725116 0.3026 -2.9557 2.3443" post="1 0 0 1 3.25 0" chaos="0 0 0 0 0 1 1 0.5 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.26" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" gaussian_blur="2.5" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0.75 0.75 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 " opacity="0"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" bipolar="6" bipolar_shift="-0.137" post_crop="1" post_crop_left="-1000" post_crop_top="-1" post_crop_right="1000" post_crop_bottom="1" post_crop_scatter_area="0" post_crop_zero="0" coefs="-0.303908 -0.589256 0.589256 -0.303908 1.42535 -0.377038" post="0 1 -1 0 2.25 -1.2" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.527065" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 1.125 0" chaos="0 0 0 0 0 1 1 1 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="0.439396" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 -1.125 0" chaos="0 0 0 0 0 1 1 1 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0.66" symmetry="-0.32" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.1" color="1" var_color="1" color_speed="0.605" symmetry="-0.21" name="" animate="1" bubble="1" coefs="2.343 2.17202 -2.17202 2.343 -5.41355 0.861266" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="1.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" lazysusan="1" lazysusan_spin="3.14159" lazysusan_space="0.1" lazysusan_twist="10000" lazysusan_x="0" lazysusan_y="0" flatten="1" coefs="0.161094 1.19961 -1.19961 0.161094 1.30544 0.575475" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" spherical="1" flatten="1" coefs="0.730819 0.524282 -0.524282 0.730819 -0.194381 0.068987" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.182" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="2" bubble="1" coefs="0.5 0 0 0.5 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.792" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="1" spherical="0.25" flatten="1" coefs="0.78 0 0 0.78 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="0.470287 -0.875127 0.889142 0.485316 -0.3 -0.619089" post="1 0 0 1 4.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 " opacity="1"/>
<xform weight="0.15" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" lazysusan="1" lazysusan_spin="0" lazysusan_space="100000" lazysusan_twist="0" lazysusan_x="0.215" lazysusan_y="0.078" post_crop="1" post_crop_left="-50000" post_crop_top="-50000" post_crop_right="50000" post_crop_bottom="50000" post_crop_scatter_area="1" post_crop_zero="0" coefs="0.86 0 0 0.86 0 0" post="1 0 0 1 -0.215 0.078" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" julian="1" julian_dist="1" julian_power="5" flatten="1" coefs="1 0 0 1 0.6 0" post="2.5 0 0 2.5 0.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="-0.65 0 0 -0.65 0.5 0" post="1 0 0 1 0.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="-0.65 0 0 -0.65 0 0" post="1 0 0 1 6.75 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.01" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="2" bubble="1" coefs="0.5 0 0 0.5 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.05" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="6" linear="-1" sinusoidal="0.7" butterfly="1.2" waves2="1" waves2_freqx="4" waves2_scalex="0.1" waves2_freqy="2" waves2_scaley="0.1" waves2_freqz="0" waves2_scalez="0" flatten="1" coefs="0.7 0 0 0.5 0 -7" post="0 3 -2 0 -2 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0.015" symmetry="0.97" name="" animate="0" julian="1" julian_dist="1" julian_power="2" flatten="1" coefs="2 0 0 2 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" bipolar="1" bipolar_shift="0" flatten="1" coefs="1 0 0 1 0 0" post="0 -1 1 0 0 0" chaos="0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.25" color="0.7" var_color="1" color_speed="0.64" symmetry="-0.28" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 -6.6 0" post="1 0 0 1 2.125 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.25" color="0.7" var_color="1" color_speed="0.64" symmetry="-0.28" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 -6.6 0" post="-1 0 0 -1 -2.125 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.05" color="0.312" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="100" splits="1" splits_x="3.25" splits_y="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="1 0 0 1 9 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 " opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="1 0 0 1 -9 0" chaos="0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.02" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" spherical="2" fan2="-1" fan2_x="0.2" fan2_y="3.14159" splits="1" splits_x="3.25" splits_y="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="0.225346" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 3.375 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.331598" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 5.625 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.336285" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 7.875 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.151749" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 10.125 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.701" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.2" var_color="1" color_speed="0.225" symmetry="0.55" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" post="1 0 0 1 0 -0.0007" chaos="0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 5 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.2" var_color="1" color_speed="0.0005" symmetry="0.999" name="" animate="0" linear="1" flatten="1" coefs="1 -8.7e-05 8.7e-05 1.001 0 0" chaos="0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 5 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.67" var_color="1" color_speed="0.01" symmetry="0.98" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.14 0 0 0.03 2.88 3.02" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.055 0 -0.085 0.07 2.88 2.97" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.14 0 0 0.03 2.88 2.92" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="0.12 0 0 0.12 -0.54 0" opacity="1"/>
<palette count="256" format="RGB">
3E05053C05053604043304042B03032B03032B03032B0303
2B03032B03032B03032B03032A03032A0303280303270303
2303032203031C02021802021802021B02021F0202200202
2203032503032903032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032D04042F0404330404360404
450C065917086E3109984814D37832E28139F08A42FF9951
F7A15BF5A65CE39C52B67E4198592C7B34196E2B1163240B
470A063704043104042C03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032A0303280303270303240303
2002021E02022002022203032403032703032A03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2A03032A03032A03032A03032A03032A03032A03032A0303
2B03032B03032B0303310404370404400F05581F076D320E
77400A8A4E0C904E1881410D75320A6625094F0D07400505
3C05053704043204043104043104042E04042B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032C03032E0404360404440B065B1F08
7840199A672FC08B48DCB065F9D77DEFC974E6BC6CC69657
A56F42975E36894C2C460E0D3B05053104042D04042B0303
2B03032B03032B03032B03033C0505531C0D6C321793512F
BA7248C78753D49B60FFC57EFFD390FFE3A2FFE8A5FFEEA7
FFEDA5FFECA3FFEE9CFFE996EFC57AE4B765DAA951D09B4A
C78F44C99141CB9340E6B459E3B45CDFB562DAAD5BD5A657
C7974FB888469966307F44214F13074105053404042F0404
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032D04043104043B05053E0505410505410505410505
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.7" time="0" name="zy0rg_six_bigcode" size="1920 1080" center="0 0" scale="1381.6" rotate="0" supersample="1" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" background="0 0 0" brightness="5" gamma="3.5" highlight_power="1" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.05" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="linear flatten spherical pre_crop bubble crop gaussian_blur bipolar post_crop pre_disc cylinder radial_blur lazysusan pre_gaussian_blur julian sinusoidal butterfly waves2 splits fan2 blur square" new_linear="1" curves="0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 -1" chaos="1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 1" chaos="0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.125" symmetry="0.75" name="" animate="0" spherical="1" flatten="1" coefs="0 1 -1 0 0 0" chaos="1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.4"/>
<xform weight="0.4" color="0.4" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_crop="1" pre_crop_left="-2" pre_crop_top="-2" pre_crop_right="2" pre_crop_bottom="2" pre_crop_scatter_area="0" pre_crop_zero="0" bubble="1" coefs="0.4 0 0 0.4 0 0" post="0.5 0 0 0.5 0 -0.5" chaos="1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.4" color="0.6" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_crop="1" pre_crop_left="-2" pre_crop_top="-2" pre_crop_right="2" pre_crop_bottom="2" pre_crop_scatter_area="0" pre_crop_zero="0" bubble="1" coefs="0.4 0 0 0.4 0 0" post="0.5 0 0 0.5 0 0.5" chaos="0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.15" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 6.5 -4" chaos="0 0 0 0 0 1 1 3 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.15" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 -6.5 4" chaos="0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="0.61" var_color="1" color_speed="0.02" symmetry="0.96" name="" animate="0" crop="1" crop_left="-2" crop_top="-1000" crop_right="2" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="0.3026 -0.725116 0.725116 0.3026 -2.9557 2.3443" post="1 0 0 1 3.25 0" chaos="0 0 0 0 0 1 1 0.5 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.26" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" gaussian_blur="2.5" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0.75 0.75 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 " opacity="0"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" bipolar="6" bipolar_shift="-0.137" post_crop="1" post_crop_left="-1000" post_crop_top="-1" post_crop_right="1000" post_crop_bottom="1" post_crop_scatter_area="0" post_crop_zero="0" coefs="-0.303908 -0.589256 0.589256 -0.303908 1.42535 -0.377038" post="0 1 -1 0 2.25 -1.2" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.527065" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 1.125 0" chaos="0 0 0 0 0 1 1 1 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="0.439396" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 -1.125 0" chaos="0 0 0 0 0 1 1 1 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0.2"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0.66" symmetry="-0.32" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.1" color="1" var_color="1" color_speed="0.605" symmetry="-0.21" name="" animate="1" bubble="1" coefs="2.343 2.17202 -2.17202 2.343 -5.41355 0.861266" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="1.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" lazysusan="1" lazysusan_spin="3.14159" lazysusan_space="0.1" lazysusan_twist="10000" lazysusan_x="0" lazysusan_y="0" flatten="1" coefs="0.161094 1.19961 -1.19961 0.161094 1.30544 0.575475" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" spherical="1" flatten="1" coefs="0.730819 0.524282 -0.524282 0.730819 -0.194381 0.068987" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.182" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="2" bubble="1" coefs="0.5 0 0 0.5 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0.792" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" linear="1" spherical="0.25" flatten="1" coefs="0.78 0 0 0.78 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="0.470287 -0.875127 0.889142 0.485316 -0.3 -0.619089" post="1 0 0 1 4.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 " opacity="1"/>
<xform weight="0.15" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" lazysusan="1" lazysusan_spin="0" lazysusan_space="100000" lazysusan_twist="0" lazysusan_x="0.215" lazysusan_y="0.078" post_crop="1" post_crop_left="-50000" post_crop_top="-50000" post_crop_right="50000" post_crop_bottom="50000" post_crop_scatter_area="1" post_crop_zero="0" coefs="0.86 0 0 0.86 0 0" post="1 0 0 1 -0.215 0.078" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" julian="1" julian_dist="1" julian_power="5" flatten="1" coefs="1 0 0 1 0.6 0" post="2.5 0 0 2.5 0.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="-0.65 0 0 -0.65 0.5 0" post="1 0 0 1 0.5 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="-0.65 0 0 -0.65 0 0" post="1 0 0 1 6.75 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.01" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="2" bubble="1" coefs="0.5 0 0 0.5 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.05" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="6" linear="-1" sinusoidal="0.7" butterfly="1.2" waves2="1" waves2_freqx="4" waves2_scalex="0.1" waves2_freqy="2" waves2_scaley="0.1" waves2_freqz="0" waves2_scalez="0" flatten="1" coefs="0.7 0 0 0.5 0 -7" post="0 3 -2 0 -2 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0.015" symmetry="0.97" name="" animate="0" julian="1" julian_dist="1" julian_power="2" flatten="1" coefs="2 0 0 2 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" bipolar="1" bipolar_shift="0" flatten="1" coefs="1 0 0 1 0 0" post="0 -1 1 0 0 0" chaos="0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.25" color="0.7" var_color="1" color_speed="0.64" symmetry="-0.28" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 -6.6 0" post="1 0 0 1 2.125 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.25" color="0.7" var_color="1" color_speed="0.64" symmetry="-0.28" name="" animate="1" linear="1" flatten="1" coefs="1 0 0 1 -6.6 0" post="-1 0 0 -1 -2.125 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.05" color="0.312" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" pre_gaussian_blur="100" splits="1" splits_x="3.25" splits_y="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.3" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="1 0 0 1 9 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 " opacity="1"/>
<xform weight="0.5" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="1 0 0 1 -9 0" chaos="0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.02" color="0.7" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" spherical="2" fan2="-1" fan2_x="0.2" fan2_y="3.14159" splits="1" splits_x="3.25" splits_y="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="0"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="0.225346" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 3.375 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.331598" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 5.625 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.336285" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 7.875 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.1" color="0.5" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_disc="1" cylinder="1" radial_blur="10" radial_blur_angle="-0.151749" post_crop="1" post_crop_left="-1" post_crop_top="-1000" post_crop_right="1" post_crop_bottom="1000" post_crop_scatter_area="0" post_crop_zero="0" coefs="0.5 0 0 1 0 0" post="0.125 0 0 1 10.125 0" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.701" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.2" var_color="1" color_speed="0.225" symmetry="0.55" name="" animate="0" crop="1" crop_left="-1" crop_top="-1000" crop_right="1" crop_bottom="1000" crop_scatter_area="0" crop_zero="0" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" post="1 0 0 1 0 -0.0007" chaos="0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 5 0 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.2" var_color="1" color_speed="0.0005" symmetry="0.999" name="" animate="0" linear="1" flatten="1" coefs="1 -8.7e-05 8.7e-05 1.001 0 0" chaos="0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 5 0 0 0 0 " opacity="1"/>
<xform weight="0.5" color="0.67" var_color="1" color_speed="0.01" symmetry="0.98" name="" animate="0" linear="1" flatten="1" coefs="1 0 0 0.999 0 0" chaos="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.14 0 0 0.03 2.88 3.02" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.055 0 -0.085 0.07 2.88 2.97" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<xform weight="0.005" color="0.09" var_color="1" color_speed="1" symmetry="-1" name="" animate="1" blur="0.2" radial_blur="0.3" radial_blur_angle="-0.2" square="1" flatten="1" coefs="1 0 0 1 0 0" post="0.14 0 0 0.03 2.88 2.92" chaos="0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" linear="1" flatten="1" coefs="1 0 0 1 0 0" post="0.12 0 0 0.12 -0.54 0" opacity="1"/>
<palette count="256" format="RGB">
3E05053C05053604043304042B03032B03032B03032B0303
2B03032B03032B03032B03032A03032A0303280303270303
2303032203031C02021802021802021B02021F0202200202
2203032503032903032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032D04042F0404330404360404
450C065917086E3109984814D37832E28139F08A42FF9951
F7A15BF5A65CE39C52B67E4198592C7B34196E2B1163240B
470A063704043104042C03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032A0303280303270303240303
2002021E02022002022203032403032703032A03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2A03032A03032A03032A03032A03032A03032A03032A0303
2B03032B03032B0303310404370404400F05581F076D320E
77400A8A4E0C904E1881410D75320A6625094F0D07400505
3C05053704043204043104043104042E04042B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032C03032E0404360404440B065B1F08
7840199A672FC08B48DCB065F9D77DEFC974E6BC6CC69657
A56F42975E36894C2C460E0D3B05053104042D04042B0303
2B03032B03032B03032B03033C0505531C0D6C321793512F
BA7248C78753D49B60FFC57EFFD390FFE3A2FFE8A5FFEEA7
FFEDA5FFECA3FFEE9CFFE996EFC57AE4B765DAA951D09B4A
C78F44C99141CB9340E6B459E3B45CDFB562DAAD5BD5A657
C7974FB888469966307F44214F13074105053404042F0404
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032B03032B03032B03032B03032B03032B03032B0303
2B03032D04043104043B05053E0505410505410505410505
</palette>
</flame>

View File

@ -1,80 +1,80 @@
# Build Guide for Linux
The following has been tested on Ubuntu 17.10 (artful).
Make sure the package lists are up-to-date:
```
sudo apt-get update
sudo apt-get upgrade
```
Install `git` and clone the repository:
```
sudo apt-get install git
git clone --depth=1 https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies.
```
sudo apt-get install g++ libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt5opengl5-dev libtbb-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt5-default qt5-qmake qtbase5-dev libopenexr22 libopenexr-dev
```
Install the OpenCL drivers and opencl support for your hardware.
For AMD get their drivers from their site, build and install the .deb package.
For Nvidia:
```
sudo apt-get install nvidia-modprobe nvidia-prime nvidia-384 nvidia-384-dev
```
Optionally you can install the Nvidia-specific `nvidia-libopencl1-384` package,
but keep in mind that this will remove the generic ones (`ocl-icd-opencl-dev`
and `ocl-icd-libopencl1`).
If you have both Qt 4 and 5 installed, select Qt 5 before compilation:
```
export QT_SELECT=qt5
```
Compile the binaries, they will be created in the `Bin/release` folder.
```
cd fractorium
qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
make
```
Or open main.pro in Qt Creator and build all.
`sudo make install` will install the files directly. `sudo make uninstall` is
also available.
You can also compile a `.deb` package to install locally. A few more tools will
be necessary:
```
sudo apt-get install bzr bzr-builddeb dh-make debhelper
```
Tell `bzr` about yourself:
```
bzr whoami "The Person <the.person@email.com>"
```
A helper script is available, use `package-linux.sh` in the project root. It
will create `~/PPA/fractorium-VERSION` as a work folder, by default it builds a
signed source package.
For local use you probably want an unsigned binary package:
```
cd fractorium
./package-linux.sh --binary-only --unsigned
```
# Build Guide for Linux
The following has been tested on Ubuntu 17.10 (artful).
Make sure the package lists are up-to-date:
```
sudo apt-get update
sudo apt-get upgrade
```
Install `git` and clone the repository:
```
sudo apt-get install git
git clone --depth=1 https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies.
```
sudo apt-get install g++ libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt5opengl5-dev libtbb-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt5-default qt5-qmake qtbase5-dev libopenexr22 libopenexr-dev
```
Install the OpenCL drivers and opencl support for your hardware.
For AMD get their drivers from their site, build and install the .deb package.
For Nvidia:
```
sudo apt-get install nvidia-modprobe nvidia-prime nvidia-384 nvidia-384-dev
```
Optionally you can install the Nvidia-specific `nvidia-libopencl1-384` package,
but keep in mind that this will remove the generic ones (`ocl-icd-opencl-dev`
and `ocl-icd-libopencl1`).
If you have both Qt 4 and 5 installed, select Qt 5 before compilation:
```
export QT_SELECT=qt5
```
Compile the binaries, they will be created in the `Bin/release` folder.
```
cd fractorium
qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
make
```
Or open main.pro in Qt Creator and build all.
`sudo make install` will install the files directly. `sudo make uninstall` is
also available.
You can also compile a `.deb` package to install locally. A few more tools will
be necessary:
```
sudo apt-get install bzr bzr-builddeb dh-make debhelper
```
Tell `bzr` about yourself:
```
bzr whoami "The Person <the.person@email.com>"
```
A helper script is available, use `package-linux.sh` in the project root. It
will create `~/PPA/fractorium-VERSION` as a work folder, by default it builds a
signed source package.
For local use you probably want an unsigned binary package:
```
cd fractorium
./package-linux.sh --binary-only --unsigned
```

View File

@ -1,270 +1,270 @@
# Build Guide For Visual Studio 2019 or Qt Creator
## Tools
### git
Install [git](https://git-scm.com/downloads).
### Visual Studio
Install [Microsoft Visual Studio 2019 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
### Qt
Install Qt for Windows 64-bit (VS 2017) 5.12.8 or later (http://www.qt.io/download/).
Add system environment variable named `QTPATH` and point it to the location of the Qt folder. On a default install, this will be something like:
`C:\Qt\5.12.8\msvc2017_64`
### Wix
To build the installer, you must have Wix installed. If you are unconcerned with it, you can skip this step and just dismiss the warning that shows when opening the solution later. It's recommended you ignore the installer since official builds are provided on this page.
### CMake
Install [CMake](https://cmake.org/download/) and be sure to check the option to add it to the system path.
## Obtaining source
### This project
Open up the Visual Studio x64 Native Tools Command Prompt.
Create a new folder in your development area named fractorium:
`mkdir fractorium`
`cd fractorium`
`git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git`
### Prerequisites
There are six prerequisite dependencies. One of them must be downloaded manually:
Download the zip file here: [libjpeg](http://www.ijg.org/).
Extract the source contents into the folder you created such that it is arranged like so:
```
[fractorium]
├─libjpeg
```
Go into the fractorium folder and run this script which will get the rest of the prerequisites from git and build them:
`cd fractorium`
`makedeps.bat`
This will download and build `glm libopenexr libpng libxml tbb zlib`. You will have a folder structure like this:
```
[fractorium]
├─glm
├─libjpeg
├─libpng
├─libxml2
├─openexr
├─tbb
└─fractorium
├─Deps
├─libjpeg.lib
├─libpng.lib
├─libxml2.lib
├─libxml2.dll
├─tbb.dll
├─tbb.lib
├─zlib.lib
├─Half-2_3.lib
├─Iex-2_3.lib
├─IexMath-2_3.lib
├─IlmImf-2_3.lib
├─IlmImfUtil-2_3.lib
├─IlmThread-2_3.lib
├─Imath-2_3.lib
├─Half-2_3.dll
├─Iex-2_3.dll
├─IexMath-2_3.dll
├─IlmImf-2_3.dll
├─IlmImfUtil-2_3.dll
├─IlmThread-2_3.dll
├─Imath-2_3.dll
```
## Building with Qt Creator or Visual Studio
### Begin build with Qt Creator
Open the Qt Project `fractorium/main.pro` using Qt Creator with the default config of *Desktop Qt [version] MSVC2019 64bit*.
Make sure *Shadow build* in *Edit build configuration* for both *Debug* and *Release* is unchecked.
Switch to the *Release* configuration.
Under *Build Steps*, add an additional argument of `install` to the `make` command to force all dependencies to be copied to the output folder. The final make command should look like:
`jom.exe install in /path/to/fractorium`
Ensure all projects are in the *Release* configuration and build main.pro.
The outputs will be placed in `fractorium/Bin/release` several minutes later if no error occurs.
### Begin build with Visual Studio
#### Visual Studio Qt Addon
Install the [Visual Studio Qt Addon](http://www.qt.io/download/).
Run Visual Studio and verify there is a menu item named *Qt5*. Click on it and click *Qt Options*.
Add a new Qt version to the list with the exact name of "Qt5", and set its path to the same as `$QTPATH`, which will be something like:
`C:\Qt\5.12.8\msvc2017_64`
The name "Qt5" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
Set the default version to the newly created Qt version and click *Ok*.
Open the file Fractorium.sln under Builds/MSVC/2019
Set the configuration to release, and build all.
### Outputs
The outputs will be the same whether Visual Studio or Qt Creator was used, however their locations will be different.
Qt Creator will place its outputs in:
`fractorium/Bin/Release`
and Visual Studio will place its outputs in:
`fractorium/Bin/x64/Release`
The output contents will be:
```
Amphibole_Supergroup.ugr
Apatite_Supergroup.ugr
boxtail_pack_02.gradient
boxtail_pack_03_triangle.gradient
boxtail_pack_04_mineshack.gradient
dark_windows.qss
lightdark.qss
ember.dll
ember.exp
ember.lib
emberanimate.exe
embercl.dll
embercl.exp
embercl.lib
embergenome.exe
emberrender.exe
fardareismai_pack_01_variety_number_128.gradient
fardareismai_pack_02_b_sides.gradient
fardareismai_pack_03_old_and_new.gradient
fardareismai_pack_04_hoard.gradient
Feldspar_Group.ugr
flam3-palettes.xml
fractaldesire_pack_01.gradient
fractorium.exe
half-2_3.dll
iex-2_3.dll
iexmath-2_3.dll
ilmimf-2_3.dll
ilmthread-2_3.dll
imath-2_3.dll
libxml2.dll
Mica_Group.ugr
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
Quartz_Varieties.ugr
rce_ordinary_pack_01_colornation.gradient
tatasz_pack_01.gradient
tatasz_pack_02_colder.gradient
tatasz_pack_02_dark.gradient
tatasz_pack_02_warmer.gradient
tatasz_pack_03.gradient
tbb.dll
imageformats\qjpeg.dll
platforms\qwindows.dll
```
Double click fractorium.exe to run it, and use the command line to run the others.
To run on a computer without Visual Studio 2017, these files also need to be in the folder:
```
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\msvcp140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140_1.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vccorlib140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\concrt140.dll
```
or you can install [Visual C++ Redistributable Packages for Visual Studio 2019 (64 bit)](https://www.visualstudio.com/downloads/)
## Final file structure for distribution
```
[YOUR FOLDER]
├─ Amphibole_Supergroup.ugr
├─ Apatite_Supergroup.ugr
├─ boxtail_pack_02.gradient
├─ boxtail_pack_03_triangle.gradient
├─ boxtail_pack_04_mineshack.gradient
├─ dark_windows.qss
├─ lightdark.qss
├─ ember.dll
├─ emberanimate.exe
├─ embercl.dll
├─ embergenome.exe
├─ emberrender.exe
├─ fardareismai_pack_01_variety_number_128.gradient
├─ fardareismai_pack_02_b_sides.gradient
├─ fardareismai_pack_03_old_and_new.gradient
├─ fardareismai_pack_04_hoard.gradient
├─ Feldspar_Group.ugr
├─ flam3-palettes.xml
├─ fractaldesire_pack_01.gradient
├─ fractorium.exe
├─ half-2_3.dll
├─ iex-2_3.dll
├─ iexmath-2_3.dll
├─ ilmimf-2_3.dll
├─ ilmthread-2_3.dll
├─ imath-2_3.dll
├─ libxml2.dll
├─ Mica_Group.ugr
├─ Qt5Core.dll
├─ Qt5Gui.dll
├─ Qt5Widgets.dll
├─ Quartz_Varieties.ugr
├─ rce_ordinary_pack_01_colornation.gradient
├─ tatasz_pack_01.gradient
├─ tatasz_pack_02_colder.gradient
├─ tatasz_pack_02_dark.gradient
├─ tatasz_pack_02_warmer.gradient
├─ tatasz_pack_03.gradient
├─ tbb.dll
├─ msvcp140.dll (optional)
├─ vcruntime140.dll (optional)
├─ vcruntime140_1.dll (optional)
├─ vccorlib140.dll (optional)
├─ concrt140.dll (optional)
└─imageformats
├─qjpeg.dll
└─platforms
├─qwindows.dll
```
# Build Guide For Visual Studio 2019 or Qt Creator
## Tools
### git
Install [git](https://git-scm.com/downloads).
### Visual Studio
Install [Microsoft Visual Studio 2019 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
### Qt
Install Qt for Windows 64-bit (VS 2017) 5.12.8 or later (http://www.qt.io/download/).
Add system environment variable named `QTPATH` and point it to the location of the Qt folder. On a default install, this will be something like:
`C:\Qt\5.12.8\msvc2017_64`
### Wix
To build the installer, you must have Wix installed. If you are unconcerned with it, you can skip this step and just dismiss the warning that shows when opening the solution later. It's recommended you ignore the installer since official builds are provided on this page.
### CMake
Install [CMake](https://cmake.org/download/) and be sure to check the option to add it to the system path.
## Obtaining source
### This project
Open up the Visual Studio x64 Native Tools Command Prompt.
Create a new folder in your development area named fractorium:
`mkdir fractorium`
`cd fractorium`
`git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git`
### Prerequisites
There are six prerequisite dependencies. One of them must be downloaded manually:
Download the zip file here: [libjpeg](http://www.ijg.org/).
Extract the source contents into the folder you created such that it is arranged like so:
```
[fractorium]
├─libjpeg
```
Go into the fractorium folder and run this script which will get the rest of the prerequisites from git and build them:
`cd fractorium`
`makedeps.bat`
This will download and build `glm libopenexr libpng libxml tbb zlib`. You will have a folder structure like this:
```
[fractorium]
├─glm
├─libjpeg
├─libpng
├─libxml2
├─openexr
├─tbb
└─fractorium
├─Deps
├─libjpeg.lib
├─libpng.lib
├─libxml2.lib
├─libxml2.dll
├─tbb.dll
├─tbb.lib
├─zlib.lib
├─Half-2_3.lib
├─Iex-2_3.lib
├─IexMath-2_3.lib
├─IlmImf-2_3.lib
├─IlmImfUtil-2_3.lib
├─IlmThread-2_3.lib
├─Imath-2_3.lib
├─Half-2_3.dll
├─Iex-2_3.dll
├─IexMath-2_3.dll
├─IlmImf-2_3.dll
├─IlmImfUtil-2_3.dll
├─IlmThread-2_3.dll
├─Imath-2_3.dll
```
## Building with Qt Creator or Visual Studio
### Begin build with Qt Creator
Open the Qt Project `fractorium/main.pro` using Qt Creator with the default config of *Desktop Qt [version] MSVC2019 64bit*.
Make sure *Shadow build* in *Edit build configuration* for both *Debug* and *Release* is unchecked.
Switch to the *Release* configuration.
Under *Build Steps*, add an additional argument of `install` to the `make` command to force all dependencies to be copied to the output folder. The final make command should look like:
`jom.exe install in /path/to/fractorium`
Ensure all projects are in the *Release* configuration and build main.pro.
The outputs will be placed in `fractorium/Bin/release` several minutes later if no error occurs.
### Begin build with Visual Studio
#### Visual Studio Qt Addon
Install the [Visual Studio Qt Addon](http://www.qt.io/download/).
Run Visual Studio and verify there is a menu item named *Qt5*. Click on it and click *Qt Options*.
Add a new Qt version to the list with the exact name of "Qt5", and set its path to the same as `$QTPATH`, which will be something like:
`C:\Qt\5.12.8\msvc2017_64`
The name "Qt5" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
Set the default version to the newly created Qt version and click *Ok*.
Open the file Fractorium.sln under Builds/MSVC/2019
Set the configuration to release, and build all.
### Outputs
The outputs will be the same whether Visual Studio or Qt Creator was used, however their locations will be different.
Qt Creator will place its outputs in:
`fractorium/Bin/Release`
and Visual Studio will place its outputs in:
`fractorium/Bin/x64/Release`
The output contents will be:
```
Amphibole_Supergroup.ugr
Apatite_Supergroup.ugr
boxtail_pack_02.gradient
boxtail_pack_03_triangle.gradient
boxtail_pack_04_mineshack.gradient
dark_windows.qss
lightdark.qss
ember.dll
ember.exp
ember.lib
emberanimate.exe
embercl.dll
embercl.exp
embercl.lib
embergenome.exe
emberrender.exe
fardareismai_pack_01_variety_number_128.gradient
fardareismai_pack_02_b_sides.gradient
fardareismai_pack_03_old_and_new.gradient
fardareismai_pack_04_hoard.gradient
Feldspar_Group.ugr
flam3-palettes.xml
fractaldesire_pack_01.gradient
fractorium.exe
half-2_3.dll
iex-2_3.dll
iexmath-2_3.dll
ilmimf-2_3.dll
ilmthread-2_3.dll
imath-2_3.dll
libxml2.dll
Mica_Group.ugr
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
Quartz_Varieties.ugr
rce_ordinary_pack_01_colornation.gradient
tatasz_pack_01.gradient
tatasz_pack_02_colder.gradient
tatasz_pack_02_dark.gradient
tatasz_pack_02_warmer.gradient
tatasz_pack_03.gradient
tbb.dll
imageformats\qjpeg.dll
platforms\qwindows.dll
```
Double click fractorium.exe to run it, and use the command line to run the others.
To run on a computer without Visual Studio 2017, these files also need to be in the folder:
```
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\msvcp140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140_1.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vccorlib140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\concrt140.dll
```
or you can install [Visual C++ Redistributable Packages for Visual Studio 2019 (64 bit)](https://www.visualstudio.com/downloads/)
## Final file structure for distribution
```
[YOUR FOLDER]
├─ Amphibole_Supergroup.ugr
├─ Apatite_Supergroup.ugr
├─ boxtail_pack_02.gradient
├─ boxtail_pack_03_triangle.gradient
├─ boxtail_pack_04_mineshack.gradient
├─ dark_windows.qss
├─ lightdark.qss
├─ ember.dll
├─ emberanimate.exe
├─ embercl.dll
├─ embergenome.exe
├─ emberrender.exe
├─ fardareismai_pack_01_variety_number_128.gradient
├─ fardareismai_pack_02_b_sides.gradient
├─ fardareismai_pack_03_old_and_new.gradient
├─ fardareismai_pack_04_hoard.gradient
├─ Feldspar_Group.ugr
├─ flam3-palettes.xml
├─ fractaldesire_pack_01.gradient
├─ fractorium.exe
├─ half-2_3.dll
├─ iex-2_3.dll
├─ iexmath-2_3.dll
├─ ilmimf-2_3.dll
├─ ilmthread-2_3.dll
├─ imath-2_3.dll
├─ libxml2.dll
├─ Mica_Group.ugr
├─ Qt5Core.dll
├─ Qt5Gui.dll
├─ Qt5Widgets.dll
├─ Quartz_Varieties.ugr
├─ rce_ordinary_pack_01_colornation.gradient
├─ tatasz_pack_01.gradient
├─ tatasz_pack_02_colder.gradient
├─ tatasz_pack_02_dark.gradient
├─ tatasz_pack_02_warmer.gradient
├─ tatasz_pack_03.gradient
├─ tbb.dll
├─ msvcp140.dll (optional)
├─ vcruntime140.dll (optional)
├─ vcruntime140_1.dll (optional)
├─ vccorlib140.dll (optional)
├─ concrt140.dll (optional)
└─imageformats
├─qjpeg.dll
└─platforms
├─qwindows.dll
```

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,12 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
GenericName=Fractal flame editor
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=/usr/share/fractorium/Fractorium.png
Terminal=false
Categories=Graphics;
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
GenericName=Fractal flame editor
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=/usr/share/fractorium/Fractorium.png
Terminal=false
Categories=Graphics;
MimeType=

View File

@ -1,49 +1,49 @@
%define _topdir %(pwd)
%define buildroot %{_topdir}/BUILDROOT
Name: Fractorium
Version: 22.21.4.2
Release: 1
Summary: A fractal flame editor with GPU support
Group: Graphics
BuildArch: x86_64
License: GPL
URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git
BuildRoot: %{buildroot}
%description
Fractorium
A fractal flame editor with GPU support.
http://fractorium.com/
The project is maintained on Bitbucket:
https://bitbucket.org/mfeemster/fractorium
News and updates at the above or on Matt Feemster's DeviantArt page:
https://www.deviantart.com/mfeemster
%files
%attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage"
/usr/bin/emberanimate
/usr/bin/embergenome
/usr/bin/emberrender
/usr/bin/fractorium
%attr(0644, root, root) "/usr/share/applications/fractorium.desktop"
%attr(0644, root, root) "/usr/share/fractorium/fractorium.png"
#bench files
%attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1"
%attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame"
%changelog
%define _topdir %(pwd)
%define buildroot %{_topdir}/BUILDROOT
Name: Fractorium
Version: 22.21.4.2
Release: 1
Summary: A fractal flame editor with GPU support
Group: Graphics
BuildArch: x86_64
License: GPL
URL: https://mfeemster@bitbucket.org/mfeemster/fractorium.git
BuildRoot: %{buildroot}
%description
Fractorium
A fractal flame editor with GPU support.
http://fractorium.com/
The project is maintained on Bitbucket:
https://bitbucket.org/mfeemster/fractorium
News and updates at the above or on Matt Feemster's DeviantArt page:
https://www.deviantart.com/mfeemster
%files
%attr(0755, root, root) "/usr/bin/Fractorium-x86_64.AppImage"
/usr/bin/emberanimate
/usr/bin/embergenome
/usr/bin/emberrender
/usr/bin/fractorium
%attr(0644, root, root) "/usr/share/applications/fractorium.desktop"
%attr(0644, root, root) "/usr/share/fractorium/fractorium.png"
#bench files
%attr(0644, root, root) "/usr/share/fractorium/bench/EmberBench.ps1"
%attr(0644, root, root) "/usr/share/fractorium/bench/golubaja_rippingfrominside_complexcode.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/mfeemster_basicmemory.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tatasz_springcrown_manysimplexforms.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/tyrantwave_flippeddisc_normal.flame"
%attr(0644, root, root) "/usr/share/fractorium/bench/zy0rg_six_bigcomplexcode.flame"
%changelog

View File

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>Fractorium.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleName</key>
<string>Fractorium</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>fractorium</string>
<key>CFBundleIdentifier</key>
<string>com.fractorium.fractorium</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>Fractorium.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleName</key>
<string>Fractorium</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>fractorium</string>
<key>CFBundleIdentifier</key>
<string>com.fractorium.fractorium</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
</dict>
</plist>

View File

@ -1,315 +1,315 @@
# Linux Release
These are instructions for publishing a Linux deb package. It can be built locally or the PPA repository can build it. The latter is preferable.
## Summary
Starting with a fresh clone from bitbucket.org. It will not work unless it's totally fresh:
```
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
$ cd fractorium
$ qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
```
### Building a `.deb` locally
Update `debian/changelog` with a new log message. Update version number. Use the time from `date -R`.
Build:
```
$ ./package-linux.sh --binary-only --unsigned
```
Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`.
When the build finished, find the `.deb` in `~/PPA/fractorium-VERSION`.
### Publishing to Launchpad PPA
Remember we are not building a `.deb` here, Launchpad will do that. We are just
uploading a signed source tarball.
Make sure `debian/changelog` was updated.
Build:
```
$ ./package-linux.sh
```
Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`.
It asks for your GPG key passphrase to sign the source tarball.
Now upload the source tarball to Launchpad:
```
$ cd ~/PPA/fractorium-VERSION/
$ dput ppa:fractorium/ppa fractorium_VERSION-0ubuntu1_source.changes
```
An email will arrive to say if the package was accepted or rejected.
Wait for the autobuild to complete, and when the package is published, copy the
link to the `.deb` from "Package Details".
### Building an AppImage `.deb` and `.rpm` locally
The deb used in the PPA is different than the one downloaded from the website.
The latter is an encapsulation of an AppImage file which makes installation much easier and more likely to succeed due to the library dependencies being contained within.
Because of how AppImage works, the build cannot be done on a shared folder from within a VM that points back to the host OSs file system (usually in /mnt/hgfs).
So be sure to checkout the source into a location that exists directly in the VM if you are using one.
To build the AppImage after successfully building using the make after qmake has ben run, do the following:
Ensure you these have two files in the folder up one level from the fractorium folder:
`linuxdeployqt-6-x86_64.AppImage`
`appimagetool-x86_64.AppImage`
Which can be downloaded from:
https://github.com/probonopd/linuxdeployqt/releases
https://appimage.github.io/appimagetool/
Make them executable by running this command in the folder they reside in:
`chmod +x ./*.AppImage`
Once those are installed, run these commands from the root of the fractorium folder:
`make`
`cd archive`
`./build_linux.sh`
In fractorium/Bin the output is contained in the following file:
`Fractorium-x.y.z.w-.x86_64.deb`
Alternatively, select the `.rpm` file for Red Hat.
These will contain an AppImage file inside of them. Just copy the file to the machine you want to install on and double click it. Follow the installer instructions.
## Narrative
Test that the package creator script:
`package-linux.sh` with no arguments builds a signed source for the Launchpad PPA.
Instead, now we want an unsigned binary `.deb`:
```
$ ./package-linux.sh --binary-only --unsigned
```
```
Error: Different version numbers were found. Please update the correct file,
the version numbers should agree up to the digits in:
a.b.c.d
w.x.y.z
./debian/changelog : a.b.c.d
./Source/Ember/EmberDefines.h : w.x.y.z
```
Change the version number in `debian/changelog` to match the one in `EmberDefines.h`. Next, get the time in the correct format and add it to a new entry in the changelog:
```
$ date -R
Sat, 18 Jun 2016 13:12:15 +0100
```
Add a new log message at the top of `debian/changelog`, copying the last message
and changing the version number and time.
```
fractorium (w.x.y.z-0ubuntu1) xenial; urgency=low
* release w.x.y.z
-- Matt Feemster <matt.feemster@gmail.com> Sat, 18 Jun 2016 13:12:15 +0100
```
Now try again:
```
$ ./package-linux.sh --binary-only --unsigned
```
You will be prompted with a question about the type of build:
```
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n]
```
Type `s` for single binary, `Enter`.
It displays a confirmation message, `Enter`.
The build starts. It copied the files which are not ignored in `.gitignore` out
to `~/PPA/fractorium-VERSION/`, and built it there.
Verify the build finished:
```
$ cd ~/PPA/fractorium-w.x.y.z
$ ls -lh
total 7.7M
drwxrwxr-x 2 user user 4.0K Jun 18 13:31 build-area
drwxrwxr-x 8 user user 4.0K Jun 18 13:19 fractorium
-rw------- 1 user user 780 Jun 18 13:31 fractorium_w.x.y.z-0ubuntu1_amd64.changes
-rw------- 1 user user 3.5M Jun 18 13:31 fractorium_w.x.y.z-0ubuntu1_amd64.deb
-rw-rw-r-- 1 user user 2.1M Jun 18 13:18 fractorium_w.x.y.z.orig.tar.gz
-rw-rw-r-- 1 user user 2.1M Jun 18 13:18 fractorium-w.x.y.z.tar.gz
```
This `.deb` is ready to use.
(aside)
You could upload this `.deb` to the website if you don't want to bother with the
Launchpad PPA. The advantages of the PPA are
- Testing the package and build procedure
- Users will automatically get the updated version when they run their regular upgrades
People prefer using the PPA to install and remain up to date like so:
```
sudo apt-add-repository ppa:fractorium/ppa
sudo apt-get update
sudo apt-get install fractorium
```
(aside end)
Installing the `.deb`:
```
sudo dpkg -i fractorium_w.x.y.z-0ubuntu1_amd64.deb
```
Verify fractorium loads with its menu icon, and the About page has the updated
version number. Run a few random flames, drag some xforms around, and test GPU support if you have it.
Upload the source to the Launchpad PPA for the auto-build.
In the original fractorium source folder:
```
$ ./package-linux.sh
PPA work folder already exists: /home/yume/PPA/fractorium-w.x.y.z
Move this folder aside or remove it.
```
It expects to be able to create a clean folder with that name and the earlier files aren't needed to remove it:
```
$ rm -r ~/PPA/fractorium-1.0.0.0
```
Try again:
```
$ ./package-linux.sh
```
Press `s` at the type of package question.
This is quick, it only creates a source tarball to upload.
Before finishing, it asks for your GPG key passphrase to sign the source tarball.
Upload it to Launchpad:
```
$ cd ~/PPA/fractorium-w.x.y.z/
$ dput ppa:fractorium/ppa fractorium_w.x.y.z-0ubuntu1_source.changes
```
It verifies your signature and says `Uploading to ppa (via ftp to ppa.launchpad.net)`.
Upload finished, now open your email and wait for a message from Launchpad. It
arrives, saying the package was accepted.
```
[~fractorium/ubuntu/ppa/xenial] fractorium w.x.y.z-0ubuntu1 (Accepted)
```
Open https://launchpad.net/~fractorium/+archive/ubuntu/ppa from the email and check that the build started:
```
[BUILDING] amd64 build of fractorium w.x.y.z-0ubuntu1 in ubuntu xenial RELEASE
Build started 2 minutes ago on lgw01-09
```
This will take several minutes.
If the package had been rejected, or if the autobuild now fails, then fix the build on your machine. When you want to try again, add a new
message to the top of `debian/changelog`, with a modified version number and
time. For these minor changes it is enough to append a letter to the version
number, such as `fractorium 1.0.0.0a`. Then create a tarball again with
`package-linux.sh`, and upload to Launchpad with `dput`.
Update the project links and description in
`debian/control`. Bump the version number to `fractorium 1.0.0.0a` and update the time to `date -R`.
Publish update:
```
$ ./package-linux.sh
$ cd ~/PPA/fractorium-w.x.y.za
$ dput ppa:fractorium/ppa fractorium_w.x.y.za-0ubuntu1_source.changes
```
Email says package accepted. Building has started. Finished:
```
Successfully built on lgw01-33
Started 23 minutes ago
Finished 1 minute ago (took 22 minutes, 6.6 seconds)
```
But also:
```
Binary packages awaiting publication:
fractorium-w.x.y.za-0ubuntu1
```
It usually takes a bit more time until the `.deb` is published in the PPA repository.
Commit the changes:
```
$ git checkout -b linux-w.x.y.za
$ git add -A .
$ git commit -m "linux w.x.y.za"
```
After a little while the package is published now, so go to:
- https://launchpad.net/~fractorium/+archive/ubuntu/ppa
- Select "Package Details"
- Open the dropdown arrow at the package listing, see "Publishing Details"
- Under "Package Files", copy the link to the `.deb`
https://launchpad.net/~fractorium/+archive/ubuntu/ppa/+files/fractorium_w.x.y.za-0ubuntu1_amd64.deb
Update the README.md link to this.
All done. Commit, push, send Pull Request.
# Linux Release
These are instructions for publishing a Linux deb package. It can be built locally or the PPA repository can build it. The latter is preferable.
## Summary
Starting with a fresh clone from bitbucket.org. It will not work unless it's totally fresh:
```
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
$ cd fractorium
$ qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
```
### Building a `.deb` locally
Update `debian/changelog` with a new log message. Update version number. Use the time from `date -R`.
Build:
```
$ ./package-linux.sh --binary-only --unsigned
```
Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`.
When the build finished, find the `.deb` in `~/PPA/fractorium-VERSION`.
### Publishing to Launchpad PPA
Remember we are not building a `.deb` here, Launchpad will do that. We are just
uploading a signed source tarball.
Make sure `debian/changelog` was updated.
Build:
```
$ ./package-linux.sh
```
Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`.
It asks for your GPG key passphrase to sign the source tarball.
Now upload the source tarball to Launchpad:
```
$ cd ~/PPA/fractorium-VERSION/
$ dput ppa:fractorium/ppa fractorium_VERSION-0ubuntu1_source.changes
```
An email will arrive to say if the package was accepted or rejected.
Wait for the autobuild to complete, and when the package is published, copy the
link to the `.deb` from "Package Details".
### Building an AppImage `.deb` and `.rpm` locally
The deb used in the PPA is different than the one downloaded from the website.
The latter is an encapsulation of an AppImage file which makes installation much easier and more likely to succeed due to the library dependencies being contained within.
Because of how AppImage works, the build cannot be done on a shared folder from within a VM that points back to the host OSs file system (usually in /mnt/hgfs).
So be sure to checkout the source into a location that exists directly in the VM if you are using one.
To build the AppImage after successfully building using the make after qmake has ben run, do the following:
Ensure you these have two files in the folder up one level from the fractorium folder:
`linuxdeployqt-6-x86_64.AppImage`
`appimagetool-x86_64.AppImage`
Which can be downloaded from:
https://github.com/probonopd/linuxdeployqt/releases
https://appimage.github.io/appimagetool/
Make them executable by running this command in the folder they reside in:
`chmod +x ./*.AppImage`
Once those are installed, run these commands from the root of the fractorium folder:
`make`
`cd archive`
`./build_linux.sh`
In fractorium/Bin the output is contained in the following file:
`Fractorium-x.y.z.w-.x86_64.deb`
Alternatively, select the `.rpm` file for Red Hat.
These will contain an AppImage file inside of them. Just copy the file to the machine you want to install on and double click it. Follow the installer instructions.
## Narrative
Test that the package creator script:
`package-linux.sh` with no arguments builds a signed source for the Launchpad PPA.
Instead, now we want an unsigned binary `.deb`:
```
$ ./package-linux.sh --binary-only --unsigned
```
```
Error: Different version numbers were found. Please update the correct file,
the version numbers should agree up to the digits in:
a.b.c.d
w.x.y.z
./debian/changelog : a.b.c.d
./Source/Ember/EmberDefines.h : w.x.y.z
```
Change the version number in `debian/changelog` to match the one in `EmberDefines.h`. Next, get the time in the correct format and add it to a new entry in the changelog:
```
$ date -R
Sat, 18 Jun 2016 13:12:15 +0100
```
Add a new log message at the top of `debian/changelog`, copying the last message
and changing the version number and time.
```
fractorium (w.x.y.z-0ubuntu1) xenial; urgency=low
* release w.x.y.z
-- Matt Feemster <matt.feemster@gmail.com> Sat, 18 Jun 2016 13:12:15 +0100
```
Now try again:
```
$ ./package-linux.sh --binary-only --unsigned
```
You will be prompted with a question about the type of build:
```
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n]
```
Type `s` for single binary, `Enter`.
It displays a confirmation message, `Enter`.
The build starts. It copied the files which are not ignored in `.gitignore` out
to `~/PPA/fractorium-VERSION/`, and built it there.
Verify the build finished:
```
$ cd ~/PPA/fractorium-w.x.y.z
$ ls -lh
total 7.7M
drwxrwxr-x 2 user user 4.0K Jun 18 13:31 build-area
drwxrwxr-x 8 user user 4.0K Jun 18 13:19 fractorium
-rw------- 1 user user 780 Jun 18 13:31 fractorium_w.x.y.z-0ubuntu1_amd64.changes
-rw------- 1 user user 3.5M Jun 18 13:31 fractorium_w.x.y.z-0ubuntu1_amd64.deb
-rw-rw-r-- 1 user user 2.1M Jun 18 13:18 fractorium_w.x.y.z.orig.tar.gz
-rw-rw-r-- 1 user user 2.1M Jun 18 13:18 fractorium-w.x.y.z.tar.gz
```
This `.deb` is ready to use.
(aside)
You could upload this `.deb` to the website if you don't want to bother with the
Launchpad PPA. The advantages of the PPA are
- Testing the package and build procedure
- Users will automatically get the updated version when they run their regular upgrades
People prefer using the PPA to install and remain up to date like so:
```
sudo apt-add-repository ppa:fractorium/ppa
sudo apt-get update
sudo apt-get install fractorium
```
(aside end)
Installing the `.deb`:
```
sudo dpkg -i fractorium_w.x.y.z-0ubuntu1_amd64.deb
```
Verify fractorium loads with its menu icon, and the About page has the updated
version number. Run a few random flames, drag some xforms around, and test GPU support if you have it.
Upload the source to the Launchpad PPA for the auto-build.
In the original fractorium source folder:
```
$ ./package-linux.sh
PPA work folder already exists: /home/yume/PPA/fractorium-w.x.y.z
Move this folder aside or remove it.
```
It expects to be able to create a clean folder with that name and the earlier files aren't needed to remove it:
```
$ rm -r ~/PPA/fractorium-1.0.0.0
```
Try again:
```
$ ./package-linux.sh
```
Press `s` at the type of package question.
This is quick, it only creates a source tarball to upload.
Before finishing, it asks for your GPG key passphrase to sign the source tarball.
Upload it to Launchpad:
```
$ cd ~/PPA/fractorium-w.x.y.z/
$ dput ppa:fractorium/ppa fractorium_w.x.y.z-0ubuntu1_source.changes
```
It verifies your signature and says `Uploading to ppa (via ftp to ppa.launchpad.net)`.
Upload finished, now open your email and wait for a message from Launchpad. It
arrives, saying the package was accepted.
```
[~fractorium/ubuntu/ppa/xenial] fractorium w.x.y.z-0ubuntu1 (Accepted)
```
Open https://launchpad.net/~fractorium/+archive/ubuntu/ppa from the email and check that the build started:
```
[BUILDING] amd64 build of fractorium w.x.y.z-0ubuntu1 in ubuntu xenial RELEASE
Build started 2 minutes ago on lgw01-09
```
This will take several minutes.
If the package had been rejected, or if the autobuild now fails, then fix the build on your machine. When you want to try again, add a new
message to the top of `debian/changelog`, with a modified version number and
time. For these minor changes it is enough to append a letter to the version
number, such as `fractorium 1.0.0.0a`. Then create a tarball again with
`package-linux.sh`, and upload to Launchpad with `dput`.
Update the project links and description in
`debian/control`. Bump the version number to `fractorium 1.0.0.0a` and update the time to `date -R`.
Publish update:
```
$ ./package-linux.sh
$ cd ~/PPA/fractorium-w.x.y.za
$ dput ppa:fractorium/ppa fractorium_w.x.y.za-0ubuntu1_source.changes
```
Email says package accepted. Building has started. Finished:
```
Successfully built on lgw01-33
Started 23 minutes ago
Finished 1 minute ago (took 22 minutes, 6.6 seconds)
```
But also:
```
Binary packages awaiting publication:
fractorium-w.x.y.za-0ubuntu1
```
It usually takes a bit more time until the `.deb` is published in the PPA repository.
Commit the changes:
```
$ git checkout -b linux-w.x.y.za
$ git add -A .
$ git commit -m "linux w.x.y.za"
```
After a little while the package is published now, so go to:
- https://launchpad.net/~fractorium/+archive/ubuntu/ppa
- Select "Package Details"
- Open the dropdown arrow at the package listing, see "Publishing Details"
- Under "Package Files", copy the link to the `.deb`
https://launchpad.net/~fractorium/+archive/ubuntu/ppa/+files/fractorium_w.x.y.za-0ubuntu1_amd64.deb
Update the README.md link to this.
All done. Commit, push, send Pull Request.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,27 @@
Source: Fractorium
Section: graphics
Priority: optional
Maintainer: Matt Feemster <matt.feemster@gmail.com>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.5
Homepage: http://fractorium.com/
Vcs-Git: https://bitbucket.org/mfeemster/fractorium
Vcs-Browser: https://bitbucket.org/mfeemster/fractorium
Package: Fractorium
Version: 22.21.4.2
Architecture: amd64
Description: A fractal flame editor with GPU support
Fractorium
.
A fractal flame editor with GPU support.
.
http://fractorium.com/
.
The project is maintained on Bitbucket:
.
https://bitbucket.org/mfeemster/fractorium
.
News and updates at the above or on Matt Feemster's DeviantArt page:
.
https://www.deviantart.com/mfeemster
Source: Fractorium
Section: graphics
Priority: optional
Maintainer: Matt Feemster <matt.feemster@gmail.com>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.5
Homepage: http://fractorium.com/
Vcs-Git: https://bitbucket.org/mfeemster/fractorium
Vcs-Browser: https://bitbucket.org/mfeemster/fractorium
Package: Fractorium
Version: 22.21.4.2
Architecture: amd64
Description: A fractal flame editor with GPU support
Fractorium
.
A fractal flame editor with GPU support.
.
http://fractorium.com/
.
The project is maintained on Bitbucket:
.
https://bitbucket.org/mfeemster/fractorium
.
News and updates at the above or on Matt Feemster's DeviantArt page:
.
https://www.deviantart.com/mfeemster

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,289 +1,289 @@
<flames>
<flame version="EMBER-WIN-1.0.0.19" time="0" name="Equilateral_Sierpinski_triangle_by_b33rheart" size="1024 1024" center="0.500379 -0.359943" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0.25 -0.433012" opacity="1"/>
<palette count="256" format="RGB">
5136475145454C433E503E3E4D3C34422D2A3E1F24442D1B
654E2E7A5948907564998C83B49C90B8A793BBAA96B4A69D
AEA9A6ACA6A897A0A7A39A95A4A097A8A2A4B7B7B7C5C4C9
D7D8DCE5E7E2D8DCDBCAD0CEC0B6B4BEB1A1C5A18BCBAA8B
CEB889C7B5A7DAD7C6EDDECBD9D5D6D3D3D3BFBFBFABB4BB
99A2A991949D7F8B9B768C998A898E92828C828A977D868D
827680886E6D9371588E6458996341B15C37B55F50B47468
BA9583C0AE9ACAC3BBD6CEC1DAB09AD39274B58763B68370
A2917D9B9693AAA9A7AEACADBBB5B5CEC8CADAD7CED2D0C4
CBCAC6CAC5C2B0B0B0BDA9AAB2A499A59C95978F84948274
897260876A5A7F67677A67636C685F6B61556D585D615257
62484B6D463F7648397A3D1E793B226C151E683F2D674D3E
644C4A655A625C5A655664675065785F7189697C7A717A81
807E817B7C76867E699E7B67C57D67CC7353C3645EC56243
B04F3CA44C369D4434983432724643664945644B4468484B
7052526E55517B6B5C887B6B9B8B7EB09E7AB9A37CCFB988
DAB28ECEA796BAA087AA9F8D8F8C878D84878E79828F7E77
817D7E838287937D7FA47E71B071609D695C8A5F4E754F42
6638425D4038442C2C421D25501A0E4D291D4F38325D4948
5F5259574E475B4F3F50444635333E152235101D2D21242D
3A2D374B4341655E4E6D62607A706F81797776757A6E6D72
686964615C594F3F4C433D3F423C403F3D4840474F343F5B
324D683C5B6F47505737374330253324182616141F212727
252831313B3C444945495354525C5E5C56625A5F63586168
59686D5B69745F6B77626D735F6E735F6E69686B70676B74
6E717A6A727D6D7985777A7F7982897E838983888B9B9B99
A49F9CA6948AB38B72A97158A358419F54348B533A895548
7D5850825E527A6955725F58705B4A644F3C5B483A51363B
4217323D1B2B2D222A1E3B4B2E567037657D385E7521455B
15435B1C455B2F3B55434D4F494D564C495A5861686A7480
6B839D86939CA1A3BAB5B4BAC1C2BDB5B9BCACADAFA0A0A0
92969587909799929A9F8B8A9B888E9F94A59B9EA3919AA1
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="1" name="Eq._Sierpinski_triangle_filled_with_itself_by_b33rheart" size="1024 1024" center="0.508334 -0.359498" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="5" gamma="5" highlight_power="-1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.430127" opacity="1"/>
<xform weight="0.005" color="0.45098" var_color="1" color_speed="0.3" symmetry="0.4" name="Filler" animate="1" linear="1" coefs="1 0 0 1 0 0" post="-0.5 4.37114e-08 -4.37114e-08 -0.5 0.75 -0.430127" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0C13130B10130B0F120A0E110A0E11090D10070B0E06090D
05090A05090A04080906070807090B0A0C0C0D101112151A
1A2136B4C4DADCE5ECE5EDF2EFF4F9F3FCFBFFFFFFFFFFFF
FFFFFFFFFFFFFEFCFDFCFAFCF1F6FBF0F4F8F0F4F8F3F2F7
EDF1F4EBEFF0EBEEF5ECF3F6EFF3F7EBF4FAEEF6FAF1F6FA
FEFEFCFFFFFDFEFEFEFFFAFAEEF1F5DCE8EEBFD0DA5C3921
1618171C2326A3C2D7BCD5E3CEE1E5CADBE3BFCFDB462B19
1418150F13140D0F130A0B0D090A0C08090C08090D080B0D
080C0F090D100A0E110A0E110B0F120B0F120B0F120C1013
0D11140E121510121716161B313D54B5C5DFD8E2EBDEE8EF
E5ECF2E8EDF1E2EBF2DAE4EDB9CFDE72879915191C0F1417
0E12151014171B1E239DBBD3C0D7E9D7ECF4DDEEF3E2ECED
E3EAEEDAE4EDBED1DF90B2D6131C2E1010190F10140E0F11
0F0F0F0E0F110C0F120A0F12081014081115060F18090C15
0A0C130C10130D11140E121513171A1F2520B8C9D6D8DDE1
E4EAEEE7EFF6EAEFF6EEF2FAECF4F7E1EDF6D9EAEDABCBE0
2C3A4E16161B1010120C0D0F090A0C070B0B060A0B070B0E
080C0F090D100B0F120D111411131718181D9DA2ADDAD6D1
E6E6EEE8ECEEE9EDF0EDEDEBEAEBEDE6EAEDE6E9EEE5EAEE
E5ECF2E0EAF3DAE7EFAFCFE34B60790F18210C14170D1214
0C10130C10130C10130C10130D11140D11140D10150D1115
0E11160C131A0B1521080C0F0B0C100C0D110D0E120F0F10
0F10121011131115181C2127A8B9D5C3D5E7D0E0EBCDD6E7
BBC4C83F23161513190F12170E12150F131613171A213445
B0CBDADEE3E7E5E8EFE8EDF2EBF1F7EEF2FBECF4FBEAF1F7
E4EDF9DAE8EEC7D6DD929D9D171B1C1015170E12150E1215
0E121511131717191D738AA1B0CBE48FADC2171B1E0F1416
0C1013090D10070B0E060A0B05090A030708040706040809
07080A07080B07080A060709060809080A09090B0A090A0C
090C0D090D10090D10090D100A0D100A0E110A0E110B0E11
0B0F1009100F080E0F090D10090E110A0E110A0E110A0E11
0A0E120B0F120B0F120B0F120B0F120B0F120C10130C1512
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="2" name="Eq._Sierpinski_triangle_rotated_60_degrees_by_b33rheart" size="1024 1024" center="0.507665 -0.847991" scale="500" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="13.01" gamma="2.9" highlight_power="-1" logscale_k2="0" vibrancy="0.15" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="10" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.433012" opacity="0"/>
<xform weight="0.013" color="0.308" var_color="1" color_speed="0.69" symmetry="-0.38" name="Rotator" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 -0.866025 0.866025 0.5 1 -0" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0F1314090A0C080B0D0A0E110B0F120D111416161BD8E2EB
E8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE90B2D60F1014
0E0F11081014090C150D11141F2520E4EAEEEEF2FAD9EAED
16161B090A0C070B0E0B0F1218181DE6E6EEEDEDEBE6E9EE
E0EAF34B60790D12140C10130D11140E1116080C0F0D0E12
101113A8B9D5CDD6E71513190F1316B0CBDAE8EDF2ECF4FB
DAE8EE171B1C0E121517191D8FADC20C1013060A0B040706
07080B060809090A0C090D100A0E110B0F10090D100A0E11
0B0F120B0F120C13130A0E11070B0E05090A07090B12151A
DCE5ECF3FCFBFFFFFFFCFAFCF0F4F8EBEFF0EFF3F7F1F6FA
FEFEFEDCE8EE161817BCD5E3BFCFDB0F1314090A0C080B0D
0A0E110B0F120D111416161BD8E2EBE8EDF1B9CFDE0F1417
1B1E23D7ECF4E3EAEE90B2D60F10140E0F11081014090C15
0D11141F2520E4EAEEEEF2FAD9EAED16161B090A0C070B0E
0B0F1218181DE6E6EEEDEDEBE6E9EEE0EAF34B60790D1214
0C10130D11140E1116080C0F0D0E12101113A8B9D5CDD6E7
1513190F1316B0CBDAE8EDF2ECF4FBDAE8EE171B1C0E1215
17191D8FADC20C1013060A0B04070607080B060809090A0C
090D100A0E110B0F10090D100A0E110B0F120B0F120C1313
0A0E11070B0E05090A07090B12151ADCE5ECF3FCFBFFFFFF
FCFAFCF0F4F8EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817
BCD5E3BFCFDB0F1314090A0C080B0D0A0E110B0F120D1114
16161BD8E2EBE8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE
90B2D60F10140E0F11081014090C150D11141F2520E4EAEE
EEF2FAD9EAED16161B090A0C070B0E0B0F1218181DE6E6EE
EDEDEBE6E9EEE0EAF34B60790D12140C10130D11140E1116
080C0F0D0E12101113A8B9D5CDD6E71513190F1316B0CBDA
E8EDF2ECF4FBDAE8EE171B1C0E121517191D8FADC20C1013
060A0B04070607080B060809090A0C090D100A0E110B0F10
090D100A0E110B0F120B0F120C13130C13130A0E11070B0E
05090A07090B12151ADCE5ECF3FCFBFFFFFFFCFAFCF0F4F8
EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817BCD5E3BFCFDB
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="3" name="Right_Sierpinski_triangle_by_b33rheart" size="1024 1024" center="0.497917 -0.142831" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.25" opacity="1"/>
<palette count="256" format="RGB">
5136475145454C433E503E3E4D3C34422D2A3E1F24442D1B
654E2E7A5948907564998C83B49C90B8A793BBAA96B4A69D
AEA9A6ACA6A897A0A7A39A95A4A097A8A2A4B7B7B7C5C4C9
D7D8DCE5E7E2D8DCDBCAD0CEC0B6B4BEB1A1C5A18BCBAA8B
CEB889C7B5A7DAD7C6EDDECBD9D5D6D3D3D3BFBFBFABB4BB
99A2A991949D7F8B9B768C998A898E92828C828A977D868D
827680886E6D9371588E6458996341B15C37B55F50B47468
BA9583C0AE9ACAC3BBD6CEC1DAB09AD39274B58763B68370
A2917D9B9693AAA9A7AEACADBBB5B5CEC8CADAD7CED2D0C4
CBCAC6CAC5C2B0B0B0BDA9AAB2A499A59C95978F84948274
897260876A5A7F67677A67636C685F6B61556D585D615257
62484B6D463F7648397A3D1E793B226C151E683F2D674D3E
644C4A655A625C5A655664675065785F7189697C7A717A81
807E817B7C76867E699E7B67C57D67CC7353C3645EC56243
B04F3CA44C369D4434983432724643664945644B4468484B
7052526E55517B6B5C887B6B9B8B7EB09E7AB9A37CCFB988
DAB28ECEA796BAA087AA9F8D8F8C878D84878E79828F7E77
817D7E838287937D7FA47E71B071609D695C8A5F4E754F42
6638425D4038442C2C421D25501A0E4D291D4F38325D4948
5F5259574E475B4F3F50444635333E152235101D2D21242D
3A2D374B4341655E4E6D62607A706F81797776757A6E6D72
686964615C594F3F4C433D3F423C403F3D4840474F343F5B
324D683C5B6F47505737374330253324182616141F212727
252831313B3C444945495354525C5E5C56625A5F63586168
59686D5B69745F6B77626D735F6E735F6E69686B70676B74
6E717A6A727D6D7985777A7F7982897E838983888B9B9B99
A49F9CA6948AB38B72A97158A358419F54348B533A895548
7D5850825E527A6955725F58705B4A644F3C5B483A51363B
4217323D1B2B2D222A1E3B4B2E567037657D385E7521455B
15435B1C455B2F3B55434D4F494D564C495A5861686A7480
6B839D86939CA1A3BAB5B4BAC1C2BDB5B9BCACADAFA0A0A0
92969587909799929A9F8B8A9B888E9F94A59B9EA3919AA1
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="4" name="Right_Sierpinski_triangle_rotated_90_degrees_by_b33rheart" size="1024 1024" center="0.494825 -0.492909" scale="910" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="13.01" gamma="3" highlight_power="-1" logscale_k2="0" vibrancy="0.15" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="10" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.25" opacity="0"/>
<xform weight="0.013" color="0.308" var_color="1" color_speed="0.69" symmetry="-0.38" name="Rotator" animate="1" linear="1" coefs="1 0 0 1 0 0" post="1.27676e-15 -1 1 1.27676e-15 1 -0" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0F1314090A0C080B0D0A0E110B0F120D111416161BD8E2EB
E8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE90B2D60F1014
0E0F11081014090C150D11141F2520E4EAEEEEF2FAD9EAED
16161B090A0C070B0E0B0F1218181DE6E6EEEDEDEBE6E9EE
E0EAF34B60790D12140C10130D11140E1116080C0F0D0E12
101113A8B9D5CDD6E71513190F1316B0CBDAE8EDF2ECF4FB
DAE8EE171B1C0E121517191D8FADC20C1013060A0B040706
07080B060809090A0C090D100A0E110B0F10090D100A0E11
0B0F120B0F120C13130A0E11070B0E05090A07090B12151A
DCE5ECF3FCFBFFFFFFFCFAFCF0F4F8EBEFF0EFF3F7F1F6FA
FEFEFEDCE8EE161817BCD5E3BFCFDB0F1314090A0C080B0D
0A0E110B0F120D111416161BD8E2EBE8EDF1B9CFDE0F1417
1B1E23D7ECF4E3EAEE90B2D60F10140E0F11081014090C15
0D11141F2520E4EAEEEEF2FAD9EAED16161B090A0C070B0E
0B0F1218181DE6E6EEEDEDEBE6E9EEE0EAF34B60790D1214
0C10130D11140E1116080C0F0D0E12101113A8B9D5CDD6E7
1513190F1316B0CBDAE8EDF2ECF4FBDAE8EE171B1C0E1215
17191D8FADC20C1013060A0B04070607080B060809090A0C
090D100A0E110B0F10090D100A0E110B0F120B0F120C1313
0A0E11070B0E05090A07090B12151ADCE5ECF3FCFBFFFFFF
FCFAFCF0F4F8EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817
BCD5E3BFCFDB0F1314090A0C080B0D0A0E110B0F120D1114
16161BD8E2EBE8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE
90B2D60F10140E0F11081014090C150D11141F2520E4EAEE
EEF2FAD9EAED16161B090A0C070B0E0B0F1218181DE6E6EE
EDEDEBE6E9EEE0EAF34B60790D12140C10130D11140E1116
080C0F0D0E12101113A8B9D5CDD6E71513190F1316B0CBDA
E8EDF2ECF4FBDAE8EE171B1C0E121517191D8FADC20C1013
060A0B04070607080B060809090A0C090D100A0E110B0F10
090D100A0E110B0F120B0F120C13130C13130A0E11070B0E
05090A07090B12151ADCE5ECF3FCFBFFFFFFFCFAFCF0F4F8
EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817BCD5E3BFCFDB
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="5" name="Sierpinski_carpet_by_b33rheart" size="1024 1024" center="1.48118 1.49622" scale="310" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="12" gamma="4" highlight_power="-1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 1" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 1" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 2" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 2" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 2" opacity="1"/>
<palette count="256" format="RGB">
000000000000010103000302000602030C09060E11252120
402E244E31297348379B523F9A4729764A1D4C2F1F28210F
0B1608050801010801010600000400000400000400020300
0501000C0000160C024B1304521800753B13905825BB7434
C8733ACC843CB07B478863535555572A3A471F2D360B1514
07100D09160C2628272C303B4832255A441F856034976534
B17A41AD6D2F955C2790511B6E3D124D2E1A412108120E0B
060805020401040000040000040000020100010100010300
020400030301020202020401020400040500040601040700
040700040700020700020700040700090A0220190935270C
542C137C310AA23800BB4E13B64D1DB25D24A1511C91541D
604621483225312620141613070B0A030303020202010101
010100000000000000010100010300000501000700000700
000500000400010300010100000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
0000000200010501000A00000E000012130B291F132F1A07
211C0811140D071307031402000C00000700000700000700
010600010600000500020401020202020202010101000000
000000010100020200020200010100010100000000000000
000000000000010100010300010300000500010600000500
00040001030001030001030002040103050205090A0E181A
23313E2B3743554B4C72544AA77947D3803EE78E52FFBA77
FED18EFEDEA1FFD287FFC677EAA365CA9762B0826BAA7F6E
C27C3ED88039DB6623E26026D4602DC16937AE573C94594B
7757305F382958281A4D2D20462D263D302A29292B161A19
080D10030504020701010600010600000700000700030801
0D0D01251A164123184A332B655757AA8A73FEC784FFE5B1
FEF5D4FFF0C5FFCD84F78553FF7F2EEF9245FBA059FFBF6B
FFC070E3995CE98554BA834B9C644D7C5141624C41443935
302E3121201E0A160A051604010801000602000501000501
0103000101000101000103000305000407000A0A00271604
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="6" name="Sierpinski_carpet_1_by_b33rheart" size="1024 1024" center="1.49877 1.51357" scale="260" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="6" gamma="5.5" highlight_power="0" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.209184 0.119388 1 0.471429 0.430612 1 0.696939 0.803061 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.209184 0.119388 0.471429 0.430612 0.696939 0.803061 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 0" opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 -1.74846e-07 1.74846e-07 1 0 0" post="0.333333 -5.82818e-08 5.82818e-08 0.333333 1 0" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 0" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.45" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 -1.74846e-07 1.74846e-07 1 0 0" post="1 -1.74846e-07 1.74846e-07 1 1 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<palette count="256" format="RGB">
B3A598AD9C8FAFA589AC9875B39F78B39F7ABEA893C2B2A5
D1C4B2C0AA94AE9C87968266887B72A08367BFA37BE1B86C
F4D772FDE085FCEC90FBE19CFDED97FBE098F1E897E6CFA0
CDC2AABDAFA4B2A49DA79B95A39B93A49895A9A39EB7ACA2
C3BBAEC6BBAEC8BEB0C4B9B3C1B8B2C1B9B5C1BCB9C3C0BC
C6C4C1CBC6C1D7CFBCDCCCC2DCD2BEDDD1C8DAD7D4DAD7D3
D9D6D3CECAC7BEB9B6B3ABA8A9A098A99584A4988CA99886
AAA49FB9B5B1C9C6C5DFE0D9E2DEDCE7E5DED5CEC9D0C9C4
CEC3B9D8CAB7E8CFABEED39AEDCD8EECCD86E0CA9DEAD6AB
E9DEC1ECDFCAE0D6BECFC5B5BFB6ACB5B0A5B4AAA1B3A9A0
B2A498B6ACA3BCB3ACD1C7BBDDD3C2F3E3BEF6EFA6FDF59D
FCFC84FDF283F3DE81E8C67DEBB87CE6BD7AE1BC8DDFC58F
C6B9A1B3A59CADA59DA49D99AFACA9BFBAB6D9CAB4E7D3B1
F4C899D9BC8ED1A583B39D83AA9788A291808E837082766C
79705E988A7ABCA681DEC594FFE98FFCE98FF7EA9BF0E6A6
DDD1B6D3BCAAC2BAB2BEADA6BAB2B0BBB2ACB7AFA9B6A9A1
B3A598AD9C8FAFA589AC9875B39F78B39F7ABEA893C2B2A5
D1C4B2C0AA94AE9C87968266887B72A08367BFA37BE1B86C
F4D772FDE085FCEC90FBE19CFDED97FBE098F1E897E6CFA0
CDC2AABDAFA4B2A49DA79B95A39B93A49895A9A39EB7ACA2
C3BBAEC6BBAEC8BEB0C4B9B3C1B8B2C1B9B5C1BCB9C3C0BC
C6C4C1CBC6C1D7CFBCDCCCC2DCD2BEDDD1C8DAD7D4DAD7D3
D9D6D3CECAC7BEB9B6B3ABA8A9A098A99584A4988CA99886
AAA49FB9B5B1C9C6C5DFE0D9E2DEDCE7E5DED5CEC9D0C9C4
CEC3B9D8CAB7E8CFABEED39AEDCD8EECCD86E0CA9DEAD6AB
E9DEC1ECDFCAE0D6BECFC5B5BFB6ACB5B0A5B4AAA1B3A9A0
B2A498B6ACA3BCB3ACD1C7BBDDD3C2F3E3BEF6EFA6FDF59D
FCFC84FDF283F3DE81E8C67DEBB87CE6BD7AE1BC8DDFC58F
C6B9A1B3A59CADA59DA49D99AFACA9BFBAB6D9CAB4E7D3B1
F4C899D9BC8ED1A583B39D83AA9788A291808E837082766C
79705E988A7ABCA681DEC594FFE98FFCE98FF7EA9BF0E6A6
DDD1B6D3BCAAC2BAB2BEADA6BAB2B0BBB2ACB7AFA9B6A9A1
</palette>
</flame>
</flames>
<flames>
<flame version="EMBER-WIN-1.0.0.19" time="0" name="Equilateral_Sierpinski_triangle_by_b33rheart" size="1024 1024" center="0.500379 -0.359943" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 6.12323e-17 1 0 0" post="0.5 0 3.06162e-17 0.5 0.25 -0.433012" opacity="1"/>
<palette count="256" format="RGB">
5136475145454C433E503E3E4D3C34422D2A3E1F24442D1B
654E2E7A5948907564998C83B49C90B8A793BBAA96B4A69D
AEA9A6ACA6A897A0A7A39A95A4A097A8A2A4B7B7B7C5C4C9
D7D8DCE5E7E2D8DCDBCAD0CEC0B6B4BEB1A1C5A18BCBAA8B
CEB889C7B5A7DAD7C6EDDECBD9D5D6D3D3D3BFBFBFABB4BB
99A2A991949D7F8B9B768C998A898E92828C828A977D868D
827680886E6D9371588E6458996341B15C37B55F50B47468
BA9583C0AE9ACAC3BBD6CEC1DAB09AD39274B58763B68370
A2917D9B9693AAA9A7AEACADBBB5B5CEC8CADAD7CED2D0C4
CBCAC6CAC5C2B0B0B0BDA9AAB2A499A59C95978F84948274
897260876A5A7F67677A67636C685F6B61556D585D615257
62484B6D463F7648397A3D1E793B226C151E683F2D674D3E
644C4A655A625C5A655664675065785F7189697C7A717A81
807E817B7C76867E699E7B67C57D67CC7353C3645EC56243
B04F3CA44C369D4434983432724643664945644B4468484B
7052526E55517B6B5C887B6B9B8B7EB09E7AB9A37CCFB988
DAB28ECEA796BAA087AA9F8D8F8C878D84878E79828F7E77
817D7E838287937D7FA47E71B071609D695C8A5F4E754F42
6638425D4038442C2C421D25501A0E4D291D4F38325D4948
5F5259574E475B4F3F50444635333E152235101D2D21242D
3A2D374B4341655E4E6D62607A706F81797776757A6E6D72
686964615C594F3F4C433D3F423C403F3D4840474F343F5B
324D683C5B6F47505737374330253324182616141F212727
252831313B3C444945495354525C5E5C56625A5F63586168
59686D5B69745F6B77626D735F6E735F6E69686B70676B74
6E717A6A727D6D7985777A7F7982897E838983888B9B9B99
A49F9CA6948AB38B72A97158A358419F54348B533A895548
7D5850825E527A6955725F58705B4A644F3C5B483A51363B
4217323D1B2B2D222A1E3B4B2E567037657D385E7521455B
15435B1C455B2F3B55434D4F494D564C495A5861686A7480
6B839D86939CA1A3BAB5B4BAC1C2BDB5B9BCACADAFA0A0A0
92969587909799929A9F8B8A9B888E9F94A59B9EA3919AA1
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="1" name="Eq._Sierpinski_triangle_filled_with_itself_by_b33rheart" size="1024 1024" center="0.508334 -0.359498" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="5" gamma="5" highlight_power="-1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.430127" opacity="1"/>
<xform weight="0.005" color="0.45098" var_color="1" color_speed="0.3" symmetry="0.4" name="Filler" animate="1" linear="1" coefs="1 0 0 1 0 0" post="-0.5 4.37114e-08 -4.37114e-08 -0.5 0.75 -0.430127" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0C13130B10130B0F120A0E110A0E11090D10070B0E06090D
05090A05090A04080906070807090B0A0C0C0D101112151A
1A2136B4C4DADCE5ECE5EDF2EFF4F9F3FCFBFFFFFFFFFFFF
FFFFFFFFFFFFFEFCFDFCFAFCF1F6FBF0F4F8F0F4F8F3F2F7
EDF1F4EBEFF0EBEEF5ECF3F6EFF3F7EBF4FAEEF6FAF1F6FA
FEFEFCFFFFFDFEFEFEFFFAFAEEF1F5DCE8EEBFD0DA5C3921
1618171C2326A3C2D7BCD5E3CEE1E5CADBE3BFCFDB462B19
1418150F13140D0F130A0B0D090A0C08090C08090D080B0D
080C0F090D100A0E110A0E110B0F120B0F120B0F120C1013
0D11140E121510121716161B313D54B5C5DFD8E2EBDEE8EF
E5ECF2E8EDF1E2EBF2DAE4EDB9CFDE72879915191C0F1417
0E12151014171B1E239DBBD3C0D7E9D7ECF4DDEEF3E2ECED
E3EAEEDAE4EDBED1DF90B2D6131C2E1010190F10140E0F11
0F0F0F0E0F110C0F120A0F12081014081115060F18090C15
0A0C130C10130D11140E121513171A1F2520B8C9D6D8DDE1
E4EAEEE7EFF6EAEFF6EEF2FAECF4F7E1EDF6D9EAEDABCBE0
2C3A4E16161B1010120C0D0F090A0C070B0B060A0B070B0E
080C0F090D100B0F120D111411131718181D9DA2ADDAD6D1
E6E6EEE8ECEEE9EDF0EDEDEBEAEBEDE6EAEDE6E9EEE5EAEE
E5ECF2E0EAF3DAE7EFAFCFE34B60790F18210C14170D1214
0C10130C10130C10130C10130D11140D11140D10150D1115
0E11160C131A0B1521080C0F0B0C100C0D110D0E120F0F10
0F10121011131115181C2127A8B9D5C3D5E7D0E0EBCDD6E7
BBC4C83F23161513190F12170E12150F131613171A213445
B0CBDADEE3E7E5E8EFE8EDF2EBF1F7EEF2FBECF4FBEAF1F7
E4EDF9DAE8EEC7D6DD929D9D171B1C1015170E12150E1215
0E121511131717191D738AA1B0CBE48FADC2171B1E0F1416
0C1013090D10070B0E060A0B05090A030708040706040809
07080A07080B07080A060709060809080A09090B0A090A0C
090C0D090D10090D10090D100A0D100A0E110A0E110B0E11
0B0F1009100F080E0F090D10090E110A0E110A0E110A0E11
0A0E120B0F120B0F120B0F120B0F120B0F120C10130C1512
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="2" name="Eq._Sierpinski_triangle_rotated_60_degrees_by_b33rheart" size="1024 1024" center="0.507665 -0.847991" scale="500" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="13.01" gamma="2.9" highlight_power="-1" logscale_k2="0" vibrancy="0.15" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="10" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.433012" opacity="0"/>
<xform weight="0.013" color="0.308" var_color="1" color_speed="0.69" symmetry="-0.38" name="Rotator" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 -0.866025 0.866025 0.5 1 -0" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0F1314090A0C080B0D0A0E110B0F120D111416161BD8E2EB
E8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE90B2D60F1014
0E0F11081014090C150D11141F2520E4EAEEEEF2FAD9EAED
16161B090A0C070B0E0B0F1218181DE6E6EEEDEDEBE6E9EE
E0EAF34B60790D12140C10130D11140E1116080C0F0D0E12
101113A8B9D5CDD6E71513190F1316B0CBDAE8EDF2ECF4FB
DAE8EE171B1C0E121517191D8FADC20C1013060A0B040706
07080B060809090A0C090D100A0E110B0F10090D100A0E11
0B0F120B0F120C13130A0E11070B0E05090A07090B12151A
DCE5ECF3FCFBFFFFFFFCFAFCF0F4F8EBEFF0EFF3F7F1F6FA
FEFEFEDCE8EE161817BCD5E3BFCFDB0F1314090A0C080B0D
0A0E110B0F120D111416161BD8E2EBE8EDF1B9CFDE0F1417
1B1E23D7ECF4E3EAEE90B2D60F10140E0F11081014090C15
0D11141F2520E4EAEEEEF2FAD9EAED16161B090A0C070B0E
0B0F1218181DE6E6EEEDEDEBE6E9EEE0EAF34B60790D1214
0C10130D11140E1116080C0F0D0E12101113A8B9D5CDD6E7
1513190F1316B0CBDAE8EDF2ECF4FBDAE8EE171B1C0E1215
17191D8FADC20C1013060A0B04070607080B060809090A0C
090D100A0E110B0F10090D100A0E110B0F120B0F120C1313
0A0E11070B0E05090A07090B12151ADCE5ECF3FCFBFFFFFF
FCFAFCF0F4F8EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817
BCD5E3BFCFDB0F1314090A0C080B0D0A0E110B0F120D1114
16161BD8E2EBE8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE
90B2D60F10140E0F11081014090C150D11141F2520E4EAEE
EEF2FAD9EAED16161B090A0C070B0E0B0F1218181DE6E6EE
EDEDEBE6E9EEE0EAF34B60790D12140C10130D11140E1116
080C0F0D0E12101113A8B9D5CDD6E71513190F1316B0CBDA
E8EDF2ECF4FBDAE8EE171B1C0E121517191D8FADC20C1013
060A0B04070607080B060809090A0C090D100A0E110B0F10
090D100A0E110B0F120B0F120C13130C13130A0E11070B0E
05090A07090B12151ADCE5ECF3FCFBFFFFFFFCFAFCF0F4F8
EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817BCD5E3BFCFDB
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="3" name="Right_Sierpinski_triangle_by_b33rheart" size="1024 1024" center="0.497917 -0.142831" scale="960" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.1" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="1"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.25" opacity="1"/>
<palette count="256" format="RGB">
5136475145454C433E503E3E4D3C34422D2A3E1F24442D1B
654E2E7A5948907564998C83B49C90B8A793BBAA96B4A69D
AEA9A6ACA6A897A0A7A39A95A4A097A8A2A4B7B7B7C5C4C9
D7D8DCE5E7E2D8DCDBCAD0CEC0B6B4BEB1A1C5A18BCBAA8B
CEB889C7B5A7DAD7C6EDDECBD9D5D6D3D3D3BFBFBFABB4BB
99A2A991949D7F8B9B768C998A898E92828C828A977D868D
827680886E6D9371588E6458996341B15C37B55F50B47468
BA9583C0AE9ACAC3BBD6CEC1DAB09AD39274B58763B68370
A2917D9B9693AAA9A7AEACADBBB5B5CEC8CADAD7CED2D0C4
CBCAC6CAC5C2B0B0B0BDA9AAB2A499A59C95978F84948274
897260876A5A7F67677A67636C685F6B61556D585D615257
62484B6D463F7648397A3D1E793B226C151E683F2D674D3E
644C4A655A625C5A655664675065785F7189697C7A717A81
807E817B7C76867E699E7B67C57D67CC7353C3645EC56243
B04F3CA44C369D4434983432724643664945644B4468484B
7052526E55517B6B5C887B6B9B8B7EB09E7AB9A37CCFB988
DAB28ECEA796BAA087AA9F8D8F8C878D84878E79828F7E77
817D7E838287937D7FA47E71B071609D695C8A5F4E754F42
6638425D4038442C2C421D25501A0E4D291D4F38325D4948
5F5259574E475B4F3F50444635333E152235101D2D21242D
3A2D374B4341655E4E6D62607A706F81797776757A6E6D72
686964615C594F3F4C433D3F423C403F3D4840474F343F5B
324D683C5B6F47505737374330253324182616141F212727
252831313B3C444945495354525C5E5C56625A5F63586168
59686D5B69745F6B77626D735F6E735F6E69686B70676B74
6E717A6A727D6D7985777A7F7982897E838983888B9B9B99
A49F9CA6948AB38B72A97158A358419F54348B533A895548
7D5850825E527A6955725F58705B4A644F3C5B483A51363B
4217323D1B2B2D222A1E3B4B2E567037657D385E7521455B
15435B1C455B2F3B55434D4F494D564C495A5861686A7480
6B839D86939CA1A3BAB5B4BAC1C2BDB5B9BCACADAFA0A0A0
92969587909799929A9F8B8A9B888E9F94A59B9EA3919AA1
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="4" name="Right_Sierpinski_triangle_rotated_90_degrees_by_b33rheart" size="1024 1024" center="0.494825 -0.492909" scale="910" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="13.01" gamma="3" highlight_power="-1" logscale_k2="0" vibrancy="0.15" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="10" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.5 0" opacity="0"/>
<xform weight="0.25" color="0.502345" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.5 0 0 0.5 0.25 -0.25" opacity="0"/>
<xform weight="0.013" color="0.308" var_color="1" color_speed="0.69" symmetry="-0.38" name="Rotator" animate="1" linear="1" coefs="1 0 0 1 0 0" post="1.27676e-15 -1 1 1.27676e-15 1 -0" chaos="1 1 1 99 " opacity="1"/>
<palette count="256" format="RGB">
0F1314090A0C080B0D0A0E110B0F120D111416161BD8E2EB
E8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE90B2D60F1014
0E0F11081014090C150D11141F2520E4EAEEEEF2FAD9EAED
16161B090A0C070B0E0B0F1218181DE6E6EEEDEDEBE6E9EE
E0EAF34B60790D12140C10130D11140E1116080C0F0D0E12
101113A8B9D5CDD6E71513190F1316B0CBDAE8EDF2ECF4FB
DAE8EE171B1C0E121517191D8FADC20C1013060A0B040706
07080B060809090A0C090D100A0E110B0F10090D100A0E11
0B0F120B0F120C13130A0E11070B0E05090A07090B12151A
DCE5ECF3FCFBFFFFFFFCFAFCF0F4F8EBEFF0EFF3F7F1F6FA
FEFEFEDCE8EE161817BCD5E3BFCFDB0F1314090A0C080B0D
0A0E110B0F120D111416161BD8E2EBE8EDF1B9CFDE0F1417
1B1E23D7ECF4E3EAEE90B2D60F10140E0F11081014090C15
0D11141F2520E4EAEEEEF2FAD9EAED16161B090A0C070B0E
0B0F1218181DE6E6EEEDEDEBE6E9EEE0EAF34B60790D1214
0C10130D11140E1116080C0F0D0E12101113A8B9D5CDD6E7
1513190F1316B0CBDAE8EDF2ECF4FBDAE8EE171B1C0E1215
17191D8FADC20C1013060A0B04070607080B060809090A0C
090D100A0E110B0F10090D100A0E110B0F120B0F120C1313
0A0E11070B0E05090A07090B12151ADCE5ECF3FCFBFFFFFF
FCFAFCF0F4F8EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817
BCD5E3BFCFDB0F1314090A0C080B0D0A0E110B0F120D1114
16161BD8E2EBE8EDF1B9CFDE0F14171B1E23D7ECF4E3EAEE
90B2D60F10140E0F11081014090C150D11141F2520E4EAEE
EEF2FAD9EAED16161B090A0C070B0E0B0F1218181DE6E6EE
EDEDEBE6E9EEE0EAF34B60790D12140C10130D11140E1116
080C0F0D0E12101113A8B9D5CDD6E71513190F1316B0CBDA
E8EDF2ECF4FBDAE8EE171B1C0E121517191D8FADC20C1013
060A0B04070607080B060809090A0C090D100A0E110B0F10
090D100A0E110B0F120B0F120C13130C13130A0E11070B0E
05090A07090B12151ADCE5ECF3FCFBFFFFFFFCFAFCF0F4F8
EBEFF0EFF3F7F1F6FAFEFEFEDCE8EE161817BCD5E3BFCFDB
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="5" name="Sierpinski_carpet_by_b33rheart" size="1024 1024" center="1.48118 1.49622" scale="310" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="12" gamma="4" highlight_power="-1" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 0" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 1" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 1" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 2" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 2" opacity="1"/>
<xform weight="0.25" color="0.744181" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 2" opacity="1"/>
<palette count="256" format="RGB">
000000000000010103000302000602030C09060E11252120
402E244E31297348379B523F9A4729764A1D4C2F1F28210F
0B1608050801010801010600000400000400000400020300
0501000C0000160C024B1304521800753B13905825BB7434
C8733ACC843CB07B478863535555572A3A471F2D360B1514
07100D09160C2628272C303B4832255A441F856034976534
B17A41AD6D2F955C2790511B6E3D124D2E1A412108120E0B
060805020401040000040000040000020100010100010300
020400030301020202020401020400040500040601040700
040700040700020700020700040700090A0220190935270C
542C137C310AA23800BB4E13B64D1DB25D24A1511C91541D
604621483225312620141613070B0A030303020202010101
010100000000000000010100010300000501000700000700
000500000400010300010100000000000000000000000000
000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000
0000000200010501000A00000E000012130B291F132F1A07
211C0811140D071307031402000C00000700000700000700
010600010600000500020401020202020202010101000000
000000010100020200020200010100010100000000000000
000000000000010100010300010300000500010600000500
00040001030001030001030002040103050205090A0E181A
23313E2B3743554B4C72544AA77947D3803EE78E52FFBA77
FED18EFEDEA1FFD287FFC677EAA365CA9762B0826BAA7F6E
C27C3ED88039DB6623E26026D4602DC16937AE573C94594B
7757305F382958281A4D2D20462D263D302A29292B161A19
080D10030504020701010600010600000700000700030801
0D0D01251A164123184A332B655757AA8A73FEC784FFE5B1
FEF5D4FFF0C5FFCD84F78553FF7F2EEF9245FBA059FFBF6B
FFC070E3995CE98554BA834B9C644D7C5141624C41443935
302E3121201E0A160A051604010801000602000501000501
0103000101000101000103000305000407000A0A00271604
</palette>
</flame>
<flame version="EMBER-WIN-1.0.0.19" time="6" name="Sierpinski_carpet_1_by_b33rheart" size="1024 1024" center="1.49877 1.51357" scale="260" rotate="0" supersample="2" filter="0" filter_shape="gaussian" temporal_filter_type="gaussian" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="6" gamma="5.5" highlight_power="0" logscale_k2="0" vibrancy="1" estimator_radius="0" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="linear" new_linear="1" curves="0 0 1 0.209184 0.119388 1 0.471429 0.430612 1 0.696939 0.803061 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.209184 0.119388 0.471429 0.430612 0.696939 0.803061 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 0" opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 -1.74846e-07 1.74846e-07 1 0 0" post="0.333333 -5.82818e-08 5.82818e-08 0.333333 1 0" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 0" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 0 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 1 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="carpet" animate="1" linear="1" coefs="1 0 0 1 0 0" post="0.333333 2.30926e-15 -2.30926e-15 0.333333 2 2" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<xform weight="0.45" color="0.898039" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="1 -1.74846e-07 1.74846e-07 1 0 0" post="1 -1.74846e-07 1.74846e-07 1 1 1" chaos="1 1 1 1 1 1 1 1 0 " opacity="1"/>
<palette count="256" format="RGB">
B3A598AD9C8FAFA589AC9875B39F78B39F7ABEA893C2B2A5
D1C4B2C0AA94AE9C87968266887B72A08367BFA37BE1B86C
F4D772FDE085FCEC90FBE19CFDED97FBE098F1E897E6CFA0
CDC2AABDAFA4B2A49DA79B95A39B93A49895A9A39EB7ACA2
C3BBAEC6BBAEC8BEB0C4B9B3C1B8B2C1B9B5C1BCB9C3C0BC
C6C4C1CBC6C1D7CFBCDCCCC2DCD2BEDDD1C8DAD7D4DAD7D3
D9D6D3CECAC7BEB9B6B3ABA8A9A098A99584A4988CA99886
AAA49FB9B5B1C9C6C5DFE0D9E2DEDCE7E5DED5CEC9D0C9C4
CEC3B9D8CAB7E8CFABEED39AEDCD8EECCD86E0CA9DEAD6AB
E9DEC1ECDFCAE0D6BECFC5B5BFB6ACB5B0A5B4AAA1B3A9A0
B2A498B6ACA3BCB3ACD1C7BBDDD3C2F3E3BEF6EFA6FDF59D
FCFC84FDF283F3DE81E8C67DEBB87CE6BD7AE1BC8DDFC58F
C6B9A1B3A59CADA59DA49D99AFACA9BFBAB6D9CAB4E7D3B1
F4C899D9BC8ED1A583B39D83AA9788A291808E837082766C
79705E988A7ABCA681DEC594FFE98FFCE98FF7EA9BF0E6A6
DDD1B6D3BCAAC2BAB2BEADA6BAB2B0BBB2ACB7AFA9B6A9A1
B3A598AD9C8FAFA589AC9875B39F78B39F7ABEA893C2B2A5
D1C4B2C0AA94AE9C87968266887B72A08367BFA37BE1B86C
F4D772FDE085FCEC90FBE19CFDED97FBE098F1E897E6CFA0
CDC2AABDAFA4B2A49DA79B95A39B93A49895A9A39EB7ACA2
C3BBAEC6BBAEC8BEB0C4B9B3C1B8B2C1B9B5C1BCB9C3C0BC
C6C4C1CBC6C1D7CFBCDCCCC2DCD2BEDDD1C8DAD7D4DAD7D3
D9D6D3CECAC7BEB9B6B3ABA8A9A098A99584A4988CA99886
AAA49FB9B5B1C9C6C5DFE0D9E2DEDCE7E5DED5CEC9D0C9C4
CEC3B9D8CAB7E8CFABEED39AEDCD8EECCD86E0CA9DEAD6AB
E9DEC1ECDFCAE0D6BECFC5B5BFB6ACB5B0A5B4AAA1B3A9A0
B2A498B6ACA3BCB3ACD1C7BBDDD3C2F3E3BEF6EFA6FDF59D
FCFC84FDF283F3DE81E8C67DEBB87CE6BD7AE1BC8DDFC58F
C6B9A1B3A59CADA59DA49D99AFACA9BFBAB6D9CAB4E7D3B1
F4C899D9BC8ED1A583B39D83AA9788A291808E837082766C
79705E988A7ABCA681DEC594FFE98FFCE98FF7EA9BF0E6A6
DDD1B6D3BCAAC2BAB2BEADA6BAB2B0BBB2ACB7AFA9B6A9A1
</palette>
</flame>
</flames>

View File

@ -1,416 +1,416 @@
<flames>
<flame version="EMBER-LNX-1.0.0.19" time="0" name="C-91_1" size="400 600" center="0.693 0.767376" scale="260" rotate="-114.31" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0.0941176 0.0941176 0.0941176" brightness="5" gamma="1" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.0211199" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="pre_falloff2 elliptic flatten linear splits pre_gaussian_blur cylinder loonie post_falloff2 pre_log post_log" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="5" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="10" pre_falloff2_mindist="2" pre_falloff2_mul_x="0" pre_falloff2_mul_y="1" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="0" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" elliptic="1" flatten="1" coefs="0.721805 0.000928 -0.000928 0.721805 0 0" chaos="0 0 0 0 1 " opacity="0"/>
<xform weight="15" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" linear="1" splits="1" splits_x="1" splits_y="0.099" flatten="1" coefs="0.81837 0 0 0.81837 0 0" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_gaussian_blur="1" cylinder="0.25" coefs="1 0 0 1 0 0" post="0.1 0 0 0.5 0 -1.5" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_gaussian_blur="1" cylinder="0.25" coefs="1 0 0 1 0 0" post="0.1 0 0 0.5 0 1.5" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" loonie="1" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="1" post_falloff2_type="1" coefs="1 0 0 1 0 0" chaos="1 1 1 1 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_log="1" pre_log_base="1.98228" loonie="1" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="1" post_falloff2_type="1" post_log="1" post_log_base="1.89828" coefs="1.38792 0 0 1.38792 1.4039 -1.49784" opacity="1"/>
<palette count="256" format="RGB">
2D0400430600520D04881E03C73215DC4A33DA6932B18566
559E61564E775932385A1B1B8C3E15C3510FE47A43E59C65
FFB68495DDADE4CD9DFDC19CFBC397F0CC89DE9C6DDE7C49
DD4C31D94734E12D1BD00C06A80200710F00550B00430312
1F16241B080A1E07032A09003C13034512124F171C3D2F1F
27221812161E0C0F190909100C0609060208040404000503
0005000303030800050D00070F01030E02000E02000F0200
110B000D09000E03000C0400050700030303000104000002
0303030501030F01001B0200200004310A004B09004D070A
3D08002C09002A02001D03001203011100060F0103110200
120800120900160A001F0900220400200100180200120200
0E01000C02000B03000704000503000505010705010A0802
07070E14140C111C1613251938243C474C2F653D536B6295
838EC4E18350DB923FD26A2FC23907BC161F9F080C730700
5910134E222740223A382328262626211E121515150D0D16
0C0A17180709150C060A14110019160012120B0B13131313
14170B0C211915152225151920280E2E2117273416361C25
530C0C5214037A0001650C00520001350000220005180A0A
201D111316250B2A401B3D36253B52305C385031504B2834
4C2B1D37231833140D2A07001C07021804001E08002E0D00
510800650200950B00C50400CA060FCC000BAB0400940000
5B0B003B09002607001A0600170001160001120502160E04
2B0704490C00601F006225009C3C29616A94595382922C1E
920106A40E00C12100C41000BA0001A000037302004C0100
3300011A04001001000705000505010303080808080C0503
1109021C0200290200390900481000520703520C112C4146
25605C006F75057181055F79065E6E22585E31493D3F2F23
32241A281311301405390E00371807371311300909240800
2605001B08001B00002000052A00074C05005F0C00841600
BE0506C7240ED63839B56166588686177870225A561F3936
181D27091E0C0314070B0B050D0A060F0705100E06101009
16060815050E11070A0A0A0503030800080A0005090F0702
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="1" name="C-91_2" size="400 700" center="-0.002 -0.174" scale="1000" rotate="-32.42" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.105882" brightness="3.32174" gamma="1.17" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="blur gaussian_blur log flatten linear sinusoidal cylinder cross wedge epispiral waves2 y post_bwraps crackle spherical julian post_falloff3" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0.509" var_color="1" color_speed="0.679" symmetry="-0.358" name="" animate="1" blur="0.618" gaussian_blur="0.243" log="0.075" log_base="2.71828" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="5" color="0.368" var_color="1" color_speed="0.056" symmetry="0.888" name="" animate="0" linear="1" sinusoidal="-0.011" cylinder="-0.02" log="0.0125" log_base="2.71828" cross="0.005" wedge="-0.0025" wedge_angle="1.5708" wedge_hole="0" wedge_count="50" wedge_swirl="0" epispiral="-0.1" epispiral_n="6" epispiral_thickness="0.05" epispiral_holes="0.1" waves2="0.025" waves2_freqx="10" waves2_scalex="0.5" waves2_freqy="20" waves2_scaley="0.25" waves2_freqz="0" waves2_scalez="0" y="0.1" y_hypergon="-2.752" y_hypergon_n="5" y_hypergon_r="0.683" y_star="0.473" y_star_n="10" y_star_slope="1.5708" y_lituus="-0.302" y_lituus_a="0.787" y_super="0.178" y_super_m="10" y_super_n1="10" y_super_n2="1" y_super_n3="5" post_bwraps="1" post_bwraps_cellsize="1" post_bwraps_space="1" post_bwraps_gain="1.288" post_bwraps_inner_twist="0" post_bwraps_outer_twist="0" coefs="0.243962 1.55516 -1.1943 0.51491 0.512189 -0.57003" opacity="1"/>
<xform weight="0.025" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.129" crackle_cellsize="0.5" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.2" opacity="1"/>
<xform weight="0.025" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" gaussian_blur="0.193" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.2" opacity="1"/>
<xform weight="0.0125" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="200" spherical="200" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" cross="0.003" julian="2" julian_dist="1" julian_power="-2" post_falloff3="1" post_falloff3_blur_type="1" post_falloff3_blur_shape="0" post_falloff3_blur_strength="20" post_falloff3_min_distance="2.25" post_falloff3_invert_distance="0" post_falloff3_mul_x="1" post_falloff3_mul_y="0" post_falloff3_mul_z="0" post_falloff3_mul_c="0" post_falloff3_center_x="0" post_falloff3_center_y="2.009" post_falloff3_center_z="0" post_falloff3_alpha="0" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
1F23211A11181F10191B1F172D210C3B32173625173B2417
3622242428221A1B2211171512150C12150C151A151F281F
283538364E484D6A5D607975649B9772A3846E9B92698582
6F636359614344582D4443173B300C281C0C1A160C15120C
12150C110E0C110E0C110E0C12150C111A130C2220153B30
2359571F88A552AFB06FBA9372B1A286BBB756B8D0157AB1
1A77A51551632333431F262D151517110E0C0C0A01090C01
061101090C01030C0102090C03090C030C09060C0A031108
030C09080C0A0C0C0C0C0C0C0C110C110E0C131117171522
232338314C595682857DAC9A94BBB6A6D1D1B0D1BFBAC3B1
AEC3AC9EB185A4A84E867E4E8B48228B1E007D08006A0B01
4E170C65350C582B22643F4B7D7059878B6F699A6E5B9577
528B6D3B778F2849590C2D2A0617220C0C22111D221A2D2C
952500863D0C86562D9D59438F6E4D865D3765352D483417
3A3B172A31221A20221515170D0C17110C0C11080D090817
0B0D170C12171A202233362D4A533860653880864E8BA363
B9B363A7BA79A2986F8486636A595A4D5843364E3D283B29
1A2D1D1B1F1715120C110E0C0C0C0C080C0A060C0A0C110C
15120C1A160C2D120C3F170C4D180C481F0C4D270C3F2A0C
3B0F0C2D160C150C010C0901080C0A06080C03040C03030C
02040C02040C08080C10080D100C0C140C0D230E0C36130C
3F1F174422173F1F172D120C230C0C150C0D110C0C0C0C0C
0C110C0C110C0C110C081109081109081109081109081109
0811090D150C181A0C212317363122525C385B785D529A90
5BB0AB60B7BB60A5A2608B8F4E6F6C3B58481F3738152122
081A120817140611090308010805010600000A11011C1F01
2123172A31222D4A3D365C463B614F566F4E6073594D5059
3B4D4E3643432D2D2D292D221B1F17151517140E0C0C0401
110C0C110D01280F013108014D17174A211748382D364436
283B43234A4E285259316279366F79526F79537367587369
60736A627D60697D6376814E616543606138585538655D43
7D752D786C4373502D6A4F2258512D545838444E38303622
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="2" name="C-91_3" size="600 400" center="0 0" scale="150" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.160784" brightness="37.9" gamma="1.7" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="julia3D pre_rotate_x pre_rotate_y spherical ztranslate crackle sineblur curl post_depth" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" julia3D="1" julia3D_power="2" coefs="-0.393281 -0.890476 0.890476 -0.393281 0.306972 -0.191666" chaos="0 1 0 0 " opacity="1"/>
<xform weight="0.5" color="0.274" var_color="1" color_speed="0.286" symmetry="0.428" name="" animate="0" pre_rotate_x="-0.005" pre_rotate_y="0.078" spherical="1" coefs="0.95048 -0.44795 0.44795 0.95048 -0.008649 0.257729" chaos="0 0 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" spherical="1" coefs="0.960135 0.139486 -0.139486 0.960135 0.167535 -0.353315" chaos="1 0 0 1 " opacity="1"/>
<xform weight="0.01" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" ztranslate="1.25" crackle="1" crackle_cellsize="1" crackle_power="0" crackle_distort="2" crackle_scale="0" crackle_z="0" sineblur="0.016" sineblur_power="10" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" curl="1" curl_c1="-0.749" curl_c2="0.516" sineblur="0.025" sineblur_power="10" post_depth="1" post_depth_power="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
553924473622413122352E1C253119253A191F35201A311D
19241624211C2D31204A341C5B3F2962402565462A644936
6B4C2F684A2E6945256A48236A482261521B454C233A4827
323C232A2B1B1D1814100F0D040404010100050400150C07
2C1C0D3E220A552C1079381082441397671FBF793ED38D4F
CE8A5BD88E5FF7A472F6C173F5BD8CF7C2A3EBB998E9BB97
DFAE8EC5A78BBDB175B3916E9470566C57444152263F4424
373B1A3B3C2E54473E80644EA47B5BC28C68CE9B7CD49E70
D8976FD09470BF7F599F734E896A2981542A804F2789562B
925C30A0694AA97657BC8660D09350C47F46B08235A0560B
89470D81380D672704512B14412812402512462D174D2C19
4C281C3F2A193721132B1E0D1D200F1A220D142A15122714
1321120908040201000A0501140903130A05150B0A180E0D
170F0D171310231C163C25174934175C3B0E613B166E3E0D
6C391A5E341C5D31164B1E0B41110F331D0F2F1D07381D08
411D055328086532057A460C805431906B50B08C6CBDA078
CEB39EF2B48DF9C699F5CBB3DFCDB7D1BFA7E7BB96E4B393
E6AA86CF996DE0A88785481B833C127A3F177742228C4E1F
A85513B9752AE3842AC97826B6612B99672CAA6732B9765B
BC8E5CC59C80C4AA89D7A686DDB776DDB776EBB35EFEBB2E
CB9D50BF814895622B815123764922683F1F5F3D185D3A1C
5A341D513118523015522C154D2F15452D153D2712391E09
2D1E0B2F1C0E251E182C2219392C1B4E31216043256A4F3A
7A573B7D5A3E72503472512E5C542D5E4936604029634022
633F1F5C3D21593A1E4A311B302921241D171D15121A120F
22150C23170B251B122D20102E2015322E15313514382610
3F0F0F4415033A170333190230160525140C1A110C1A0D07
22160A2E180B3C200B462C1F4F3D316A5A4D9772579F7B61
B08F6C9D7A5E7F6846755236684A2E6B3E1D70401C743C23
814926915C3098714A906E5386634371613F4D6436345123
37613D5468336C743B9776539E7557A96B52A066508D684D
81533B794C2B764A2574441E65462961432B5A3F2E593D28
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="3" name="C-91_4" size="400 600" center="0 -0.26" scale="400" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0862745" brightness="10" gamma="1" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="gaussian_blur blur_circle flatten spherical log cross wedge epispiral butterfly curve blur3D crackle julian post_falloff2" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0.608" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" gaussian_blur="0.304" blur_circle="-1.01" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="15" color="0.731" var_color="1" color_speed="0.13" symmetry="0.74" name="" animate="0" spherical="0.1" log="0.068" log_base="2.71828" cross="0.019" wedge="-0.005" wedge_angle="1.5708" wedge_hole="0" wedge_count="25" wedge_swirl="0" epispiral="-0.1" epispiral_n="2" epispiral_thickness="0.1" epispiral_holes="0.1" butterfly="-0.1" curve="1" curve_xamp="-0.777" curve_yamp="0.772" curve_xlength="-5.702" curve_ylength="1" coefs="-0.433438 -1.5845 1.5845 -0.433438 0.733855 0.105105" opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" blur3D="0.226" coefs="1 0 0 1 0 0" post="1 0 0 1 0.102084 0.012086" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" gaussian_blur="0.007" crackle="0.225" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" coefs="1 0 0 1 0 0" post="1 0 0 1 0.102084 0.012086" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" julian="2" julian_dist="1" julian_power="-2" post_falloff2="1" post_falloff2_scatter="5" post_falloff2_mindist="1.154" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
ACD2BDB0DAC8B0DAD7B0DAD79BCDE172C5E1599CBC4689A9
44758D426A7A58684B69593981492D915A1099590FAE6734
E2A042EA922EC27015B23900AA1900811D077D381B99440F
AA632AF6B636F6BD53FAD28BE2CFAAE2EAC6DBEDCED3F6DE
C7F6F3C7F2E6BEEED9C0E6DDBCDBE2B4DAD7ACDAC9A8D2CD
8AA1BC5C94A0447A8D3A617A2F5A712A5D7A3B6771518084
759688B9AE7EF2BD67CA9D74B66A3CAA300E9932057D2112
7123135C1B1E50211E3A3A422D4A5531595331505538535E
41615D4C6D585F6D5570916574A68483BAA3A0D2BFACDAC9
B3D5E2B3DCE2BCDBE2C7E2DFCCEAD3C8EAD9C4EAC7B6EACE
B7E6CFB3E6DFB3E6DFAFE6DFAFE6E0AFE6E0AAF2E9B6F2F4
C2E9F4BAEAEBB6EEEAB6EAEBAEE4EBAFE6E0AFE2E2ABE2E1
A3E6DF91C3CF5EA4B24F98A03D7A964C87964D8C9770A293
86B6A5A5CAB1ACDAC9B0E2D3B7E6DEBBE6DEC3EAD9C4EAD9
C4E6C8BCE6BEB1DAB897BE9D8E9578796A4A7565418D695C
A68377B6A992CAD6A2CEEEBCF4F9CDF6FED7FEFEE0FEFEFE
FEFEFEE6FEFEFEFEFEFEFEE0FAFAE0E9FAE0DEFAE5D3F5DE
D4E6CFC5DECBD8EEC5C0DECFBCDED2B7E6E0BBE2D0BCDEBF
B4DEC4B8DEC2B7E2D1B3DED4B4DEC4B4DEB4C6D2A2A1C699
8AB8BC8EBEAEA5CAB1B5D2B5BFD2B5B0DAC8B4E2C3BCE6BE
BCE6BEB8E6CFB8E2D1B4DAD7AFD6E2A6D8EBA6E2F4A2E7F4
9AE8F49AE3F461CBEB3AC0D837B7CE2BA6CF3E97A93A797A
43695B3555484251464D4D324C3F3C425953614C39503D28
60241D7D1D127D21126427275C40453D4F553C525E4C5967
3E6F7A58958B77AAA9A9C7CFBCDED2D2EACFDAFAEAE6FEE0
F2FEE0FAFAE0F2FEE0F2FEE0FEFEE0F6FED7F6FED7F8FECD
FEFEC4FAF9C4C4DEBDDAA898D6B185B6685881772D81552D
7D523769514B81816788A19FC7CEACAEBA91969D807A8D6F
668167567D795C928C629CA97AB3BC8BDEE186D6EB71CEEB
53C4D84595BC32747A284E5E22394B172E38262C2115201A
2E3820501D154C1D1F441D2044231644221F424832354429
4248322A482936483F4561504B716459858478A29F9EBEBA
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="4" name="C-91_5" size="400 600" center="-0.0252366 -0.0378549" scale="313.86" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="oscilloscope" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="1" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="1 0 0 1 -1 1" opacity="1"/>
<xform weight="0.5" color="0.333" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="1 0 0 1 -1 -1" opacity="1"/>
<xform weight="0.5" color="0.91" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="-1 0 0 -1 1 -1" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="0 -1 1 0 1 1" opacity="1"/>
<palette count="256" format="RGB">
DA723DF99A64FEAD5BFFC885F3B699FFA475FFA15BE6895D
CF734AB36235A05B3C70594B6833234B361745242F5C2A29
8F3400B23A00C74D04D46925FF8744FF8E35F68618E25A0C
D92600D3310394502B816A647A737A686A6965624F434A42
0F292A03201C01152006070C1601001F0000220001340002
3C00003C00003D0100410000541202490000400001280501
25201D3E303F41525C42606B4478865381A256808E4D6871
534A4B44242F3734232B3D313C4043305A68326B7E488194
56818A6686836B7E8259585D4E44421F213A071E2E021416
440A007D0F009725019F2402981B008D1A00790800400001
2610020A292E1F576442717B62999C99BCB6D2D3D8D5D9E4
D3D4D9CDC9CACCB8ADB99F9EC4947EDB7956BF6832A44227
B22F01A239029B4512A34C31AA685A9094979FA0A2B3A8A6
D6B0A5E1A89DDB926FD88769CC8A68CE886FBF927FA6A2A3
959FA08595957E614F5F39302A2927021621001220001125
000C2902122B0F2D2F484745605F5D7C8A8D86A4AF83ADC3
A4CCCEC7E0DDD4DAE6D5D2DDD9D4DBD3CED2BFBDBEA5B4BB
9ABCBE99BCC09BC1CCA3D8D0A9D0D5ADC7DEA8C9CEAEC0C4
B7AFADA2B1B891A8BA85ABAC6C9494387276133F4C011D32
001725040C0F010101000000000000000000000000000000
1A00030A0000000000000000000000000000000000000000
0C0002010F122915213D212D6B3E38976959A98382AE918B
9A7972A0624B8A4736612A233F1E272101021D00003E0D00
4D1504881A01962600A63000A03F0CA04C2099502F9E5D4B
916F6D859497768D9F608EB06091A269969B899CA3A0A29F
B5715CB46956BB6840D7874CF69A69DCAA9FDFBCB6F7C8C0
E39FCEA6ACAC76809B3F5E7221395B001E38080D112E0501
6301008B120194120292180182110156000134192A192A3A
154E6B29508B215B711E4B5E0025370032401A51662D677D
4A7B89537D8B567E886078825A768453757E5C69716C727E
817F80798792789CA880ABBC91BCCCAAD4D3C3E6E8CEEAED
E0EBEFF2FDFFFDEFEEF1F2EDEBE1E0EDC2BCDEAB90FF9E41
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="5" name="C-91_6" size="800 800" center="0.118498 -1.95252" scale="264.902" rotate="-114.23" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0862745" brightness="50" gamma="1.66" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="-0.834" cam_persp="-0.1698" cam_yaw="0.219039" cam_pitch="0.520108" cam_dof="0.509" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="spherical hemisphere zscale ztranslate post_rotate_y falloff2 pre_falloff2 linear" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.688" color="1" var_color="1" color_speed="0.0175" symmetry="0.965" name="" animate="0" spherical="0.383" hemisphere="0.176" coefs="0.499254 -0.288728 0.189685 0.493702 -0.001581 0.021889" opacity="1"/>
<xform weight="0.95" color="0.816" var_color="1" color_speed="0.0515" symmetry="0.897" name="" animate="0" spherical="0.383" zscale="-0.385" ztranslate="-0.071" post_rotate_y="-0.12" coefs="0.11581 1.20736 -1.19236 0.253798 0.328571 -0.783591" opacity="0"/>
<xform weight="0.016" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" falloff2="0.206" falloff2_scatter="1" falloff2_mindist="0.5" falloff2_mul_x="1" falloff2_mul_y="0" falloff2_mul_z="0" falloff2_mul_c="0" falloff2_x0="0" falloff2_y0="0" falloff2_z0="0" falloff2_invert="0" falloff2_type="2" coefs="0.947143 0.320811 -0.320811 0.947143 1.23694 0.448032" chaos="0 1 1 " opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="5" pre_falloff2_mindist="1.826" pre_falloff2_mul_x="1" pre_falloff2_mul_y="1" pre_falloff2_mul_z="1" pre_falloff2_mul_c="0" pre_falloff2_x0="-0.718" pre_falloff2_y0="-2.335" pre_falloff2_z0="0.165" pre_falloff2_invert="0" pre_falloff2_type="1" linear="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
6A34586B516A615B676C71747365766C61658E4B52B0391B
AC1305B41322951F2F7C232987111FB4171ECC1B35C72516
9E4912B59644C29D57F5C966F6D76DF5D96BF5D872F4D27B
E9CB85C6D590AFC98A7EA68172937484915994854CAE4F31
C54335CA6C52B7865DA7886CA6687F9E566E8E32477A2D3F
752D4369262D6B5E317F4D1C9F2000C51901DB1F04ED2323
E8232CE02425AE16255A2225492D3C4042512A5D7A338197
3D87A45A97AC7F889792817A9D8559AA433295203B912535
601A324F1D294A4B454E6D5E5E91805F9981869777A7AB78
D8C277D0B55ECEA144CA9F41DA9D42CE9F57D3A75CF5B875
F3C476F9C478F9C47EFBCB76FEDE77F5E075F9DA80EEDC92
DBC981B2AC6E94AE647DAC4C9FBC68C1C66AC9DE81E9E288
CCCC9AC1C6A884C3AE62B7A23DACA612B3BB0AB4C120AC9F
3DA58A5B9D8F55856D61544B582B485A2B613B3D6D1A777F
1E8D981797A02C95B535A1A33EA7963CA5963D969A18919A
009C9D0198AD02A3AD2DA4A24CA69C589EA05C9C9E8A9F90
AE9C74DFB678FCAC71FFB96BF7A863DC9964CD9C4FE5CE5C
DCD56ADEC670D3C473B69F6B9E8C788A716D678A72887B59
7B6A3681813B1EB0A3519B9C83A38CB5BA80D3D476E6D86D
C6D175A4A27C5FB77D53A69C29ACB600B0BE0BBBCA04CCCC
36CACA45C2B24294B93A96A558A09F61B4B873C6CE77BCA0
8AAE949BC55FCFDF63F1D87BF3D978F7D478F4D674F0C76B
CDC563B29053A166568F3B53992F3BA5233FA82141CB283D
D42039F02A3BFA2946F7263CF62636EB2A2FE42632D3522A
CD5344B8785DD69143F69247F57F39FC6959DE6459C07F59
A88F57A9A252A69257A189678E6D5A855F5C8E6D80A4986E
E3AE84FFC28AF8BD79DBAC829192A45594A3488F953284AC
2473942650762C3A61253D57343A50602134B41E27DE2628
ED213AFA2736FF2330F52532F52A3EFA3C46F74344FF786C
F9A672CA8D7092A27D6C9A8D5B9B9B5C8D9B73868A767283
525A7E48646F2A7878226F7F14718307677323465A244554
31624C47726B438D7639889733687A48616568394D7B2F4B
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="6" name="C-91_7" size="400 600" center="0 0" scale="310.584" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="10" gamma="3" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.025" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="linear sineblur hemisphere spherical pre_falloff2 bipolar" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.75" color="0.797" var_color="1" color_speed="0.3345" symmetry="0.331" name="" animate="0" linear="1" coefs="0.196021 0.561164 -0.561164 0.196021 0 0" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.5" color="0.66" var_color="1" color_speed="0.041" symmetry="0.918" name="" animate="0" linear="1" coefs="0.29363 0.516828 -0.516828 0.29363 0.324379 -0.713634" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.5" color="0.585" var_color="1" color_speed="0.973" symmetry="-0.946" name="" animate="1" linear="1" coefs="0.194678 -1.20829 1.20829 0.194678 -0.350329 0.791485" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.25" color="0.877" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="0.562994 0.565605 -0.565605 0.562994 0.557932 0.609833" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.05" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" sineblur="0.01" sineblur_power="10" coefs="1 0 0 1 0 0" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" hemisphere="0.26" coefs="1 0 0 1 0 0" post="1 0 0 1 0 -0.25" chaos="0 0 0 0 0 0 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" spherical="1" coefs="0 1 -1 0 1 0" chaos="0 0 0 0 1 0.5 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" spherical="1" coefs="0 -1 1 0 0 0" chaos="0 0 0 0 1 0 1 1 0 " opacity="1"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" hemisphere="0.26" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.25" chaos="0 0 0 0 0 0 1 1 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="1" pre_falloff2_mindist="0" pre_falloff2_mul_x="1" pre_falloff2_mul_y="0" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="0" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="1" pre_falloff2_type="1" bipolar="1" bipolar_shift="0" coefs="1.15931 0.609897 -0.609897 1.15931 0 0" opacity="1"/>
<palette count="256" format="RGB">
44B4B63BB6B43BAEB535AFB239AAA43AA9A2229EA0157FB1
2391B4249EA13BA9A669C4BDC5C0ADC6BFADEBB7A1E9A892
F1A78EEFA18AEE978EF1948CDF947FE19478DB8F78D4765C
D4745CCF7158CF6F56CE6C53CB6B53CB654CC1533AC2543B
CD674ECE6C53C55E739D516D6B8C7B419C93198C9F10719B
0E67A10C63A630439245298D491E87461A793E1978312183
053C8F0557A30356A4003D90212A893826893A288B441F86
481C7D401B7B382988113B910557A30860A80662AF0457A3
04519F02388E2C1B7949176C561768721147740D45760F47
721B5057166853156A461A7B441E8B3A288B41288D4E238F
5A2B954E21864124903321842B1A762A1B7801388B08599B
0D6E9B1670951C919A48A79F5CA2A07C9486B98F77DA866C
D2765FC8624BAC1B6AA51C6AC55F48D07058E29176E59490
EE8A96EE7898E87191E0568ACE3295AB1C6E9A175D78135F
7A134A7A134A75124877124C771260754092746D9668968B
58A4973590AF1372A20B5C9E33268F481D7952176B831B50
A94F44BF4F37C15139CF6950D17159D2785ED47C64D87E66
D67E66CE7A62C85C74A62578951B70971D74AB5596B97E92
D6947ADF9C81DB99839F90797A978552B0A2339FA21374A1
1266AC4230935D2A89901D6AA61E73C65F74DA8E76DF947D
E6A192EAA794EEB8A0FABE9CFBBEA1FEBF9EFEBD9DF8B491
EBB090D69792D45FA3D659A5D854A7EE5A94F2808AED9581
E49479DC917AC5589CB32B80951E6E911A6C97196DB41B6D
DC3891EB5793D88068D579600965B0096AB10A6BB20F6EAE
106EAE1D8F99538B808C917DD48E75E09882F5B08FF9B590
FBB591FBBC99EFBE9ECCBDAAB5BCAC5DAB9E2B8F910C689B
08559D3B298C3C1A784B18744F156C541973532588423093
335D974F879E93AC97B39F86DD9984F497A1F08398DF6A9E
D43A9A9E1D707B256458196A4C176F361B782E1B77332385
3D2D9051339746669976919AC3B89CE5BCA0E7AA95E19F89
E09985DD957FCD868EB84E8CA52477951B70941A6F941E6A
A02274BD4283D1788CE19885E6A58FC5BEAB89C3B74BAFA5
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="7" name="C-91_8" size="900 934" center="-0.213 0.328" scale="747.23" rotate="8.42" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0823529" brightness="10" gamma="2.25" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.02" cam_zpos="0.219" cam_persp="0.6469" cam_yaw="0.0226893" cam_pitch="0.493056" cam_dof="0.5" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="spherical post_curl3D crackle post_falloff2 linear" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.4" color="0.9" var_color="1" color_speed="0.025" symmetry="0.95" name="" animate="0" spherical="0.27" post_curl3D="1" post_curl3D_cx="0.044" post_curl3D_cy="0" post_curl3D_cz="0.097" coefs="0.38078 -0.269323 0.269323 0.38078 -0.057111 0.12887" chaos="1 1 0 " opacity="1"/>
<xform weight="0.6" color="1" var_color="1" color_speed="0.25" symmetry="0.5" name="" animate="0" spherical="0.196" coefs="0.585134 0.508912 -0.508912 0.585134 -0.083411 -0.308698" opacity="1"/>
<xform weight="0.01" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.196" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0.5" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="10" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="1" coefs="1 0 0 1 0 0" post="-102.922 0 0 -102.922 -0.086978 0.641696" opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" post_falloff2="1" post_falloff2_scatter="1" post_falloff2_mindist="0.5" post_falloff2_mul_x="1" post_falloff2_mul_y="1" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="0" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
A72D0AA7280C9E2B118C33147234254B35363330232E311A
2D2F1E382D245E312B8A24119E1D08A22109A62608A12A08
9B2D0B82310F503E1F312D192B26152320121E2212222414
2E2A1A332D2B37284F3F2A77433B7F433C843F3F7C3B3850
3F384D40364A393B2E3A34283D35304838484D60474E5E79
5460875D5C7C825A4C993B1FA6400EAF340AB1300CB42614
B12917AC320FA63409A04609AC5118C15E06BF6E09C68207
CB8507DB8602D88207D16D07C25F08C0381BBB3414BB3013
B6280DB7250AB3270AB12607B1240AAD270BB02907B12207
B02208B12208B12208B12207AE2308AB1F09AC2209AF220B
AF200BAC2209AC2006AC2208AB2108A62206A82509AA2209
A71D07A61C07A61D06A01D08951F0E76260F3827132C2112
2A1F112B1F112F261738291B722A0C8D2C0C9B23099D280B
972D118136438345615C6983588A8E63848C5D76975D708C
536E8042744A4B6F346472246D793B84926CAE9689B89D8F
8F95AD6E9EBA748EB26C6AA54F62A7424F8C443E7C5C3B47
722A35962B15AC311AB13941B2696FB68091C194AA908AB4
897B90855E99A63469A12D30A92D11A32C13952C107E2B0E
4329182D2112261C12231B112920112C2217332A19613414
8C2B0E8F340D8C380D824D1256462036322339271D602510
87250F992409A22508A7230CA0271691352781324B63387E
4D3481493A87514691624B94744D8CA6365EAA3030A72F2F
B1382FB1365DA8386E7C64726A8A90739C81B49D71DA9E62
D8A146918F37936222795A1479521D433D161517121D2113
262817363223593C2F844128916017A26211AD7612C8832C
DAA440D6A338CD9428A6911F8B892D81632B42482A31331F
2927152323142323112823102B2813322C1A6832198A3115
8D3814793B2B53403C3F322F312A1D2823151F1F141D1F12
191B141D1F131B1E111E1E131E21132628162E2E1A363627
39474E416543436B4B5E707C61977F868F6194793F9A7736
995D21973F0D913214862D2B7C3A51613A834E4391415189
51598A5A6E955971935B627E66584F874B429E391BA63D14
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="8" name="C-91_9" size="800 800" center="0.281 0.105" scale="419.8" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0980392" brightness="30" gamma="2.7" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0.468" cam_persp="0.45" cam_yaw="0" cam_pitch="0.698132" cam_dof="0.5" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="gaussian_blur log flatten linear3D eyefish bubble ztranslate bwraps butterfly cross Spherical3D waves2 wdisc post_bwraps crackle blur post_falloff2 pre_circlecrop zscale zcone julia3D post_curl" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" gaussian_blur="0.5" log="0.01" log_base="2.71828" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="5" color="0.557" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" linear3D="1" eyefish="0.083" bubble="0.023" ztranslate="0.203" bwraps="0.06" bwraps_cellsize="0.5" bwraps_space="0" bwraps_gain="0" bwraps_inner_twist="2" bwraps_outer_twist="1" butterfly="0.096" cross="0.003" log="0.1" log_base="2.71828" Spherical3D="0.1" waves2="-0.01" waves2_freqx="5" waves2_scalex="1" waves2_freqy="5" waves2_scaley="1" waves2_freqz="0" waves2_scalez="0" wdisc="0.35" post_bwraps="1" post_bwraps_cellsize="0.1" post_bwraps_space="0" post_bwraps_gain="1.5" post_bwraps_inner_twist="0" post_bwraps_outer_twist="0" coefs="-0.956946 0.937098 -0.937098 -0.956946 0.722127 -0.133305" opacity="1"/>
<xform weight="0.125" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.358" crackle_cellsize="0.5" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="0.125" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" blur="0.1" ztranslate="6" crackle="0.358" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" post_falloff2="1" post_falloff2_scatter="1" post_falloff2_mindist="0.5" post_falloff2_mul_x="0" post_falloff2_mul_y="0" post_falloff2_mul_z="1" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="100" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="2" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_circlecrop="1" pre_circlecrop_radius="10000" pre_circlecrop_x="0" pre_circlecrop_y="0" pre_circlecrop_scatter_area="0" pre_circlecrop_zero="1" zscale="0.15" zcone="-1.5e-05" julia3D="2" julia3D_power="-2" post_curl="1" post_curl_c1="-0.26" post_curl_c2="-0.027" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
B00B33A20D3A950F42910E428D0D43820A43770B47670F4E
5C0C485109434C084647084A3D0E4E361553292A5C2B3460
2D3F642C4D5F2C5B5A335F543A644E4964454E5C3E5E4A2F
6F4032813735853235892D3589203B891C427F264A71234B
64214D5D214B5721494B284A3F33503A32553B35573C485A
39445D364160343C6233386530346A28286718135013114A
0F10440C133D0A1736101E241E261B282C1B2C311D483419
4D351D53372252382E483B32433B2D3A4327245B252E5B1E
395C1741571349531051550A634E117641188032227C2A2C
79272F76243273203B731D3E771D3E7A1C3791112C9B0E27
A50C23A80B23AB0A24B10D25B80E24BA1222B513279E1733
9716329116317B1535680E3E51114A3F114F221B5B1F235D
1D2C601A3E5D164C5B105F590F74550D85480F88441C853F
247F392C7934436A3058572B74462D91332BC01E2BC81B31
D11837DA1645DE1048DD1245E11543DF1C47DB173FD41031
D30C26D51024D71022D50B1ED0071ECD0728C8083DC2093E
BC0B3FA70E45960F5282165B6E255A57385244444E345349
26653E1D722F166B281961211D5A1E26541D2C452538362B
4831315633385A3A455A454E5E52575E5E53526954456F57
456F635168615C625867574E7D4A4B9B3949B3303EC62B30
D42921DB231CDA2114D02110C21F0AB31D08AA1B07A61A09
A2140A9D120AA3170AAE1F0AB5220BB3200AB31E0EB32014
B21D20A61C2B9C14398F14438110516D155D5F156A5C166F
5413724A18703C246F41326F463B704D41714A436F4E466B
594466624463634462693A5F6C2E5271224E6E23508C2450
8E1E4E90184C9512509B0D54950D52900E51670C53500950
39074E300D472813403319343F1F28431D22471B1D611816
6B18157619157D15168412178913198F141CAC1917B01D16
B42115AC271FA52E2A9D342F953A3580403D633A463B3B59
393352382C4B4120434A153C4D143651143054151D4D151F
4615223D182C351C36331A3A31193E33144645105476195D
8C1955A2194EB51847C91740CB163ACD1635C3122FB90E31
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="9" name="C-91_10" size="800 800" center="0.643845 0.493493" scale="612.58" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0.00784314 0.160784" brightness="5" gamma="1.82" highlight_power="1" logscale_k2="0" vibrancy="0.94" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0.664" cam_persp="0.2011" cam_yaw="-0.340339" cam_pitch="0.698132" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="Spherical3D flatten pre_falloff2 hemisphere crackle post_curl" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="2" color="0.887" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" Spherical3D="1" flatten="1" coefs="0 1 -1 0 1 0" opacity="1"/>
<xform weight="2" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" Spherical3D="1" flatten="1" coefs="0 -1 1 0 0 0" opacity="1"/>
<xform weight="1" color="0.226" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="10" pre_falloff2_mindist="0" pre_falloff2_mul_x="0.05" pre_falloff2_mul_y="0.05" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="10" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" hemisphere="0.25" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.25" opacity="0"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="1" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 1 0 " opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="5" pre_falloff2_mindist="0.8" pre_falloff2_mul_x="1" pre_falloff2_mul_y="1" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="1.5" pre_falloff2_y0="0.1" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" Spherical3D="1" post_curl="1" post_curl_c1="-0.095" post_curl_c2="0.081" coefs="1 0 0 1 0.436567 -0.174627" opacity="1"/>
<palette count="256" format="RGB">
CE9047B09C3DAA9D35409E0A37970B2F900D47482635372A
341A49282A512F43664638625E2E5E863263AF3669C21469
A4020D8D021F7D162964727F627C8A6186965C96A146959C
5CA975659F62918A808B9A9986ABB3A2B0B3BEB6B4E0C29E
CB9B84BC5F58C71569D50D70DC106FE3146ED54E48DD9450
E7CC7DFAF98FCCE37BBED266B0C15166953727535E146078
0F6C7D07556C08546C434C514D4B57584B5D7D596780736D
99695B756B389C3F1D9531178F2412851D1C6E0A2C5D173B
614339648F3DA0A42CADB747E6ED6CFCFC76E8F174E9AC75
E38047FB604EFD5C40FC6743FC7347E29835FBB039E9D03F
DFD945B6CA5BA2C42F99AF2881961D5B971D66692264462E
7B503D90676B9E6E4AB07531C97546F76450FC564AFD573F
FE5540FD5147FC473CEB1170E71171D8166DBE116A6D1551
3617402C305619496D154B651A385E062D58172854331747
520A3A6606345003393609402C0534101348121C4D261A4A
271E2113220F3320223D1C2540410869650C7B8934AFAB30
B89634B17F2A9E4A40955B43B48446C6A65DFBCD9CF3EBBD
FDFAD1F5F8E3F9F6EFF8F8D6D6B0C7D15B7DE01370EB1170
F84139EA462381591EC19E80BAAE86B4BE8C87A4935B8A9A
5F9AA364ABADACC9C5CADED5E9F4E6EDDBCEF1C3B6D5AA7B
BA9141AA7C2D9B6819593C1C6122246A092C69092C680A2C
65092D63092F3E02387B0850B90F68CB116BDE136FE3126F
E8116FEB0663CD091F963113C0571BEA7E23F19632F8AE41
FA9942FC8543F64233EE3E2AE63B21DA5D34CF8047D08E3F
D19D37F0C63EDCCA38B27920B83D12BE0105C5130CCD2613
DA2D1CE83425A74043902C3779182C60273F473752374257
284D5D15506E1B677E2F838E51969E74A9AF7FB3B58BBDBC
D1D4C1F0F1CFADC7AE7AA8A14789952B6C82104F70094669
023E630A2F591E380927920838701D494F334A403D4B3247
721752B91166E00C73E60E72ED1171ED1172ED1173F40F74
F40C72F30368F40268FD0772FC0872FB0A73FB0571FB016F
F40268F30368E82742E83233E93E24F24530FC4C3DE98138
</palette>
</flame>
</flames>
<flames>
<flame version="EMBER-LNX-1.0.0.19" time="0" name="C-91_1" size="400 600" center="0.693 0.767376" scale="260" rotate="-114.31" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0.0941176 0.0941176 0.0941176" brightness="5" gamma="1" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.0211199" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="pre_falloff2 elliptic flatten linear splits pre_gaussian_blur cylinder loonie post_falloff2 pre_log post_log" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="5" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="10" pre_falloff2_mindist="2" pre_falloff2_mul_x="0" pre_falloff2_mul_y="1" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="0" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" elliptic="1" flatten="1" coefs="0.721805 0.000928 -0.000928 0.721805 0 0" chaos="0 0 0 0 1 " opacity="0"/>
<xform weight="15" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" linear="1" splits="1" splits_x="1" splits_y="0.099" flatten="1" coefs="0.81837 0 0 0.81837 0 0" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_gaussian_blur="1" cylinder="0.25" coefs="1 0 0 1 0 0" post="0.1 0 0 0.5 0 -1.5" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" pre_gaussian_blur="1" cylinder="0.25" coefs="1 0 0 1 0 0" post="0.1 0 0 0.5 0 1.5" chaos="1 1 1 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" loonie="1" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="1" post_falloff2_type="1" coefs="1 0 0 1 0 0" chaos="1 1 1 1 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_log="1" pre_log_base="1.98228" loonie="1" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="1" post_falloff2_type="1" post_log="1" post_log_base="1.89828" coefs="1.38792 0 0 1.38792 1.4039 -1.49784" opacity="1"/>
<palette count="256" format="RGB">
2D0400430600520D04881E03C73215DC4A33DA6932B18566
559E61564E775932385A1B1B8C3E15C3510FE47A43E59C65
FFB68495DDADE4CD9DFDC19CFBC397F0CC89DE9C6DDE7C49
DD4C31D94734E12D1BD00C06A80200710F00550B00430312
1F16241B080A1E07032A09003C13034512124F171C3D2F1F
27221812161E0C0F190909100C0609060208040404000503
0005000303030800050D00070F01030E02000E02000F0200
110B000D09000E03000C0400050700030303000104000002
0303030501030F01001B0200200004310A004B09004D070A
3D08002C09002A02001D03001203011100060F0103110200
120800120900160A001F0900220400200100180200120200
0E01000C02000B03000704000503000505010705010A0802
07070E14140C111C1613251938243C474C2F653D536B6295
838EC4E18350DB923FD26A2FC23907BC161F9F080C730700
5910134E222740223A382328262626211E121515150D0D16
0C0A17180709150C060A14110019160012120B0B13131313
14170B0C211915152225151920280E2E2117273416361C25
530C0C5214037A0001650C00520001350000220005180A0A
201D111316250B2A401B3D36253B52305C385031504B2834
4C2B1D37231833140D2A07001C07021804001E08002E0D00
510800650200950B00C50400CA060FCC000BAB0400940000
5B0B003B09002607001A0600170001160001120502160E04
2B0704490C00601F006225009C3C29616A94595382922C1E
920106A40E00C12100C41000BA0001A000037302004C0100
3300011A04001001000705000505010303080808080C0503
1109021C0200290200390900481000520703520C112C4146
25605C006F75057181055F79065E6E22585E31493D3F2F23
32241A281311301405390E00371807371311300909240800
2605001B08001B00002000052A00074C05005F0C00841600
BE0506C7240ED63839B56166588686177870225A561F3936
181D27091E0C0314070B0B050D0A060F0705100E06101009
16060815050E11070A0A0A0503030800080A0005090F0702
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="1" name="C-91_2" size="400 700" center="-0.002 -0.174" scale="1000" rotate="-32.42" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.105882" brightness="3.32174" gamma="1.17" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="blur gaussian_blur log flatten linear sinusoidal cylinder cross wedge epispiral waves2 y post_bwraps crackle spherical julian post_falloff3" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0.509" var_color="1" color_speed="0.679" symmetry="-0.358" name="" animate="1" blur="0.618" gaussian_blur="0.243" log="0.075" log_base="2.71828" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="5" color="0.368" var_color="1" color_speed="0.056" symmetry="0.888" name="" animate="0" linear="1" sinusoidal="-0.011" cylinder="-0.02" log="0.0125" log_base="2.71828" cross="0.005" wedge="-0.0025" wedge_angle="1.5708" wedge_hole="0" wedge_count="50" wedge_swirl="0" epispiral="-0.1" epispiral_n="6" epispiral_thickness="0.05" epispiral_holes="0.1" waves2="0.025" waves2_freqx="10" waves2_scalex="0.5" waves2_freqy="20" waves2_scaley="0.25" waves2_freqz="0" waves2_scalez="0" y="0.1" y_hypergon="-2.752" y_hypergon_n="5" y_hypergon_r="0.683" y_star="0.473" y_star_n="10" y_star_slope="1.5708" y_lituus="-0.302" y_lituus_a="0.787" y_super="0.178" y_super_m="10" y_super_n1="10" y_super_n2="1" y_super_n3="5" post_bwraps="1" post_bwraps_cellsize="1" post_bwraps_space="1" post_bwraps_gain="1.288" post_bwraps_inner_twist="0" post_bwraps_outer_twist="0" coefs="0.243962 1.55516 -1.1943 0.51491 0.512189 -0.57003" opacity="1"/>
<xform weight="0.025" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.129" crackle_cellsize="0.5" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.2" opacity="1"/>
<xform weight="0.025" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" gaussian_blur="0.193" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.2" opacity="1"/>
<xform weight="0.0125" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="200" spherical="200" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" cross="0.003" julian="2" julian_dist="1" julian_power="-2" post_falloff3="1" post_falloff3_blur_type="1" post_falloff3_blur_shape="0" post_falloff3_blur_strength="20" post_falloff3_min_distance="2.25" post_falloff3_invert_distance="0" post_falloff3_mul_x="1" post_falloff3_mul_y="0" post_falloff3_mul_z="0" post_falloff3_mul_c="0" post_falloff3_center_x="0" post_falloff3_center_y="2.009" post_falloff3_center_z="0" post_falloff3_alpha="0" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
1F23211A11181F10191B1F172D210C3B32173625173B2417
3622242428221A1B2211171512150C12150C151A151F281F
283538364E484D6A5D607975649B9772A3846E9B92698582
6F636359614344582D4443173B300C281C0C1A160C15120C
12150C110E0C110E0C110E0C12150C111A130C2220153B30
2359571F88A552AFB06FBA9372B1A286BBB756B8D0157AB1
1A77A51551632333431F262D151517110E0C0C0A01090C01
061101090C01030C0102090C03090C030C09060C0A031108
030C09080C0A0C0C0C0C0C0C0C110C110E0C131117171522
232338314C595682857DAC9A94BBB6A6D1D1B0D1BFBAC3B1
AEC3AC9EB185A4A84E867E4E8B48228B1E007D08006A0B01
4E170C65350C582B22643F4B7D7059878B6F699A6E5B9577
528B6D3B778F2849590C2D2A0617220C0C22111D221A2D2C
952500863D0C86562D9D59438F6E4D865D3765352D483417
3A3B172A31221A20221515170D0C17110C0C11080D090817
0B0D170C12171A202233362D4A533860653880864E8BA363
B9B363A7BA79A2986F8486636A595A4D5843364E3D283B29
1A2D1D1B1F1715120C110E0C0C0C0C080C0A060C0A0C110C
15120C1A160C2D120C3F170C4D180C481F0C4D270C3F2A0C
3B0F0C2D160C150C010C0901080C0A06080C03040C03030C
02040C02040C08080C10080D100C0C140C0D230E0C36130C
3F1F174422173F1F172D120C230C0C150C0D110C0C0C0C0C
0C110C0C110C0C110C081109081109081109081109081109
0811090D150C181A0C212317363122525C385B785D529A90
5BB0AB60B7BB60A5A2608B8F4E6F6C3B58481F3738152122
081A120817140611090308010805010600000A11011C1F01
2123172A31222D4A3D365C463B614F566F4E6073594D5059
3B4D4E3643432D2D2D292D221B1F17151517140E0C0C0401
110C0C110D01280F013108014D17174A211748382D364436
283B43234A4E285259316279366F79526F79537367587369
60736A627D60697D6376814E616543606138585538655D43
7D752D786C4373502D6A4F2258512D545838444E38303622
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="2" name="C-91_3" size="600 400" center="0 0" scale="150" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.160784" brightness="37.9" gamma="1.7" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="julia3D pre_rotate_x pre_rotate_y spherical ztranslate crackle sineblur curl post_depth" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" julia3D="1" julia3D_power="2" coefs="-0.393281 -0.890476 0.890476 -0.393281 0.306972 -0.191666" chaos="0 1 0 0 " opacity="1"/>
<xform weight="0.5" color="0.274" var_color="1" color_speed="0.286" symmetry="0.428" name="" animate="0" pre_rotate_x="-0.005" pre_rotate_y="0.078" spherical="1" coefs="0.95048 -0.44795 0.44795 0.95048 -0.008649 0.257729" chaos="0 0 1 0 " opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" spherical="1" coefs="0.960135 0.139486 -0.139486 0.960135 0.167535 -0.353315" chaos="1 0 0 1 " opacity="1"/>
<xform weight="0.01" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" ztranslate="1.25" crackle="1" crackle_cellsize="1" crackle_power="0" crackle_distort="2" crackle_scale="0" crackle_z="0" sineblur="0.016" sineblur_power="10" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" curl="1" curl_c1="-0.749" curl_c2="0.516" sineblur="0.025" sineblur_power="10" post_depth="1" post_depth_power="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
553924473622413122352E1C253119253A191F35201A311D
19241624211C2D31204A341C5B3F2962402565462A644936
6B4C2F684A2E6945256A48236A482261521B454C233A4827
323C232A2B1B1D1814100F0D040404010100050400150C07
2C1C0D3E220A552C1079381082441397671FBF793ED38D4F
CE8A5BD88E5FF7A472F6C173F5BD8CF7C2A3EBB998E9BB97
DFAE8EC5A78BBDB175B3916E9470566C57444152263F4424
373B1A3B3C2E54473E80644EA47B5BC28C68CE9B7CD49E70
D8976FD09470BF7F599F734E896A2981542A804F2789562B
925C30A0694AA97657BC8660D09350C47F46B08235A0560B
89470D81380D672704512B14412812402512462D174D2C19
4C281C3F2A193721132B1E0D1D200F1A220D142A15122714
1321120908040201000A0501140903130A05150B0A180E0D
170F0D171310231C163C25174934175C3B0E613B166E3E0D
6C391A5E341C5D31164B1E0B41110F331D0F2F1D07381D08
411D055328086532057A460C805431906B50B08C6CBDA078
CEB39EF2B48DF9C699F5CBB3DFCDB7D1BFA7E7BB96E4B393
E6AA86CF996DE0A88785481B833C127A3F177742228C4E1F
A85513B9752AE3842AC97826B6612B99672CAA6732B9765B
BC8E5CC59C80C4AA89D7A686DDB776DDB776EBB35EFEBB2E
CB9D50BF814895622B815123764922683F1F5F3D185D3A1C
5A341D513118523015522C154D2F15452D153D2712391E09
2D1E0B2F1C0E251E182C2219392C1B4E31216043256A4F3A
7A573B7D5A3E72503472512E5C542D5E4936604029634022
633F1F5C3D21593A1E4A311B302921241D171D15121A120F
22150C23170B251B122D20102E2015322E15313514382610
3F0F0F4415033A170333190230160525140C1A110C1A0D07
22160A2E180B3C200B462C1F4F3D316A5A4D9772579F7B61
B08F6C9D7A5E7F6846755236684A2E6B3E1D70401C743C23
814926915C3098714A906E5386634371613F4D6436345123
37613D5468336C743B9776539E7557A96B52A066508D684D
81533B794C2B764A2574441E65462961432B5A3F2E593D28
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="3" name="C-91_4" size="400 600" center="0 -0.26" scale="400" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0862745" brightness="10" gamma="1" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="gaussian_blur blur_circle flatten spherical log cross wedge epispiral butterfly curve blur3D crackle julian post_falloff2" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="0.608" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" gaussian_blur="0.304" blur_circle="-1.01" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="15" color="0.731" var_color="1" color_speed="0.13" symmetry="0.74" name="" animate="0" spherical="0.1" log="0.068" log_base="2.71828" cross="0.019" wedge="-0.005" wedge_angle="1.5708" wedge_hole="0" wedge_count="25" wedge_swirl="0" epispiral="-0.1" epispiral_n="2" epispiral_thickness="0.1" epispiral_holes="0.1" butterfly="-0.1" curve="1" curve_xamp="-0.777" curve_yamp="0.772" curve_xlength="-5.702" curve_ylength="1" coefs="-0.433438 -1.5845 1.5845 -0.433438 0.733855 0.105105" opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" blur3D="0.226" coefs="1 0 0 1 0 0" post="1 0 0 1 0.102084 0.012086" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" gaussian_blur="0.007" crackle="0.225" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" coefs="1 0 0 1 0 0" post="1 0 0 1 0.102084 0.012086" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" julian="2" julian_dist="1" julian_power="-2" post_falloff2="1" post_falloff2_scatter="5" post_falloff2_mindist="1.154" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
ACD2BDB0DAC8B0DAD7B0DAD79BCDE172C5E1599CBC4689A9
44758D426A7A58684B69593981492D915A1099590FAE6734
E2A042EA922EC27015B23900AA1900811D077D381B99440F
AA632AF6B636F6BD53FAD28BE2CFAAE2EAC6DBEDCED3F6DE
C7F6F3C7F2E6BEEED9C0E6DDBCDBE2B4DAD7ACDAC9A8D2CD
8AA1BC5C94A0447A8D3A617A2F5A712A5D7A3B6771518084
759688B9AE7EF2BD67CA9D74B66A3CAA300E9932057D2112
7123135C1B1E50211E3A3A422D4A5531595331505538535E
41615D4C6D585F6D5570916574A68483BAA3A0D2BFACDAC9
B3D5E2B3DCE2BCDBE2C7E2DFCCEAD3C8EAD9C4EAC7B6EACE
B7E6CFB3E6DFB3E6DFAFE6DFAFE6E0AFE6E0AAF2E9B6F2F4
C2E9F4BAEAEBB6EEEAB6EAEBAEE4EBAFE6E0AFE2E2ABE2E1
A3E6DF91C3CF5EA4B24F98A03D7A964C87964D8C9770A293
86B6A5A5CAB1ACDAC9B0E2D3B7E6DEBBE6DEC3EAD9C4EAD9
C4E6C8BCE6BEB1DAB897BE9D8E9578796A4A7565418D695C
A68377B6A992CAD6A2CEEEBCF4F9CDF6FED7FEFEE0FEFEFE
FEFEFEE6FEFEFEFEFEFEFEE0FAFAE0E9FAE0DEFAE5D3F5DE
D4E6CFC5DECBD8EEC5C0DECFBCDED2B7E6E0BBE2D0BCDEBF
B4DEC4B8DEC2B7E2D1B3DED4B4DEC4B4DEB4C6D2A2A1C699
8AB8BC8EBEAEA5CAB1B5D2B5BFD2B5B0DAC8B4E2C3BCE6BE
BCE6BEB8E6CFB8E2D1B4DAD7AFD6E2A6D8EBA6E2F4A2E7F4
9AE8F49AE3F461CBEB3AC0D837B7CE2BA6CF3E97A93A797A
43695B3555484251464D4D324C3F3C425953614C39503D28
60241D7D1D127D21126427275C40453D4F553C525E4C5967
3E6F7A58958B77AAA9A9C7CFBCDED2D2EACFDAFAEAE6FEE0
F2FEE0FAFAE0F2FEE0F2FEE0FEFEE0F6FED7F6FED7F8FECD
FEFEC4FAF9C4C4DEBDDAA898D6B185B6685881772D81552D
7D523769514B81816788A19FC7CEACAEBA91969D807A8D6F
668167567D795C928C629CA97AB3BC8BDEE186D6EB71CEEB
53C4D84595BC32747A284E5E22394B172E38262C2115201A
2E3820501D154C1D1F441D2044231644221F424832354429
4248322A482936483F4561504B716459858478A29F9EBEBA
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="4" name="C-91_5" size="400 600" center="-0.0252366 -0.0378549" scale="313.86" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="4" gamma="4" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="oscilloscope" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.5" color="1" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="1 0 0 1 -1 1" opacity="1"/>
<xform weight="0.5" color="0.333" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="1 0 0 1 -1 -1" opacity="1"/>
<xform weight="0.5" color="0.91" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="-1 0 0 -1 1 -1" opacity="1"/>
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" oscilloscope="0.5" oscilloscope_separation="1" oscilloscope_frequency="3.14159" oscilloscope_amplitude="1" oscilloscope_damping="0" coefs="0 -1 1 0 1 1" opacity="1"/>
<palette count="256" format="RGB">
DA723DF99A64FEAD5BFFC885F3B699FFA475FFA15BE6895D
CF734AB36235A05B3C70594B6833234B361745242F5C2A29
8F3400B23A00C74D04D46925FF8744FF8E35F68618E25A0C
D92600D3310394502B816A647A737A686A6965624F434A42
0F292A03201C01152006070C1601001F0000220001340002
3C00003C00003D0100410000541202490000400001280501
25201D3E303F41525C42606B4478865381A256808E4D6871
534A4B44242F3734232B3D313C4043305A68326B7E488194
56818A6686836B7E8259585D4E44421F213A071E2E021416
440A007D0F009725019F2402981B008D1A00790800400001
2610020A292E1F576442717B62999C99BCB6D2D3D8D5D9E4
D3D4D9CDC9CACCB8ADB99F9EC4947EDB7956BF6832A44227
B22F01A239029B4512A34C31AA685A9094979FA0A2B3A8A6
D6B0A5E1A89DDB926FD88769CC8A68CE886FBF927FA6A2A3
959FA08595957E614F5F39302A2927021621001220001125
000C2902122B0F2D2F484745605F5D7C8A8D86A4AF83ADC3
A4CCCEC7E0DDD4DAE6D5D2DDD9D4DBD3CED2BFBDBEA5B4BB
9ABCBE99BCC09BC1CCA3D8D0A9D0D5ADC7DEA8C9CEAEC0C4
B7AFADA2B1B891A8BA85ABAC6C9494387276133F4C011D32
001725040C0F010101000000000000000000000000000000
1A00030A0000000000000000000000000000000000000000
0C0002010F122915213D212D6B3E38976959A98382AE918B
9A7972A0624B8A4736612A233F1E272101021D00003E0D00
4D1504881A01962600A63000A03F0CA04C2099502F9E5D4B
916F6D859497768D9F608EB06091A269969B899CA3A0A29F
B5715CB46956BB6840D7874CF69A69DCAA9FDFBCB6F7C8C0
E39FCEA6ACAC76809B3F5E7221395B001E38080D112E0501
6301008B120194120292180182110156000134192A192A3A
154E6B29508B215B711E4B5E0025370032401A51662D677D
4A7B89537D8B567E886078825A768453757E5C69716C727E
817F80798792789CA880ABBC91BCCCAAD4D3C3E6E8CEEAED
E0EBEFF2FDFFFDEFEEF1F2EDEBE1E0EDC2BCDEAB90FF9E41
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="5" name="C-91_6" size="800 800" center="0.118498 -1.95252" scale="264.902" rotate="-114.23" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0862745" brightness="50" gamma="1.66" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="-0.834" cam_persp="-0.1698" cam_yaw="0.219039" cam_pitch="0.520108" cam_dof="0.509" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="spherical hemisphere zscale ztranslate post_rotate_y falloff2 pre_falloff2 linear" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.688" color="1" var_color="1" color_speed="0.0175" symmetry="0.965" name="" animate="0" spherical="0.383" hemisphere="0.176" coefs="0.499254 -0.288728 0.189685 0.493702 -0.001581 0.021889" opacity="1"/>
<xform weight="0.95" color="0.816" var_color="1" color_speed="0.0515" symmetry="0.897" name="" animate="0" spherical="0.383" zscale="-0.385" ztranslate="-0.071" post_rotate_y="-0.12" coefs="0.11581 1.20736 -1.19236 0.253798 0.328571 -0.783591" opacity="0"/>
<xform weight="0.016" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" falloff2="0.206" falloff2_scatter="1" falloff2_mindist="0.5" falloff2_mul_x="1" falloff2_mul_y="0" falloff2_mul_z="0" falloff2_mul_c="0" falloff2_x0="0" falloff2_y0="0" falloff2_z0="0" falloff2_invert="0" falloff2_type="2" coefs="0.947143 0.320811 -0.320811 0.947143 1.23694 0.448032" chaos="0 1 1 " opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="5" pre_falloff2_mindist="1.826" pre_falloff2_mul_x="1" pre_falloff2_mul_y="1" pre_falloff2_mul_z="1" pre_falloff2_mul_c="0" pre_falloff2_x0="-0.718" pre_falloff2_y0="-2.335" pre_falloff2_z0="0.165" pre_falloff2_invert="0" pre_falloff2_type="1" linear="1" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
6A34586B516A615B676C71747365766C61658E4B52B0391B
AC1305B41322951F2F7C232987111FB4171ECC1B35C72516
9E4912B59644C29D57F5C966F6D76DF5D96BF5D872F4D27B
E9CB85C6D590AFC98A7EA68172937484915994854CAE4F31
C54335CA6C52B7865DA7886CA6687F9E566E8E32477A2D3F
752D4369262D6B5E317F4D1C9F2000C51901DB1F04ED2323
E8232CE02425AE16255A2225492D3C4042512A5D7A338197
3D87A45A97AC7F889792817A9D8559AA433295203B912535
601A324F1D294A4B454E6D5E5E91805F9981869777A7AB78
D8C277D0B55ECEA144CA9F41DA9D42CE9F57D3A75CF5B875
F3C476F9C478F9C47EFBCB76FEDE77F5E075F9DA80EEDC92
DBC981B2AC6E94AE647DAC4C9FBC68C1C66AC9DE81E9E288
CCCC9AC1C6A884C3AE62B7A23DACA612B3BB0AB4C120AC9F
3DA58A5B9D8F55856D61544B582B485A2B613B3D6D1A777F
1E8D981797A02C95B535A1A33EA7963CA5963D969A18919A
009C9D0198AD02A3AD2DA4A24CA69C589EA05C9C9E8A9F90
AE9C74DFB678FCAC71FFB96BF7A863DC9964CD9C4FE5CE5C
DCD56ADEC670D3C473B69F6B9E8C788A716D678A72887B59
7B6A3681813B1EB0A3519B9C83A38CB5BA80D3D476E6D86D
C6D175A4A27C5FB77D53A69C29ACB600B0BE0BBBCA04CCCC
36CACA45C2B24294B93A96A558A09F61B4B873C6CE77BCA0
8AAE949BC55FCFDF63F1D87BF3D978F7D478F4D674F0C76B
CDC563B29053A166568F3B53992F3BA5233FA82141CB283D
D42039F02A3BFA2946F7263CF62636EB2A2FE42632D3522A
CD5344B8785DD69143F69247F57F39FC6959DE6459C07F59
A88F57A9A252A69257A189678E6D5A855F5C8E6D80A4986E
E3AE84FFC28AF8BD79DBAC829192A45594A3488F953284AC
2473942650762C3A61253D57343A50602134B41E27DE2628
ED213AFA2736FF2330F52532F52A3EFA3C46F74344FF786C
F9A672CA8D7092A27D6C9A8D5B9B9B5C8D9B73868A767283
525A7E48646F2A7878226F7F14718307677323465A244554
31624C47726B438D7639889733687A48616568394D7B2F4B
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="6" name="C-91_7" size="400 600" center="0 0" scale="310.584" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0" brightness="10" gamma="3" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.025" cam_zpos="0" cam_persp="0" cam_yaw="0" cam_pitch="0" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="linear sineblur hemisphere spherical pre_falloff2 bipolar" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.75" color="0.797" var_color="1" color_speed="0.3345" symmetry="0.331" name="" animate="0" linear="1" coefs="0.196021 0.561164 -0.561164 0.196021 0 0" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.5" color="0.66" var_color="1" color_speed="0.041" symmetry="0.918" name="" animate="0" linear="1" coefs="0.29363 0.516828 -0.516828 0.29363 0.324379 -0.713634" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.5" color="0.585" var_color="1" color_speed="0.973" symmetry="-0.946" name="" animate="1" linear="1" coefs="0.194678 -1.20829 1.20829 0.194678 -0.350329 0.791485" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.25" color="0.877" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" linear="1" coefs="0.562994 0.565605 -0.565605 0.562994 0.557932 0.609833" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.05" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" sineblur="0.01" sineblur_power="10" coefs="1 0 0 1 0 0" chaos="1 1 1 1 1 1 0 0 1 " opacity="0"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" hemisphere="0.26" coefs="1 0 0 1 0 0" post="1 0 0 1 0 -0.25" chaos="0 0 0 0 0 0 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" spherical="1" coefs="0 1 -1 0 1 0" chaos="0 0 0 0 1 0.5 1 1 0 " opacity="1"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0.1" symmetry="0.8" name="" animate="0" spherical="1" coefs="0 -1 1 0 0 0" chaos="0 0 0 0 1 0 1 1 0 " opacity="1"/>
<xform weight="0.1" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" hemisphere="0.26" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.25" chaos="0 0 0 0 0 0 1 1 0 " opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="1" pre_falloff2_mindist="0" pre_falloff2_mul_x="1" pre_falloff2_mul_y="0" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="0" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="1" pre_falloff2_type="1" bipolar="1" bipolar_shift="0" coefs="1.15931 0.609897 -0.609897 1.15931 0 0" opacity="1"/>
<palette count="256" format="RGB">
44B4B63BB6B43BAEB535AFB239AAA43AA9A2229EA0157FB1
2391B4249EA13BA9A669C4BDC5C0ADC6BFADEBB7A1E9A892
F1A78EEFA18AEE978EF1948CDF947FE19478DB8F78D4765C
D4745CCF7158CF6F56CE6C53CB6B53CB654CC1533AC2543B
CD674ECE6C53C55E739D516D6B8C7B419C93198C9F10719B
0E67A10C63A630439245298D491E87461A793E1978312183
053C8F0557A30356A4003D90212A893826893A288B441F86
481C7D401B7B382988113B910557A30860A80662AF0457A3
04519F02388E2C1B7949176C561768721147740D45760F47
721B5057166853156A461A7B441E8B3A288B41288D4E238F
5A2B954E21864124903321842B1A762A1B7801388B08599B
0D6E9B1670951C919A48A79F5CA2A07C9486B98F77DA866C
D2765FC8624BAC1B6AA51C6AC55F48D07058E29176E59490
EE8A96EE7898E87191E0568ACE3295AB1C6E9A175D78135F
7A134A7A134A75124877124C771260754092746D9668968B
58A4973590AF1372A20B5C9E33268F481D7952176B831B50
A94F44BF4F37C15139CF6950D17159D2785ED47C64D87E66
D67E66CE7A62C85C74A62578951B70971D74AB5596B97E92
D6947ADF9C81DB99839F90797A978552B0A2339FA21374A1
1266AC4230935D2A89901D6AA61E73C65F74DA8E76DF947D
E6A192EAA794EEB8A0FABE9CFBBEA1FEBF9EFEBD9DF8B491
EBB090D69792D45FA3D659A5D854A7EE5A94F2808AED9581
E49479DC917AC5589CB32B80951E6E911A6C97196DB41B6D
DC3891EB5793D88068D579600965B0096AB10A6BB20F6EAE
106EAE1D8F99538B808C917DD48E75E09882F5B08FF9B590
FBB591FBBC99EFBE9ECCBDAAB5BCAC5DAB9E2B8F910C689B
08559D3B298C3C1A784B18744F156C541973532588423093
335D974F879E93AC97B39F86DD9984F497A1F08398DF6A9E
D43A9A9E1D707B256458196A4C176F361B782E1B77332385
3D2D9051339746669976919AC3B89CE5BCA0E7AA95E19F89
E09985DD957FCD868EB84E8CA52477951B70941A6F941E6A
A02274BD4283D1788CE19885E6A58FC5BEAB89C3B74BAFA5
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="7" name="C-91_8" size="900 934" center="-0.213 0.328" scale="747.23" rotate="8.42" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0823529" brightness="10" gamma="2.25" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.02" cam_zpos="0.219" cam_persp="0.6469" cam_yaw="0.0226893" cam_pitch="0.493056" cam_dof="0.5" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="spherical post_curl3D crackle post_falloff2 linear" new_linear="1" curves="0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 0 0 1 0.25 0.25 1 1 1 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 1 1 0.75 0.75 " red_curve="0 0 0.25 0.25 1 1 0.75 0.75 " green_curve="0 0 0.25 0.25 1 1 0.75 0.75 " blue_curve="0 0 0.25 0.25 1 1 0.75 0.75 ">
<xform weight="0.4" color="0.9" var_color="1" color_speed="0.025" symmetry="0.95" name="" animate="0" spherical="0.27" post_curl3D="1" post_curl3D_cx="0.044" post_curl3D_cy="0" post_curl3D_cz="0.097" coefs="0.38078 -0.269323 0.269323 0.38078 -0.057111 0.12887" chaos="1 1 0 " opacity="1"/>
<xform weight="0.6" color="1" var_color="1" color_speed="0.25" symmetry="0.5" name="" animate="0" spherical="0.196" coefs="0.585134 0.508912 -0.508912 0.585134 -0.083411 -0.308698" opacity="1"/>
<xform weight="0.01" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.196" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" post_falloff2="1" post_falloff2_scatter="10" post_falloff2_mindist="0.5" post_falloff2_mul_x="1" post_falloff2_mul_y="0" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="10" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="1" coefs="1 0 0 1 0 0" post="-102.922 0 0 -102.922 -0.086978 0.641696" opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" linear="1" post_falloff2="1" post_falloff2_scatter="1" post_falloff2_mindist="0.5" post_falloff2_mul_x="1" post_falloff2_mul_y="1" post_falloff2_mul_z="0" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="0" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="0" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
A72D0AA7280C9E2B118C33147234254B35363330232E311A
2D2F1E382D245E312B8A24119E1D08A22109A62608A12A08
9B2D0B82310F503E1F312D192B26152320121E2212222414
2E2A1A332D2B37284F3F2A77433B7F433C843F3F7C3B3850
3F384D40364A393B2E3A34283D35304838484D60474E5E79
5460875D5C7C825A4C993B1FA6400EAF340AB1300CB42614
B12917AC320FA63409A04609AC5118C15E06BF6E09C68207
CB8507DB8602D88207D16D07C25F08C0381BBB3414BB3013
B6280DB7250AB3270AB12607B1240AAD270BB02907B12207
B02208B12208B12208B12207AE2308AB1F09AC2209AF220B
AF200BAC2209AC2006AC2208AB2108A62206A82509AA2209
A71D07A61C07A61D06A01D08951F0E76260F3827132C2112
2A1F112B1F112F261738291B722A0C8D2C0C9B23099D280B
972D118136438345615C6983588A8E63848C5D76975D708C
536E8042744A4B6F346472246D793B84926CAE9689B89D8F
8F95AD6E9EBA748EB26C6AA54F62A7424F8C443E7C5C3B47
722A35962B15AC311AB13941B2696FB68091C194AA908AB4
897B90855E99A63469A12D30A92D11A32C13952C107E2B0E
4329182D2112261C12231B112920112C2217332A19613414
8C2B0E8F340D8C380D824D1256462036322339271D602510
87250F992409A22508A7230CA0271691352781324B63387E
4D3481493A87514691624B94744D8CA6365EAA3030A72F2F
B1382FB1365DA8386E7C64726A8A90739C81B49D71DA9E62
D8A146918F37936222795A1479521D433D161517121D2113
262817363223593C2F844128916017A26211AD7612C8832C
DAA440D6A338CD9428A6911F8B892D81632B42482A31331F
2927152323142323112823102B2813322C1A6832198A3115
8D3814793B2B53403C3F322F312A1D2823151F1F141D1F12
191B141D1F131B1E111E1E131E21132628162E2E1A363627
39474E416543436B4B5E707C61977F868F6194793F9A7736
995D21973F0D913214862D2B7C3A51613A834E4391415189
51598A5A6E955971935B627E66584F874B429E391BA63D14
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="8" name="C-91_9" size="800 800" center="0.281 0.105" scale="419.8" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0 0.0980392" brightness="30" gamma="2.7" highlight_power="1" logscale_k2="0" vibrancy="1" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0.468" cam_persp="0.45" cam_yaw="0" cam_pitch="0.698132" cam_dof="0.5" blur_curve="0" palette_mode="linear" interpolation="linear" interpolation_type="log" plugins="gaussian_blur log flatten linear3D eyefish bubble ztranslate bwraps butterfly cross Spherical3D waves2 wdisc post_bwraps crackle blur post_falloff2 pre_circlecrop zscale zcone julia3D post_curl" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="0.5" color="0" var_color="1" color_speed="0.5" symmetry="0" name="" animate="1" gaussian_blur="0.5" log="0.01" log_base="2.71828" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="5" color="0.557" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" linear3D="1" eyefish="0.083" bubble="0.023" ztranslate="0.203" bwraps="0.06" bwraps_cellsize="0.5" bwraps_space="0" bwraps_gain="0" bwraps_inner_twist="2" bwraps_outer_twist="1" butterfly="0.096" cross="0.003" log="0.1" log_base="2.71828" Spherical3D="0.1" waves2="-0.01" waves2_freqx="5" waves2_scalex="1" waves2_freqy="5" waves2_scaley="1" waves2_freqz="0" waves2_scalez="0" wdisc="0.35" post_bwraps="1" post_bwraps_cellsize="0.1" post_bwraps_space="0" post_bwraps_gain="1.5" post_bwraps_inner_twist="0" post_bwraps_outer_twist="0" coefs="-0.956946 0.937098 -0.937098 -0.956946 0.722127 -0.133305" opacity="1"/>
<xform weight="0.125" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="0.358" crackle_cellsize="0.5" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" flatten="1" coefs="1 0 0 1 0 0" opacity="1"/>
<xform weight="0.125" color="1" var_color="1" color_speed="0" symmetry="1" name="" animate="0" blur="0.1" ztranslate="6" crackle="0.358" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" post_falloff2="1" post_falloff2_scatter="1" post_falloff2_mindist="0.5" post_falloff2_mul_x="0" post_falloff2_mul_y="0" post_falloff2_mul_z="1" post_falloff2_mul_c="0" post_falloff2_x0="0" post_falloff2_y0="100" post_falloff2_z0="0" post_falloff2_invert="0" post_falloff2_type="2" coefs="1 0 0 1 0 0" opacity="1"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_circlecrop="1" pre_circlecrop_radius="10000" pre_circlecrop_x="0" pre_circlecrop_y="0" pre_circlecrop_scatter_area="0" pre_circlecrop_zero="1" zscale="0.15" zcone="-1.5e-05" julia3D="2" julia3D_power="-2" post_curl="1" post_curl_c1="-0.26" post_curl_c2="-0.027" coefs="1 0 0 1 0 0" opacity="1"/>
<palette count="256" format="RGB">
B00B33A20D3A950F42910E428D0D43820A43770B47670F4E
5C0C485109434C084647084A3D0E4E361553292A5C2B3460
2D3F642C4D5F2C5B5A335F543A644E4964454E5C3E5E4A2F
6F4032813735853235892D3589203B891C427F264A71234B
64214D5D214B5721494B284A3F33503A32553B35573C485A
39445D364160343C6233386530346A28286718135013114A
0F10440C133D0A1736101E241E261B282C1B2C311D483419
4D351D53372252382E483B32433B2D3A4327245B252E5B1E
395C1741571349531051550A634E117641188032227C2A2C
79272F76243273203B731D3E771D3E7A1C3791112C9B0E27
A50C23A80B23AB0A24B10D25B80E24BA1222B513279E1733
9716329116317B1535680E3E51114A3F114F221B5B1F235D
1D2C601A3E5D164C5B105F590F74550D85480F88441C853F
247F392C7934436A3058572B74462D91332BC01E2BC81B31
D11837DA1645DE1048DD1245E11543DF1C47DB173FD41031
D30C26D51024D71022D50B1ED0071ECD0728C8083DC2093E
BC0B3FA70E45960F5282165B6E255A57385244444E345349
26653E1D722F166B281961211D5A1E26541D2C452538362B
4831315633385A3A455A454E5E52575E5E53526954456F57
456F635168615C625867574E7D4A4B9B3949B3303EC62B30
D42921DB231CDA2114D02110C21F0AB31D08AA1B07A61A09
A2140A9D120AA3170AAE1F0AB5220BB3200AB31E0EB32014
B21D20A61C2B9C14398F14438110516D155D5F156A5C166F
5413724A18703C246F41326F463B704D41714A436F4E466B
594466624463634462693A5F6C2E5271224E6E23508C2450
8E1E4E90184C9512509B0D54950D52900E51670C53500950
39074E300D472813403319343F1F28431D22471B1D611816
6B18157619157D15168412178913198F141CAC1917B01D16
B42115AC271FA52E2A9D342F953A3580403D633A463B3B59
393352382C4B4120434A153C4D143651143054151D4D151F
4615223D182C351C36331A3A31193E33144645105476195D
8C1955A2194EB51847C91740CB163ACD1635C3122FB90E31
</palette>
</flame>
<flame version="EMBER-LNX-1.0.0.19" time="9" name="C-91_10" size="800 800" center="0.643845 0.493493" scale="612.58" rotate="0" supersample="2" filter="0.5" filter_shape="gaussian" temporal_filter_type="box" temporal_filter_width="1" quality="1000" temporal_samples="100" sub_batch_size="10240" fuse="15" rand_range="1" background="0 0.00784314 0.160784" brightness="5" gamma="1.82" highlight_power="1" logscale_k2="0" vibrancy="0.94" estimator_radius="9" estimator_minimum="0" estimator_curve="0.4" gamma_threshold="0.01" cam_zpos="0.664" cam_persp="0.2011" cam_yaw="-0.340339" cam_pitch="0.698132" cam_dof="0" blur_curve="0" palette_mode="linear" interpolation="smooth" interpolation_type="log" plugins="Spherical3D flatten pre_falloff2 hemisphere crackle post_curl" new_linear="1" curves="0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 0 0 1 0.25 0.25 1 0.5 0.5 1 0.75 0.75 1 " overall_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " red_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " green_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 " blue_curve="0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 ">
<xform weight="2" color="0.887" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" Spherical3D="1" flatten="1" coefs="0 1 -1 0 1 0" opacity="1"/>
<xform weight="2" color="1" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" Spherical3D="1" flatten="1" coefs="0 -1 1 0 0 0" opacity="1"/>
<xform weight="1" color="0.226" var_color="1" color_speed="0.05" symmetry="0.9" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="10" pre_falloff2_mindist="0" pre_falloff2_mul_x="0.05" pre_falloff2_mul_y="0.05" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="10" pre_falloff2_y0="0" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" hemisphere="0.25" coefs="1 0 0 1 0 0" post="1 0 0 1 0 0.25" opacity="0"/>
<xform weight="0.25" color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" crackle="1" crackle_cellsize="1" crackle_power="0.2" crackle_distort="2" crackle_scale="0" crackle_z="0" flatten="1" coefs="1 0 0 1 0 0" chaos="0 0 1 0 " opacity="0"/>
<finalxform color="0" var_color="1" color_speed="0" symmetry="1" name="" animate="0" pre_falloff2="1" pre_falloff2_scatter="5" pre_falloff2_mindist="0.8" pre_falloff2_mul_x="1" pre_falloff2_mul_y="1" pre_falloff2_mul_z="0" pre_falloff2_mul_c="0" pre_falloff2_x0="1.5" pre_falloff2_y0="0.1" pre_falloff2_z0="0" pre_falloff2_invert="0" pre_falloff2_type="0" Spherical3D="1" post_curl="1" post_curl_c1="-0.095" post_curl_c2="0.081" coefs="1 0 0 1 0.436567 -0.174627" opacity="1"/>
<palette count="256" format="RGB">
CE9047B09C3DAA9D35409E0A37970B2F900D47482635372A
341A49282A512F43664638625E2E5E863263AF3669C21469
A4020D8D021F7D162964727F627C8A6186965C96A146959C
5CA975659F62918A808B9A9986ABB3A2B0B3BEB6B4E0C29E
CB9B84BC5F58C71569D50D70DC106FE3146ED54E48DD9450
E7CC7DFAF98FCCE37BBED266B0C15166953727535E146078
0F6C7D07556C08546C434C514D4B57584B5D7D596780736D
99695B756B389C3F1D9531178F2412851D1C6E0A2C5D173B
614339648F3DA0A42CADB747E6ED6CFCFC76E8F174E9AC75
E38047FB604EFD5C40FC6743FC7347E29835FBB039E9D03F
DFD945B6CA5BA2C42F99AF2881961D5B971D66692264462E
7B503D90676B9E6E4AB07531C97546F76450FC564AFD573F
FE5540FD5147FC473CEB1170E71171D8166DBE116A6D1551
3617402C305619496D154B651A385E062D58172854331747
520A3A6606345003393609402C0534101348121C4D261A4A
271E2113220F3320223D1C2540410869650C7B8934AFAB30
B89634B17F2A9E4A40955B43B48446C6A65DFBCD9CF3EBBD
FDFAD1F5F8E3F9F6EFF8F8D6D6B0C7D15B7DE01370EB1170
F84139EA462381591EC19E80BAAE86B4BE8C87A4935B8A9A
5F9AA364ABADACC9C5CADED5E9F4E6EDDBCEF1C3B6D5AA7B
BA9141AA7C2D9B6819593C1C6122246A092C69092C680A2C
65092D63092F3E02387B0850B90F68CB116BDE136FE3126F
E8116FEB0663CD091F963113C0571BEA7E23F19632F8AE41
FA9942FC8543F64233EE3E2AE63B21DA5D34CF8047D08E3F
D19D37F0C63EDCCA38B27920B83D12BE0105C5130CCD2613
DA2D1CE83425A74043902C3779182C60273F473752374257
284D5D15506E1B677E2F838E51969E74A9AF7FB3B58BBDBC
D1D4C1F0F1CFADC7AE7AA8A14789952B6C82104F70094669
023E630A2F591E380927920838701D494F334A403D4B3247
721752B91166E00C73E60E72ED1171ED1172ED1173F40F74
F40C72F30368F40268FD0772FC0872FB0A73FB0571FB016F
F40268F30368E82742E83233E93E24F24530FC4C3DE98138
</palette>
</flame>
</flames>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,23 @@
#!/bin/bash
CONFIG_PATH=~/.config/fractorium
DARK_MAC=~/.config/fractorium/dark_mac.qss
LIGHT_DARK=~/.config/fractorium/lightdark.qss
URANIUM=~/.config/fractorium/uranium.qss
#./fractorium
if [ ! -e "$DARK_LINUX" ] ; then
mkdir -p $CONFIG_PATH
cp dark_mac.qss $CONFIG_PATH
fi
if [ ! -e "$LIGHT_DARK" ] ; then
mkdir -p $CONFIG_PATH
cp lightdark.qss $CONFIG_PATH
fi
if [ ! -e "$URANIUM" ] ; then
mkdir -p $CONFIG_PATH
cp uranium.qss $CONFIG_PATH
fi
#!/bin/bash
CONFIG_PATH=~/.config/fractorium
DARK_MAC=~/.config/fractorium/dark_mac.qss
LIGHT_DARK=~/.config/fractorium/lightdark.qss
URANIUM=~/.config/fractorium/uranium.qss
#./fractorium
if [ ! -e "$DARK_LINUX" ] ; then
mkdir -p $CONFIG_PATH
cp dark_mac.qss $CONFIG_PATH
fi
if [ ! -e "$LIGHT_DARK" ] ; then
mkdir -p $CONFIG_PATH
cp lightdark.qss $CONFIG_PATH
fi
if [ ! -e "$URANIUM" ] ; then
mkdir -p $CONFIG_PATH
cp uranium.qss $CONFIG_PATH
fi

View File

@ -1,11 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=fractorium
Terminal=false
Categories=Graphics;
MimeType=
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=fractorium
Terminal=false
Categories=Graphics;
MimeType=

View File

@ -1,11 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=/usr/share/fractorium/fractorium.png
Terminal=false
Categories=Graphics;
MimeType=
[Desktop Entry]
Version=1.0
Type=Application
Name=Fractorium
Comment=Fractal flame editor
Exec=fractorium
TryExec=fractorium
Icon=/usr/share/fractorium/fractorium.png
Terminal=false
Categories=Graphics;
MimeType=

View File

@ -1,474 +1,474 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red53\green56\blue42;}{\*\defchp \f31506\fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025
\ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s3\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0
\rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0 \b\fs27\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 \slink15 \sqformat \spriority9 \styrsid8467792 heading 3;}{
\s4\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext4 \slink16 \sqformat \spriority9 \styrsid8467792 heading 4;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive
\rtlch\fcs1 \ab\af0\afs27 \ltrch\fcs0 \b\f0\fs27 \sbasedon10 \slink3 \slocked \spriority9 \styrsid8467792 Heading 3 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af0\afs24 \ltrch\fcs0 \b\f0\fs24 \sbasedon10 \slink4 \slocked \spriority9 \styrsid8467792
Heading 4 Char;}{\s17\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext17 \ssemihidden \sunhideused \styrsid8467792 Normal (Web);}{\*\cs18 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 \ssemihidden \sunhideused \styrsid8467792 Hyperlink;}}{\*\listtable{\list\listtemplateid1944733200{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid341057278}
{\list\listtemplateid1071024108{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760
\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
{\listname ;}\listid598561567}{\list\listtemplateid1482595662{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720
\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480
\jclisttab\tx6480\lin6480 }{\listname ;}\listid1629435584}}{\*\listoverridetable{\listoverride\listid1629435584\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0
\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls1}{\listoverride\listid341057278\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls2}{\listoverride\listid598561567\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls3}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}
{\*\rsidtbl \rsid6316632\rsid8003581\rsid8467792}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Person}{\operator Person}{\creatim\yr2013\mo11\dy24\hr12\min3}
{\revtim\yr2013\mo11\dy24\hr12\min3}{\version2}{\edmins0}{\nofpages12}{\nofwords4738}{\nofchars27009}{\nofcharsws31684}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot6316632\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang
{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
\pard\plain \ltrpar\qc \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792 GNU GENERAL PUBLIC LICENSE
\par }\pard \ltrpar\qc \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Version 3, 29 June 2007
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Copyright \'a9
2007 Free Software Foundation, Inc. <}{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 HYPERLINK "http://fsf.org/" }}{\fldrslt {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0
\f1\fs21\ul\cf12\insrsid8467792\charrsid8467792 http://fsf.org/}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 >
\par Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
\par }\pard \ltrpar\ql \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart preamble}{\*\bkmkend preamble}Preamble
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
The GNU General Public License is a free, copyleft license for software and other kinds of works.
\par The licenses for most software
and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
\par When we speak of free soft
ware, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want i
t, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
\par To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you ha
ve certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
\par For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the reci
pients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
\par Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
\par For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both use
rs' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
\par Some devices are designed to deny users access to install or run modified versio
ns of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals t
o
use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to thos
e domains in future versions of the GPL, as needed to protect the freedom of users.
\par Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers
, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
\par The precise terms and conditions for copying, distribution and modification follow.
\par }\pard \ltrpar\ql \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart terms}{\*\bkmkend terms}TERMS AND CONDITIONS
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section0}{\*\bkmkend section0}0. Definitions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 \'93This License\'94
refers to version 3 of the GNU General Public License.
\par \'93Copyright\'94 also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
\par \'93The Program\'94 refers to any copyrightable work licensed under this License. Each licensee is addressed as \'93you\'94. \'93Licensees\'94 and \'93recipients\'94 may be individuals or organizations.
\par To \'93modify\'94 a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a \'93modified version\'94 of the earlier work or a work \'93
based on\'94 the earlier work.
\par A \'93covered work\'94 means either the unmodified Program or a work based on the Program.
\par To \'93propagate\'94 a work means to do anything with it that, without permission, would make you directly or secondarily liable for infr
ingement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as we
ll.
\par To \'93convey\'94 a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
\par An interactive user interface displays \'93Appropriate Legal Notices\'94
to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provi
ded), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section1}{\*\bkmkend section1}1. Source Code.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 The \'93source code\'94
for a work means the preferred form of the work for making modifications to it. \'93Object code\'94 means any non-source form of a work.
\par A \'93Standard Interface\'94 means an interface that either is an official standard defined by a recognized standards body,
or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
\par The \'93System Libraries\'94 of an executable work include anything, other than the work as a whole, that (a) is in
cluded in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available
to the public in source code form. A \'93Major Component\'94
, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
\par The \'93Corresponding Source\'94 for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Cor
r
esponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communi
cation or control flow between those subprograms and other parts of the work.
\par The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
\par The Corresponding Source for a work in source code form is that same work.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section2}{\*\bkmkend section2}2. Basic Permissions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited pe
rmission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided
by copyright law.
\par You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exc
lusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must
do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
\par Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section3}{\*\bkmkend section3}3. Protecting Users' Legal Rights From Anti-Circumvention Law.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
No covered work shall be deemed part of an effective technological measure under any applicable law fulfill
ing obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
\par When you convey a covered work, you waive any legal power to forbid circumvention of techn
ological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the wor
k's users, your or third parties' legal rights to forbid circumvention of technological measures.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section4}{\*\bkmkend section4}4. Conveying Verbatim Copies.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; a
nd give all recipients a copy of this License along with the Program.
\par You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section5}{\*\bkmkend section5}5. Conveying Modified Source Versions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 a) The work m
ust carry prominent notices stating that you modified it, and giving a relevant date.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to \'93keep intact all notices\'94.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the
whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}d) If the work has interactive
user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
A compilation of a covered work with other separate and inde
pendent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an \'93aggregate\'94
if the compilation and its res
ulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section6}{\*\bkmkend section6}6. Conveying Non-Source Forms.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 a) Convey the o
bject code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}b) Convey the object code in, or embodied in
, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the obj
e
ct code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically
performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is
allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent ac
cess to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corres
p
onding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what ser
ver hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
\par A \'93User Product\'94 is either (1) a \'93consumer product\'94, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwell
ing. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, \'93normally used\'94
refers to a typical or common use of that class of product, regardle
ss of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or no
n-consumer uses, unless such uses represent the only significant mode of use of the product.
\par \'93Installation Information\'94 for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versi
ons of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because mod
ification has been made.
\par If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transfer
red to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if n
either you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
\par The requirement to provide Installation Information does not include a requirement to continue to provi
de support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adv
ersely affects the operation of the network or violates the rules and protocols for communication across the network.
\par Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly docu
mented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section7}{\*\bkmkend section7}7. Additional Terms.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 \'93Additional permissions\'94
are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this Lic
ense, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to
the additional permissions.
\par When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when
you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
\par Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}b) Requiring preserv
ation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}c) Prohibiting misrepresentation of the origin of that material, or requiring that modified version
s of such material be marked in reasonable ways as different from the original version; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability t
hat these contractual assumptions directly impose on those licensors and authors.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
All other non-permissive additional terms are considered \'93further restrictions\'94 within the meaning of section 10. If the Program as you received it, or any part of it, contai
ns a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to
a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
\par If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
\par Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section8}{\*\bkmkend section8}8. Termination.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate you
r rights under this License (including any patent licenses granted under the third paragraph of section 11).
\par However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless a
nd until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
\par Moreover, your license from a par
ticular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and
you cure the violation prior to 30 days after your receipt of the notice.
\par Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been termi
nated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section9}{\*\bkmkend section9}9. Acceptance Not Required for Having Copies.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You are not required to accept this License in order to receive or run a copy of the Prog
ram. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify
any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section10}{\*\bkmkend section10}10. Automatic Licensing of Downstream Recipients.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Each time
you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
\par An \'93entity transaction\'94
is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party
to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the
predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
\par You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royal
ty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or
importing the Program or any portion of it.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section11}{\*\bkmkend section11}11. Patents.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 A \'93contributor\'94
is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's \'93contributor version\'94.
\par A contributor's \'93essential patent claims\'94
are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling it
s contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, \'93control\'94
includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
\par Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propaga
te the contents of its contributor version.
\par In the following three paragraphs, a \'93patent license\'94 is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To \'93
grant\'94 such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
\par If you convey a covered work, knowingly relying on a patent license, and the Corresponding Sour
ce of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so availab
le, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. \'93
Knowingly relying\'94 me
ans you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to
believe are valid.
\par If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them
to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
\par A patent license is \'93discriminatory\'94 if it does not include w
ithin the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a
t
hird party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the co
v
ered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covere
d work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
\par Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section12}{\*\bkmkend section12}12. No Surrender of Others' Freedom.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of
this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate
you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section13}{\*\bkmkend section13}13. Use with the GNU Affero General Public License.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work
. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section14}{\*\bkmkend section14}14. Revised Versions of this License.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
\par Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License \'93or any later version\'94 applies to it, you have the option of following the term
s and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free S
oftware Foundation.
\par If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
\par Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section15}{\*\bkmkend section15}15. Disclaimer of Warranty.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 THERE IS NO W
ARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \'93AS IS\'94
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section16}{\*\bkmkend section16}16. Limitation of Liability.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILUR
E OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section17}{\*\bkmkend section17}17. Interpretation of Sections 15 and 16.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connec
tion with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
\par END OF TERMS AND CONDITIONS
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8003581
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f
7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90
fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2
ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae
a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1
399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5
4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84
0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b
c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7
689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20
5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0
aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d
316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840
545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a
c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100
0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7
8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89
d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500
1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f
bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6
a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a
0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021
0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008
00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000401f
3d3b50e9ce01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f409\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f410\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\f412\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f413\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f416\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f417\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red53\green56\blue42;}{\*\defchp \f31506\fs22 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025
\ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s3\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0
\rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0 \b\fs27\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 \slink15 \sqformat \spriority9 \styrsid8467792 heading 3;}{
\s4\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext4 \slink16 \sqformat \spriority9 \styrsid8467792 heading 4;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive
\rtlch\fcs1 \ab\af0\afs27 \ltrch\fcs0 \b\f0\fs27 \sbasedon10 \slink3 \slocked \spriority9 \styrsid8467792 Heading 3 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af0\afs24 \ltrch\fcs0 \b\f0\fs24 \sbasedon10 \slink4 \slocked \spriority9 \styrsid8467792
Heading 4 Char;}{\s17\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext17 \ssemihidden \sunhideused \styrsid8467792 Normal (Web);}{\*\cs18 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 \ssemihidden \sunhideused \styrsid8467792 Hyperlink;}}{\*\listtable{\list\listtemplateid1944733200{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid341057278}
{\list\listtemplateid1071024108{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760
\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
{\listname ;}\listid598561567}{\list\listtemplateid1482595662{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li720
\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480
\jclisttab\tx6480\lin6480 }{\listname ;}\listid1629435584}}{\*\listoverridetable{\listoverride\listid1629435584\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0
\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls1}{\listoverride\listid341057278\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls2}{\listoverride\listid598561567\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }}\ls3}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}
{\*\rsidtbl \rsid6316632\rsid8003581\rsid8467792}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Person}{\operator Person}{\creatim\yr2013\mo11\dy24\hr12\min3}
{\revtim\yr2013\mo11\dy24\hr12\min3}{\version2}{\edmins0}{\nofpages12}{\nofwords4738}{\nofchars27009}{\nofcharsws31684}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot6316632\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang
{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
\pard\plain \ltrpar\qc \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792 GNU GENERAL PUBLIC LICENSE
\par }\pard \ltrpar\qc \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Version 3, 29 June 2007
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Copyright \'a9
2007 Free Software Foundation, Inc. <}{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 HYPERLINK "http://fsf.org/" }}{\fldrslt {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0
\f1\fs21\ul\cf12\insrsid8467792\charrsid8467792 http://fsf.org/}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 >
\par Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
\par }\pard \ltrpar\ql \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart preamble}{\*\bkmkend preamble}Preamble
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
The GNU General Public License is a free, copyleft license for software and other kinds of works.
\par The licenses for most software
and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
\par When we speak of free soft
ware, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want i
t, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
\par To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you ha
ve certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
\par For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the reci
pients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
\par Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
\par For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both use
rs' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
\par Some devices are designed to deny users access to install or run modified versio
ns of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals t
o
use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to thos
e domains in future versions of the GPL, as needed to protect the freedom of users.
\par Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers
, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
\par The precise terms and conditions for copying, distribution and modification follow.
\par }\pard \ltrpar\ql \li0\ri0\sb240\sa240\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs38 \ltrch\fcs0 \b\f1\fs38\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart terms}{\*\bkmkend terms}TERMS AND CONDITIONS
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section0}{\*\bkmkend section0}0. Definitions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 \'93This License\'94
refers to version 3 of the GNU General Public License.
\par \'93Copyright\'94 also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
\par \'93The Program\'94 refers to any copyrightable work licensed under this License. Each licensee is addressed as \'93you\'94. \'93Licensees\'94 and \'93recipients\'94 may be individuals or organizations.
\par To \'93modify\'94 a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a \'93modified version\'94 of the earlier work or a work \'93
based on\'94 the earlier work.
\par A \'93covered work\'94 means either the unmodified Program or a work based on the Program.
\par To \'93propagate\'94 a work means to do anything with it that, without permission, would make you directly or secondarily liable for infr
ingement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as we
ll.
\par To \'93convey\'94 a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
\par An interactive user interface displays \'93Appropriate Legal Notices\'94
to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provi
ded), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section1}{\*\bkmkend section1}1. Source Code.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 The \'93source code\'94
for a work means the preferred form of the work for making modifications to it. \'93Object code\'94 means any non-source form of a work.
\par A \'93Standard Interface\'94 means an interface that either is an official standard defined by a recognized standards body,
or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
\par The \'93System Libraries\'94 of an executable work include anything, other than the work as a whole, that (a) is in
cluded in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available
to the public in source code form. A \'93Major Component\'94
, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
\par The \'93Corresponding Source\'94 for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Cor
r
esponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communi
cation or control flow between those subprograms and other parts of the work.
\par The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
\par The Corresponding Source for a work in source code form is that same work.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section2}{\*\bkmkend section2}2. Basic Permissions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited pe
rmission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided
by copyright law.
\par You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exc
lusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must
do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
\par Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section3}{\*\bkmkend section3}3. Protecting Users' Legal Rights From Anti-Circumvention Law.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
No covered work shall be deemed part of an effective technological measure under any applicable law fulfill
ing obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
\par When you convey a covered work, you waive any legal power to forbid circumvention of techn
ological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the wor
k's users, your or third parties' legal rights to forbid circumvention of technological measures.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section4}{\*\bkmkend section4}4. Conveying Verbatim Copies.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; a
nd give all recipients a copy of this License along with the Program.
\par You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section5}{\*\bkmkend section5}5. Conveying Modified Source Versions.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 a) The work m
ust carry prominent notices stating that you modified it, and giving a relevant date.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to \'93keep intact all notices\'94.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the
whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}d) If the work has interactive
user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
A compilation of a covered work with other separate and inde
pendent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an \'93aggregate\'94
if the compilation and its res
ulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section6}{\*\bkmkend section6}6. Conveying Non-Source Forms.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 a) Convey the o
bject code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}b) Convey the object code in, or embodied in
, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the obj
e
ct code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically
performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is
allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent ac
cess to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corres
p
onding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what ser
ver hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
\par A \'93User Product\'94 is either (1) a \'93consumer product\'94, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwell
ing. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, \'93normally used\'94
refers to a typical or common use of that class of product, regardle
ss of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or no
n-consumer uses, unless such uses represent the only significant mode of use of the product.
\par \'93Installation Information\'94 for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versi
ons of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because mod
ification has been made.
\par If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transfer
red to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if n
either you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
\par The requirement to provide Installation Information does not include a requirement to continue to provi
de support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adv
ersely affects the operation of the network or violates the rules and protocols for communication across the network.
\par Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly docu
mented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section7}{\*\bkmkend section7}7. Additional Terms.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 \'93Additional permissions\'94
are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this Lic
ense, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to
the additional permissions.
\par When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when
you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
\par Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar\ql \fi-360\li336\ri240\sl312\slmult0\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin240\lin336\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}b) Requiring preserv
ation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}c) Prohibiting misrepresentation of the origin of that material, or requiring that modified version
s of such material be marked in reasonable ways as different from the original version; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f3\fs20\cf17\insrsid8467792\charrsid8467792 \loch\af3\dbch\af0\hich\f3 \'b7\tab}
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability t
hat these contractual assumptions directly impose on those licensors and authors.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
All other non-permissive additional terms are considered \'93further restrictions\'94 within the meaning of section 10. If the Program as you received it, or any part of it, contai
ns a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to
a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
\par If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
\par Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section8}{\*\bkmkend section8}8. Termination.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate you
r rights under this License (including any patent licenses granted under the third paragraph of section 11).
\par However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless a
nd until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
\par Moreover, your license from a par
ticular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and
you cure the violation prior to 30 days after your receipt of the notice.
\par Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been termi
nated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section9}{\*\bkmkend section9}9. Acceptance Not Required for Having Copies.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
You are not required to accept this License in order to receive or run a copy of the Prog
ram. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify
any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section10}{\*\bkmkend section10}10. Automatic Licensing of Downstream Recipients.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 Each time
you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
\par An \'93entity transaction\'94
is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party
to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the
predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
\par You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royal
ty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or
importing the Program or any portion of it.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section11}{\*\bkmkend section11}11. Patents.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 A \'93contributor\'94
is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's \'93contributor version\'94.
\par A contributor's \'93essential patent claims\'94
are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling it
s contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, \'93control\'94
includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
\par Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propaga
te the contents of its contributor version.
\par In the following three paragraphs, a \'93patent license\'94 is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To \'93
grant\'94 such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
\par If you convey a covered work, knowingly relying on a patent license, and the Corresponding Sour
ce of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so availab
le, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. \'93
Knowingly relying\'94 me
ans you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to
believe are valid.
\par If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them
to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
\par A patent license is \'93discriminatory\'94 if it does not include w
ithin the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a
t
hird party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the co
v
ered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covere
d work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
\par Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section12}{\*\bkmkend section12}12. No Surrender of Others' Freedom.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of
this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate
you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section13}{\*\bkmkend section13}13. Use with the GNU Affero General Public License.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work
. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section14}{\*\bkmkend section14}14. Revised Versions of this License.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
\par Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License \'93or any later version\'94 applies to it, you have the option of following the term
s and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free S
oftware Foundation.
\par If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
\par Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section15}{\*\bkmkend section15}15. Disclaimer of Warranty.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792 THERE IS NO W
ARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \'93AS IS\'94
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section16}{\*\bkmkend section16}16. Limitation of Liability.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILUR
E OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
\par }\pard \ltrpar\ql \li0\ri0\sl360\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \ab\af1\afs31 \ltrch\fcs0 \b\f1\fs31\cf17\insrsid8467792\charrsid8467792
{\*\bkmkstart section17}{\*\bkmkend section17}17. Interpretation of Sections 15 and 16.
\par }\pard \ltrpar\ql \li0\ri0\sa240\sl312\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8467792 \cbpat8 {\rtlch\fcs1 \af1\afs21 \ltrch\fcs0 \f1\fs21\cf17\insrsid8467792\charrsid8467792
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connec
tion with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
\par END OF TERMS AND CONDITIONS
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8003581
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210030dd4329a8060000a41b0000160000007468656d652f7468656d652f
7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
e877f0034e16bafb0e258ebb4faf06b769e888340b103d331115bebc4eb813bf83291b63624a0d1475a756c734f9bbc2cd28546ecbe1e20a3794ca175f3fae90
fb6d2dd99bb07b55e5ccf68942bd0877b23c77b908e8db5f9db7f024d9239010f35bd4bbe2fcae387bfff9e2bc289f2fbe24cfaa301468dd8bd846dbb4ddf1c2
ae7b4c191ba8292337a469bc25ec3d411f06f53a73e224c5292c8de0516732307070a1c0660d125c7d44553488700a4d7bddd3444299910e254ab984c3a219ae
a4adf1d0f82b7bd46cea4388ad1c12ab5d1ed8e1153d9c9f350a3246aad01c6873462b9ac05999ad5cc988826eafc3acae853a33b7ba11cd1445875ba1b236b1
399483c90bd560b0b0263435085a21b0f22a9cf9356b38ec6046026d77eba3dc2dc60b17e92219e180643ed27acffba86e9c94c7ca9c225a0f1b0cfae0788ad5
4adc5a9aec1b703b8b93caec1a0bd8e5de7b132fe5113cf312503b998e2c2927274bd051db6b35979b1ef271daf6c6704e86c73805af4bdd476216c26593af84
0dfb5393d964f9cc9bad5c313709ea70f561ed3ea7b053075221d51696910d0d339585004b34272bff7213cc7a510a5454a3b349b1b206c1f0af490176745d4b
c663e2abb2b34b23da76f6352ba57ca2881844c1111ab189d8c7e07e1daaa04f40255c77988aa05fe06e4e5bdb4cb9c5394bbaf28d98c1d971ccd20867e556a7
689ec9166e0a522183792b8907ba55ca6e943bbf2a26e52f48957218ffcf54d1fb09dc3eac04da033e5c0d0b8c74a6b43d2e54c4a10aa511f5fb021a07533b20
5ae07e17a621a8e082dafc17e450ffb739676998b48643a4daa7211214f623150942f6a02c99e83b85583ddbbb2c4996113211551257a656ec1139246ca86be0
aadedb3d1441a89b6a929501833b197fee7b9641a3503739e57c732a59b1f7da1cf8a73b1f9bcca0945b874d4393dbbf10b1680f66bbaa5d6f96e77b6f59113d
316bb31a795600b3d256d0cad2fe354538e7566b2bd69cc6cbcd5c38f0e2bcc63058344429dc2121fd07f63f2a7c66bf76e80d75c8f7a1b622f878a18941d840
545fb28d07d205d20e8ea071b283369834296bdaac75d256cb37eb0bee740bbe278cad253b8bbfcf69eca23973d939b97891c6ce2cecd8da8e2d343578f6648a
c2d0383fc818c798cf64e52f597c740f1cbd05df0c264c49134cf09d4a60e8a107260f20f92d47b374e32f000000ffff0300504b030414000600080000002100
0dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f7
8277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89
d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd500
1996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0f
bfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6
a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a
0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021
0030dd4329a8060000a41b00001600000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d001400060008
00000021000dd1909fb60000001b0100002700000000000000000000000000b20900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000ad0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000401f
3d3b50e9ce01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,68 +1,68 @@
<palettes>
<palette number="0" name="pal1" source_colors="0,0.847059,0.482353,0.109804 0.111111,0.878431,0.67451,0.282353 0.222222,0.329412,0.258824,0.866667 0.333333,0.843137,0.286275,0.0745098 0.444444,0.470588,0.909804,0.180392 0.555556,0.0588235,0.168627,0.529412 0.666667,0.439216,0.615686,0.780392 0.777778,0.890196,0.701961,0.101961 0.888889,0.486275,0.886275,0.568627 1,0.443137,0.384314,0.921569 " data="00d87c1d00d87e1f00d9802000d9812200d9832300da852500da862600da8828
00da8a2900db8c2b00db8d2c00db8f2e00dc913000dc933100dc943300dc9634
00dd983600dd993700dd9b3900de9d3a00de9f3c00dea03e00dea23f00dfa441
00dfa54200dfa74400dfa94500e0ab4700dfab4900daa74e00d5a45400d0a059
00cb9c5e00c6996300c1956900bc916e00b88d7300b38a7800ae867e00a98283
00a47e88009f7b8d009a7792009573980090709d008b6ca2008668a7008164ad
007c61b200785db7007359bc006e55c2006952c700644ecc005f4ad1005a47d7
005543dc005842d7005c42d0006143c9006543c2006a43bb006f43b4007344ad
007844a6007b44a1007f449a008445930089458c008d45850092457e00974676
009b466f00a0466800a4466100a9475a00ae475300b2474c00b7474500bb483e
00c0483700c5482f00c9482800ce492100d2491a00d7491300d44f1400d05415
00cd5a1600ca5f1700c6651800c36b1900c0701a00bc761b00b97b1c00b6811c
00b2861d00af8c1e00ac921f00a8972000a59d2100a2a222009ea823009bae24
0098b3250094b9260091be27008ec428008aca290087cf2a0084d52b0080da2c
007de02d0079e62e0076e4300072de33006fd736006bd0390067ca3c0063c33f
0060bc43005cb6460058af490055a94c0051a24f004d9b52004a955500468e58
0042875c003f815f003b7a620037736500336d680030666b002c5f6e00285971
0025527500214b78001d457b001a3e7e0016388100123184000f2b8700132f89
0016338c001a378e001d3b9000203f920024439500274797002b4c99002e509b
0031549e003558a000385ca2003c60a4003f64a7004368a900466cab004970ad
004d74b0005078b200547cb4005780b6005a84b9005e88bb00618cbd006590bf
006894c2006b98c4006f9cc600739ec300779ebd007b9fb7007fa0b10083a1ab
0087a1a5008ba29e008fa3980093a4920097a48c009ba586009fa68000a3a77a
00a7a87400aba86e00afa96800b3aa6200b7ab5c00bbab5500c0ac4f00c4ad49
00c8ae4300cbae3e00cfaf3800d3b03200d7b12c00dbb12600dfb22000e3b31a
00dfb51e00dcb62200d8b82700d5ba2b00d1bb2f00cdbd3300cabf3700c6c03b
00c2c24000bfc44400bbc54800b8c74c00b4c85000b0ca5500adcc5900a9cd5d
00a5cf6100a2d165009ed269009bd46e0097d6720093d7760090d97a008cdb7e
0088dc830085de870081e08b007ee18f007cdf93007bdb96007bd699007bd29c
007acd9f007ac9a30079c4a60079c0a90079bbac0078b7af0078b2b20078aeb6
0077a9b90077a5bc0076a0bf00769cc2007697c5007593c900758ecc00748acf
007485d2007481d500737cd8007378dc007273df00726fe200726ae5007166e8
"/>
<palette number="1" name="pal2" source_colors="0,0.545098,0.223529,0.298039 0.0666667,0.694118,0.337255,0.427451 0.133333,0.690196,0.392157,0.505882 0.2,0.686275,0.282353,0.34902 0.266667,0.694118,0.337255,0.419608 0.333333,0.243137,0.286275,0.301961 0.4,0.533333,0.32549,0.521569 0.466667,0.47451,0.392157,0.517647 0.533333,0.52549,0.298039,0.466667 0.6,0.521569,0.243137,0.305882 0.666667,0.521569,0.282353,0.392157 0.733333,0.619608,0.513726,0.556863 0.8,0.486275,0.458824,0.501961 0.866667,0.345098,0.317647,0.352941 0.933333,0.678431,0.360784,0.454902 1,0.807843,0.407843,0.490196 " data="008c3a4d008f3c4f00913d5100933f530095415500974357009a4459009c465b
009e485d00a0495f00a34b6000a54d6200a74e6400a9506600ac526800ae546a
00b0556c00b1566e00b1576f00b1587000b1597100b15a7200b15b7300b15b75
00b15c7600b05d7700b05e7800b05f7900b05f7b00b0607c00b0617d00b0627e
00b0637f00b0648000b0638000b0627e00b0607b00b05e7900b05d7700b05b74
00b0597200b0586f00af566d00af546b00af536800af516600af506400af4e61
00af4c5f00af4b5d00af495a00af485900af495a00af4a5c00af4b5d00b04c5e
00b04c5f00b04d6000b04e6100b04f6200b0506300b0516400b0516500b05266
00b1536700b1546800b1546900b1556a00b0566b00a9556900a35467009c5465
00955364008e5262008851600081515e007a505d00734f5b006d4e5900664e57
005f4d5600584c5400524b52004b4a5000444a4f003e494d00434a5000474a54
004b4b5700504b5a00544c5e00584d61005d4d6400614e6700654e6b006a4f6e
006e4f710072507500775178007b517b007f527e008452820088538500875485
008655850085568500845785008458850083598500825a8500815b8500805c84
007f5d84007e5e84007d5f84007d6084007c6184007b6284007a638400796484
007a6383007a6183007b6082007c5e81007d5d80007e5c7f007e5a7f007f597e
0080577d0081567c0081557c0082537b0083527a0084507900844f7900854e78
00864c7700864b7500864a7300864a700086496e0086486b0086476900864667
00864664008545620085445f0085435d0085425a008541580085415600854053
00853f5100853e4e00853e4f00853f5000854052008540530085415400854155
0085425700854358008543590085445b0085445c0085455d0085455e00854660
00854761008547620085486400864b6600884e680089516b008a556d008c5870
008d5c72008f5f75009063770092667900936a7c00956d7e0096718100987483
00997786009b7b88009c7e8b009e828d009d828d009b828d0099818c0097808b
00957f8a00937f8a00917e89008f7d88008d7c87008b7b8600897a8500877a85
008579840083788300817782007f7681007d7681007b747f0079727d0077707b
00756e7900736c7600716a74006f6872006d6670006a636d0068616b00665f69
00645d6700625b6500605962005e5760005c555e005a535c0059515a005e525c
0063525d0068535f006d54600072546200775564007c56650081566700865768
008b586a0090586b0095596d009a5a6e009f5a7000a45b7100a95b7300ad5c74
00af5d7500b15e7500b35e7600b55f7600b7607700b9607700bb617800bd6278
00bf627900c1637900c3647a00c5657a00c7657b00c8667b00ca677c00cc677d
"/>
<palettes>
<palette number="0" name="pal1" source_colors="0,0.847059,0.482353,0.109804 0.111111,0.878431,0.67451,0.282353 0.222222,0.329412,0.258824,0.866667 0.333333,0.843137,0.286275,0.0745098 0.444444,0.470588,0.909804,0.180392 0.555556,0.0588235,0.168627,0.529412 0.666667,0.439216,0.615686,0.780392 0.777778,0.890196,0.701961,0.101961 0.888889,0.486275,0.886275,0.568627 1,0.443137,0.384314,0.921569 " data="00d87c1d00d87e1f00d9802000d9812200d9832300da852500da862600da8828
00da8a2900db8c2b00db8d2c00db8f2e00dc913000dc933100dc943300dc9634
00dd983600dd993700dd9b3900de9d3a00de9f3c00dea03e00dea23f00dfa441
00dfa54200dfa74400dfa94500e0ab4700dfab4900daa74e00d5a45400d0a059
00cb9c5e00c6996300c1956900bc916e00b88d7300b38a7800ae867e00a98283
00a47e88009f7b8d009a7792009573980090709d008b6ca2008668a7008164ad
007c61b200785db7007359bc006e55c2006952c700644ecc005f4ad1005a47d7
005543dc005842d7005c42d0006143c9006543c2006a43bb006f43b4007344ad
007844a6007b44a1007f449a008445930089458c008d45850092457e00974676
009b466f00a0466800a4466100a9475a00ae475300b2474c00b7474500bb483e
00c0483700c5482f00c9482800ce492100d2491a00d7491300d44f1400d05415
00cd5a1600ca5f1700c6651800c36b1900c0701a00bc761b00b97b1c00b6811c
00b2861d00af8c1e00ac921f00a8972000a59d2100a2a222009ea823009bae24
0098b3250094b9260091be27008ec428008aca290087cf2a0084d52b0080da2c
007de02d0079e62e0076e4300072de33006fd736006bd0390067ca3c0063c33f
0060bc43005cb6460058af490055a94c0051a24f004d9b52004a955500468e58
0042875c003f815f003b7a620037736500336d680030666b002c5f6e00285971
0025527500214b78001d457b001a3e7e0016388100123184000f2b8700132f89
0016338c001a378e001d3b9000203f920024439500274797002b4c99002e509b
0031549e003558a000385ca2003c60a4003f64a7004368a900466cab004970ad
004d74b0005078b200547cb4005780b6005a84b9005e88bb00618cbd006590bf
006894c2006b98c4006f9cc600739ec300779ebd007b9fb7007fa0b10083a1ab
0087a1a5008ba29e008fa3980093a4920097a48c009ba586009fa68000a3a77a
00a7a87400aba86e00afa96800b3aa6200b7ab5c00bbab5500c0ac4f00c4ad49
00c8ae4300cbae3e00cfaf3800d3b03200d7b12c00dbb12600dfb22000e3b31a
00dfb51e00dcb62200d8b82700d5ba2b00d1bb2f00cdbd3300cabf3700c6c03b
00c2c24000bfc44400bbc54800b8c74c00b4c85000b0ca5500adcc5900a9cd5d
00a5cf6100a2d165009ed269009bd46e0097d6720093d7760090d97a008cdb7e
0088dc830085de870081e08b007ee18f007cdf93007bdb96007bd699007bd29c
007acd9f007ac9a30079c4a60079c0a90079bbac0078b7af0078b2b20078aeb6
0077a9b90077a5bc0076a0bf00769cc2007697c5007593c900758ecc00748acf
007485d2007481d500737cd8007378dc007273df00726fe200726ae5007166e8
"/>
<palette number="1" name="pal2" source_colors="0,0.545098,0.223529,0.298039 0.0666667,0.694118,0.337255,0.427451 0.133333,0.690196,0.392157,0.505882 0.2,0.686275,0.282353,0.34902 0.266667,0.694118,0.337255,0.419608 0.333333,0.243137,0.286275,0.301961 0.4,0.533333,0.32549,0.521569 0.466667,0.47451,0.392157,0.517647 0.533333,0.52549,0.298039,0.466667 0.6,0.521569,0.243137,0.305882 0.666667,0.521569,0.282353,0.392157 0.733333,0.619608,0.513726,0.556863 0.8,0.486275,0.458824,0.501961 0.866667,0.345098,0.317647,0.352941 0.933333,0.678431,0.360784,0.454902 1,0.807843,0.407843,0.490196 " data="008c3a4d008f3c4f00913d5100933f530095415500974357009a4459009c465b
009e485d00a0495f00a34b6000a54d6200a74e6400a9506600ac526800ae546a
00b0556c00b1566e00b1576f00b1587000b1597100b15a7200b15b7300b15b75
00b15c7600b05d7700b05e7800b05f7900b05f7b00b0607c00b0617d00b0627e
00b0637f00b0648000b0638000b0627e00b0607b00b05e7900b05d7700b05b74
00b0597200b0586f00af566d00af546b00af536800af516600af506400af4e61
00af4c5f00af4b5d00af495a00af485900af495a00af4a5c00af4b5d00b04c5e
00b04c5f00b04d6000b04e6100b04f6200b0506300b0516400b0516500b05266
00b1536700b1546800b1546900b1556a00b0566b00a9556900a35467009c5465
00955364008e5262008851600081515e007a505d00734f5b006d4e5900664e57
005f4d5600584c5400524b52004b4a5000444a4f003e494d00434a5000474a54
004b4b5700504b5a00544c5e00584d61005d4d6400614e6700654e6b006a4f6e
006e4f710072507500775178007b517b007f527e008452820088538500875485
008655850085568500845785008458850083598500825a8500815b8500805c84
007f5d84007e5e84007d5f84007d6084007c6184007b6284007a638400796484
007a6383007a6183007b6082007c5e81007d5d80007e5c7f007e5a7f007f597e
0080577d0081567c0081557c0082537b0083527a0084507900844f7900854e78
00864c7700864b7500864a7300864a700086496e0086486b0086476900864667
00864664008545620085445f0085435d0085425a008541580085415600854053
00853f5100853e4e00853e4f00853f5000854052008540530085415400854155
0085425700854358008543590085445b0085445c0085455d0085455e00854660
00854761008547620085486400864b6600884e680089516b008a556d008c5870
008d5c72008f5f75009063770092667900936a7c00956d7e0096718100987483
00997786009b7b88009c7e8b009e828d009d828d009b828d0099818c0097808b
00957f8a00937f8a00917e89008f7d88008d7c87008b7b8600897a8500877a85
008579840083788300817782007f7681007d7681007b747f0079727d0077707b
00756e7900736c7600716a74006f6872006d6670006a636d0068616b00665f69
00645d6700625b6500605962005e5760005c555e005a535c0059515a005e525c
0063525d0068535f006d54600072546200775564007c56650081566700865768
008b586a0090586b0095596d009a5a6e009f5a7000a45b7100a95b7300ad5c74
00af5d7500b15e7500b35e7600b55f7600b7607700b9607700bb617800bd6278
00bf627900c1637900c3647a00c5657a00c7657b00c8667b00ca677c00cc677d
"/>
</palettes>

1346
LICENSE

File diff suppressed because it is too large Load Diff

128
README.md
View File

@ -1,65 +1,65 @@
Fractorium
==========
A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm
named Ember and a GPU capable version named EmberCL which implements a portion
of the cuburn algorithm in OpenCL.
# Install
## Windows
Download: [Fractorium_22.21.4.2.msi](https://drive.google.com/file/d/1eeUNoAvkrfSG6fCObAYE1e2vmvUQY6MR/view?usp=sharing)
## Mac
Download: [Fractorium_22.21.4.2.dmg](https://drive.google.com/file/d/19cT7EyqmC-bMFl5PdBMaQE-qNbLz0wrR/view?usp=sharing)
## Linux
### Install from PPA
Enable `universe` in the Ubuntu Software Center:
- open the Edit menu
- select Software Sources...
- enable "Community maintained ... `universe`"
Add the [Fractorium Ubuntu PPA](https://launchpad.net/~fractorium/+archive/ubuntu/ppa) and install:
```
sudo apt-add-repository ppa:fractorium/ppa
sudo apt-get update
sudo apt-get install fractorium
```
### Install from App Image .deb
Install ubuntu.
Download: [Fractorium-22.21.4.2.x86_64.deb](https://drive.google.com/file/d/1KJTQEh7Ll4fMTloTDPIZIJGkTL2eEbIj/view?usp=sharing)
```
cd ~/Downloads
sudo dpkg -i Fractorium-22.21.4.2.x86_64.deb
```
### Install from App Image .rpm
Download: [Fractorium-22.21.4.2.x86_64.rpm](https://drive.google.com/file/d/1VNT77_V51O4o01_Q_3SToZjr-L4SX_cy/view?usp=sharing)
# Building from git
All builds are 64-bit.
## Windows
[Build Guide for Visual Studio 2019 or Qt Creator](Data/BuildGuideQtCreator.md)
## Linux
[Build Guide for Linux](./Data/BuildGuideLinux.md)
## Mac OS/X Sierra, El Capitan, Yosemite and Mavericks
Fractorium
==========
A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm
named Ember and a GPU capable version named EmberCL which implements a portion
of the cuburn algorithm in OpenCL.
# Install
## Windows
Download: [Fractorium_22.21.4.2.msi](https://drive.google.com/file/d/1eeUNoAvkrfSG6fCObAYE1e2vmvUQY6MR/view?usp=sharing)
## Mac
Download: [Fractorium_22.21.4.2.dmg](https://drive.google.com/file/d/19cT7EyqmC-bMFl5PdBMaQE-qNbLz0wrR/view?usp=sharing)
## Linux
### Install from PPA
Enable `universe` in the Ubuntu Software Center:
- open the Edit menu
- select Software Sources...
- enable "Community maintained ... `universe`"
Add the [Fractorium Ubuntu PPA](https://launchpad.net/~fractorium/+archive/ubuntu/ppa) and install:
```
sudo apt-add-repository ppa:fractorium/ppa
sudo apt-get update
sudo apt-get install fractorium
```
### Install from App Image .deb
Install ubuntu.
Download: [Fractorium-22.21.4.2.x86_64.deb](https://drive.google.com/file/d/1KJTQEh7Ll4fMTloTDPIZIJGkTL2eEbIj/view?usp=sharing)
```
cd ~/Downloads
sudo dpkg -i Fractorium-22.21.4.2.x86_64.deb
```
### Install from App Image .rpm
Download: [Fractorium-22.21.4.2.x86_64.rpm](https://drive.google.com/file/d/1VNT77_V51O4o01_Q_3SToZjr-L4SX_cy/view?usp=sharing)
# Building from git
All builds are 64-bit.
## Windows
[Build Guide for Visual Studio 2019 or Qt Creator](Data/BuildGuideQtCreator.md)
## Linux
[Build Guide for Linux](./Data/BuildGuideLinux.md)
## Mac OS/X Sierra, El Capitan, Yosemite and Mavericks
[Build Guide for Mac OS/X](./Data/BuildGuideMacOSX.md)

View File

@ -1,452 +1,452 @@
#include "EmberPch.h"
#include "Affine2D.h"
namespace EmberNs
{
/// <summary>
/// Default constructor which sets the matrix to the identity.
/// </summary>
template <typename T>
Affine2D<T>::Affine2D()
{
MakeID();
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename T>
Affine2D<T>::Affine2D(const Affine2D<T>& affine)
{
Affine2D<T>::operator=<T>(affine);
}
/// <summary>
/// Constructor which takes each column of the affine as a separate parameter.
/// </summary>
/// <param name="x">A and D</param>
/// <param name="y">B and E</param>
/// <param name="t">C and F</param>
template <typename T>
Affine2D<T>::Affine2D(v2T& x, v2T& y, v2T& t)
{
X(x);
Y(y);
O(t);
}
/// <summary>
/// Constructor which takes all six of the affine values as parameters.
/// </summary>
/// <param name="xx">A</param>
/// <param name="xy">D</param>
/// <param name="yx">B</param>
/// <param name="yy">E</param>
/// <param name="tx">C</param>
/// <param name="ty">F</param>
template <typename T>
Affine2D<T>::Affine2D(T xx, T xy, T yx, T yy, T tx, T ty)
{
A(xx);
D(xy);
B(yx);
E(yy);
C(tx);
F(ty);
}
/// <summary>
/// Constructor which takes a 4x4 matrix and assigns the
/// corresponding values in the 2x3 affine matrix.
/// </summary>
/// <param name="mat">The 4x4 affine matrix to read from</param>
template <typename T>
Affine2D<T>::Affine2D(m4T& mat)
{
A(mat[0][0]);
B(mat[0][1]);
C(mat[0][3]);
D(mat[1][0]);
E(mat[1][1]);
F(mat[1][3]);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename T>
Affine2D<T>& Affine2D<T>::operator = (const Affine2D<T>& affine)
{
if (this != &affine)
Affine2D<T>::operator=<T>(affine);
return *this;
}
/// <summary>
/// == operator which tests if all fields are equal with another Affine2D.
/// </summary>
/// <param name="affine">The Affine2D to compare to</param>
/// <returns>True if all fields are equal, else false</returns>
template <typename T>
bool Affine2D<T>::operator == (const Affine2D<T>& affine) const
{
return IsClose(A(), affine.A()) &&
IsClose(B(), affine.B()) &&
IsClose(C(), affine.C()) &&
IsClose(D(), affine.D()) &&
IsClose(E(), affine.E()) &&
IsClose(F(), affine.F());
}
/// <summary>
/// * operator to multiply this affine transform by a vec2 and return the result as a vec2.
/// </summary>
/// <param name="v">The vec2 to multiply by</param>
/// <returns>A new vec2 which is the product of the multiplication</returns>
template <typename T>
typename v2T Affine2D<T>::operator * (const v2T& v) const
{
return TransformVector(v);
}
/// <summary>
/// Return a copy of the object with all values A-F scaled by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
/// <returns>A new Affine2D which a scaled copy of this instance</returns>
template <typename T>
Affine2D<T> Affine2D<T>:: operator * (T t) const
{
return Affine2D<T>(A() * t,
D() * t,
B() * t,
E() * t,
C() * t,
F() * t);
}
/// <summary>
/// Make this affine transform the identity matrix.
/// A and E = 1, all else 0.
/// </summary>
template <typename T>
void Affine2D<T>::MakeID()
{
A(1);
B(0);
C(0);
D(0);
E(1);
F(0);
}
/// <summary>
/// Determine whether this affine transform is the identity matrix.
/// </summary>
/// <returns>True if A and E are equal to 1 and all others are 0, else false.</returns>
template <typename T>
bool Affine2D<T>::IsID() const
{
return (A() == 1) &&
(B() == 0) &&
(C() == 0) &&
(D() == 0) &&
(E() == 1) &&
(F() == 0);
}
/// <summary>
/// Determine whether this affine transform is all zeroes.
/// </summary>
/// <returns>True if all 6 elements equal zero, else false.</returns>
template <typename T>
bool Affine2D<T>::IsZero() const
{
return (A() == 0) &&
(B() == 0) &&
(C() == 0) &&
(D() == 0) &&
(E() == 0) &&
(F() == 0);
}
/// <summary>
/// Determine whether this affine transform was deliberately set to all empty values.
/// </summary>
/// <returns>True if all 6 elements equal zero, else false.</returns>
template <typename T>
bool Affine2D<T>::IsEmpty() const
{
return (IsClose<T>(A(), EMPTYFIELD)) &&
(IsClose<T>(B(), EMPTYFIELD)) &&
(IsClose<T>(C(), EMPTYFIELD)) &&
(IsClose<T>(D(), EMPTYFIELD)) &&
(IsClose<T>(E(), EMPTYFIELD)) &&
(IsClose<T>(F(), EMPTYFIELD));
}
/// <summary>
/// Scales all values A-F by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
template <typename T>
void Affine2D<T>::Scale(T amount)
{
A(A() * amount);
B(B() * amount);
C(C() * amount);
D(D() * amount);
E(E() * amount);
F(F() * amount);
}
/// <summary>
/// Scales all values A,B,D,E by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
template <typename T>
void Affine2D<T>::ScaleXY(T amount)
{
A(A() * amount);
B(B() * amount);
D(D() * amount);
E(E() * amount);
}
/// <summary>
/// Rotate this affine transform around its origin by the specified angle in degrees.
/// </summary>
/// <param name="angle">The angle to rotate by</param>
template <typename T>
void Affine2D<T>::Rotate(T rad)
{
const m4T origMat4 = ToMat4ColMajor(true);//Must center and use column major for glm to work.
const m4T newMat4 = glm::rotate(origMat4, rad, v3T(0, 0, 1));//Assuming only rotating around z.
A(newMat4[0][0]);//Use direct assignments instead of constructor to skip assigning C and F.
B(newMat4[0][1]);
D(newMat4[1][0]);
E(newMat4[1][1]);
}
template <typename T>
void Affine2D<T>::RotateTrans(T rad)
{
const m4T origMat4 = TransToMat4ColMajor();//Only put translation in this matrix.
const m4T newMat4 = glm::rotate(origMat4, rad, v3T(0, 0, 1));//Assuming only rotating around z.
C(newMat4[0][3]);//Use direct assignments instead of constructor to skip assigning A, B, D, E.
F(newMat4[1][3]);
}
/// <summary>
/// Move by v.
/// </summary>
/// <param name="v">The vec2 describing how far to move in the x and y directions</param>
template <typename T>
void Affine2D<T>::Translate(const v2T& v)
{
O(O() + v);
}
/// <summary>
/// Rotate and scale the X and Y components by a certain amount based on X.
/// </summary>
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
template <typename T>
void Affine2D<T>::RotateScaleXTo(const v2T& v)
{
const Affine2D<T> rs = CalcRotateScale(X(), v);
X(rs.TransformNormal(X()));
Y(rs.TransformNormal(Y()));
}
/// <summary>
/// Rotate and scale the X and Y components by a certain amount based on Y.
/// </summary>
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
template <typename T>
void Affine2D<T>::RotateScaleYTo(const v2T& v)
{
const Affine2D<T> rs = CalcRotateScale(Y(), v);
X(rs.TransformNormal(X()));
Y(rs.TransformNormal(Y()));
}
/// <summary>
/// Return the inverse of the 2x3 affine matrix.
/// </summary>
/// <returns>The inverse of this affine transform</returns>
template <typename T>
Affine2D<T> Affine2D<T>::Inverse() const
{
const T det = A() * E() - D() * B();
return Affine2D<T>(E() / det, -D() / det,
-B() / det, A() / det,
(F() * B() - C() * E()) / det, (C() * D() - F() * A()) / det);
}
/// <summary>
/// Return a vec2 gotten from transforming this affine transform
/// by the vec2 passed in, but with a T component of 0, 0.
/// </summary>
/// <param name="v">The vec2 describing how much to transform by</param>
/// <returns>The centered, transformed vec2</returns>
template <typename T>
typename v2T Affine2D<T>::TransformNormal(const v2T& v) const
{
return v2T(A() * v.x + B() * v.y, D() * v.x + E() * v.y);
}
/// <summary>
/// Return a vec2 gotten from transforming this affine transform
/// by the vec2 passed in, and applying T translation.
/// </summary>
/// <param name="v">The vec2 describing how much to transform by</param>
/// <returns>The translated, transformed vec2</returns>
template <typename T>
typename v2T Affine2D<T>::TransformVector(const v2T& v) const
{
return v2T(A() * v.x + B() * v.y + C(), D() * v.x + E() * v.y + F());
}
/// <summary>
/// Return the X and Y components as a 2x2 matrix in column major order.
/// </summary>
/// <returns>The 2x2 matrix</returns>
template <typename T>
typename m2T Affine2D<T>::ToMat2ColMajor() const
{
return m2T(A(), B(),//Col0...
D(), E());//1
}
/// <summary>
/// Return the X and Y components as a 2x2 matrix in row major order.
/// </summary>
/// <returns>The 2x2 matrix</returns>
template <typename T>
typename m2T Affine2D<T>::ToMat2RowMajor() const
{
return m2T(A(), D(),//Col0...
B(), E());//1
}
/// <summary>
/// Return the 2x3 affine transform matrix as a 4x4 matrix in column major order.
/// </summary>
/// <param name="center">Whether to use T translation value or just 0 for center</param>
/// <returns>The 4x4 matrix</returns>
template <typename T>
typename m4T Affine2D<T>::ToMat4ColMajor(bool center) const
{
const m4T mat(A(), B(), 0, center ? 0 : C(), //Col0...
D(), E(), 0, center ? 0 : F(), //1
0, 0, 1, 0, //2
0, 0, 0, 1);//3
return mat;
}
/// <summary>
/// Return the 2x3 affine transform matrix as a 4x4 matrix in row major order.
/// </summary>
/// <param name="center">Whether to use T translation value or just 0 for center</param>
/// <returns>The 4x4 matrix</returns>
template <typename T>
typename m4T Affine2D<T>::ToMat4RowMajor(bool center) const
{
const m4T mat(A(), D(), 0, 0,
B(), E(), 0, 0,
0, 0, 1, 0,
center ? 0 : C(), center ? 0 : F(), 0, 1);
return mat;
}
template <typename T>
typename m4T Affine2D<T>::TransToMat4ColMajor() const
{
const m4T mat(1, 0, 0, C(), //Col0...
0, 1, 0, F(), //1
0, 0, 1, 0, //2
0, 0, 0, 1);//3
return mat;
}
/// <summary>
/// Accessors.
/// </summary>
template <typename T> T Affine2D<T>::A() const { return m_Mat[0][0]; }//[0][0]//flam3
template <typename T> T Affine2D<T>::B() const { return m_Mat[0][1]; }//[1][0]
template <typename T> T Affine2D<T>::C() const { return m_Mat[0][2]; }//[2][0]
template <typename T> T Affine2D<T>::D() const { return m_Mat[1][0]; }//[0][1]
template <typename T> T Affine2D<T>::E() const { return m_Mat[1][1]; }//[1][1]
template <typename T> T Affine2D<T>::F() const { return m_Mat[1][2]; }//[2][1]
template <typename T> void Affine2D<T>::A(T a) { m_Mat[0][0] = a; }
template <typename T> void Affine2D<T>::B(T b) { m_Mat[0][1] = b; }
template <typename T> void Affine2D<T>::C(T c) { m_Mat[0][2] = c; }
template <typename T> void Affine2D<T>::D(T d) { m_Mat[1][0] = d; }
template <typename T> void Affine2D<T>::E(T e) { m_Mat[1][1] = e; }
template <typename T> void Affine2D<T>::F(T f) { m_Mat[1][2] = f; }
template <typename T> typename v2T Affine2D<T>::X() const { return v2T(A(), D()); }//X Axis.
template <typename T> typename v2T Affine2D<T>::Y() const { return v2T(B(), E()); }//Y Axis.
template <typename T> typename v2T Affine2D<T>::O() const { return v2T(C(), F()); }//Translation.
template <typename T> void Affine2D<T>::X(const v2T& x) { A(x.x); D(x.y); }//X Axis.
template <typename T> void Affine2D<T>::Y(const v2T& y) { B(y.x); E(y.y); }//Y Axis.
template <typename T> void Affine2D<T>::O(const v2T& t) { C(t.x); F(t.y); }//Translation.
template <typename T>
string Affine2D<T>::ToString() const
{
ostringstream ss;
ss << "A: " << A() << " "
<< "B: " << B() << " "
<< "C: " << C()
<< "\nD: " << D() << " "
<< "E: " << E() << " "
<< "F: " << F();
return ss.str();
}
/// <summary>
/// Rotate and scale this affine transform and return as a copy. Orginal is unchanged.
/// </summary>
/// <param name="from">The starting point to rotate and scale from</param>
/// <param name="to">The ending point to rotate and scale to</param>
/// <returns>The newly rotated and scalled Affine2D</returns>
template <typename T>
Affine2D<T> Affine2D<T>::CalcRotateScale(const v2T& from, const v2T& to)
{
T a, c;
CalcRSAC(from, to, a, c);
return Affine2D<T>(a, c, -c, a, 0, 0);
}
/// <summary>
/// Never fully understood what this did or why it's named what it is.
/// But it seems to handle some rotating and scaling.
/// </summary>
/// <param name="from">The starting point to rotate and scale from</param>
/// <param name="to">The ending point to rotate and scale to</param>
/// <param name="a">a</param>
/// <param name="c">c</param>
template <typename T>
void Affine2D<T>::CalcRSAC(const v2T& from, const v2T& to, T& a, T& c)
{
const T lsq = from.x * from.x + from.y * from.y;
a = (from.y * to.y + from.x * to.x) / lsq;
c = (from.x * to.y - from.y * to.x) / lsq;
}
//This class had to be implemented in a cpp file because the compiler was breaking.
//So the explicit instantiation must be declared here rather than in Ember.cpp where
//all of the other classes are done.
template EMBER_API class Affine2D<float>;
#ifdef DO_DOUBLE
template EMBER_API class Affine2D<double>;
#endif
}
#include "EmberPch.h"
#include "Affine2D.h"
namespace EmberNs
{
/// <summary>
/// Default constructor which sets the matrix to the identity.
/// </summary>
template <typename T>
Affine2D<T>::Affine2D()
{
MakeID();
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename T>
Affine2D<T>::Affine2D(const Affine2D<T>& affine)
{
Affine2D<T>::operator=<T>(affine);
}
/// <summary>
/// Constructor which takes each column of the affine as a separate parameter.
/// </summary>
/// <param name="x">A and D</param>
/// <param name="y">B and E</param>
/// <param name="t">C and F</param>
template <typename T>
Affine2D<T>::Affine2D(v2T& x, v2T& y, v2T& t)
{
X(x);
Y(y);
O(t);
}
/// <summary>
/// Constructor which takes all six of the affine values as parameters.
/// </summary>
/// <param name="xx">A</param>
/// <param name="xy">D</param>
/// <param name="yx">B</param>
/// <param name="yy">E</param>
/// <param name="tx">C</param>
/// <param name="ty">F</param>
template <typename T>
Affine2D<T>::Affine2D(T xx, T xy, T yx, T yy, T tx, T ty)
{
A(xx);
D(xy);
B(yx);
E(yy);
C(tx);
F(ty);
}
/// <summary>
/// Constructor which takes a 4x4 matrix and assigns the
/// corresponding values in the 2x3 affine matrix.
/// </summary>
/// <param name="mat">The 4x4 affine matrix to read from</param>
template <typename T>
Affine2D<T>::Affine2D(m4T& mat)
{
A(mat[0][0]);
B(mat[0][1]);
C(mat[0][3]);
D(mat[1][0]);
E(mat[1][1]);
F(mat[1][3]);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename T>
Affine2D<T>& Affine2D<T>::operator = (const Affine2D<T>& affine)
{
if (this != &affine)
Affine2D<T>::operator=<T>(affine);
return *this;
}
/// <summary>
/// == operator which tests if all fields are equal with another Affine2D.
/// </summary>
/// <param name="affine">The Affine2D to compare to</param>
/// <returns>True if all fields are equal, else false</returns>
template <typename T>
bool Affine2D<T>::operator == (const Affine2D<T>& affine) const
{
return IsClose(A(), affine.A()) &&
IsClose(B(), affine.B()) &&
IsClose(C(), affine.C()) &&
IsClose(D(), affine.D()) &&
IsClose(E(), affine.E()) &&
IsClose(F(), affine.F());
}
/// <summary>
/// * operator to multiply this affine transform by a vec2 and return the result as a vec2.
/// </summary>
/// <param name="v">The vec2 to multiply by</param>
/// <returns>A new vec2 which is the product of the multiplication</returns>
template <typename T>
typename v2T Affine2D<T>::operator * (const v2T& v) const
{
return TransformVector(v);
}
/// <summary>
/// Return a copy of the object with all values A-F scaled by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
/// <returns>A new Affine2D which a scaled copy of this instance</returns>
template <typename T>
Affine2D<T> Affine2D<T>:: operator * (T t) const
{
return Affine2D<T>(A() * t,
D() * t,
B() * t,
E() * t,
C() * t,
F() * t);
}
/// <summary>
/// Make this affine transform the identity matrix.
/// A and E = 1, all else 0.
/// </summary>
template <typename T>
void Affine2D<T>::MakeID()
{
A(1);
B(0);
C(0);
D(0);
E(1);
F(0);
}
/// <summary>
/// Determine whether this affine transform is the identity matrix.
/// </summary>
/// <returns>True if A and E are equal to 1 and all others are 0, else false.</returns>
template <typename T>
bool Affine2D<T>::IsID() const
{
return (A() == 1) &&
(B() == 0) &&
(C() == 0) &&
(D() == 0) &&
(E() == 1) &&
(F() == 0);
}
/// <summary>
/// Determine whether this affine transform is all zeroes.
/// </summary>
/// <returns>True if all 6 elements equal zero, else false.</returns>
template <typename T>
bool Affine2D<T>::IsZero() const
{
return (A() == 0) &&
(B() == 0) &&
(C() == 0) &&
(D() == 0) &&
(E() == 0) &&
(F() == 0);
}
/// <summary>
/// Determine whether this affine transform was deliberately set to all empty values.
/// </summary>
/// <returns>True if all 6 elements equal zero, else false.</returns>
template <typename T>
bool Affine2D<T>::IsEmpty() const
{
return (IsClose<T>(A(), EMPTYFIELD)) &&
(IsClose<T>(B(), EMPTYFIELD)) &&
(IsClose<T>(C(), EMPTYFIELD)) &&
(IsClose<T>(D(), EMPTYFIELD)) &&
(IsClose<T>(E(), EMPTYFIELD)) &&
(IsClose<T>(F(), EMPTYFIELD));
}
/// <summary>
/// Scales all values A-F by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
template <typename T>
void Affine2D<T>::Scale(T amount)
{
A(A() * amount);
B(B() * amount);
C(C() * amount);
D(D() * amount);
E(E() * amount);
F(F() * amount);
}
/// <summary>
/// Scales all values A,B,D,E by the specified amount.
/// </summary>
/// <param name="amount">The amount to scale by</param>
template <typename T>
void Affine2D<T>::ScaleXY(T amount)
{
A(A() * amount);
B(B() * amount);
D(D() * amount);
E(E() * amount);
}
/// <summary>
/// Rotate this affine transform around its origin by the specified angle in degrees.
/// </summary>
/// <param name="angle">The angle to rotate by</param>
template <typename T>
void Affine2D<T>::Rotate(T rad)
{
const m4T origMat4 = ToMat4ColMajor(true);//Must center and use column major for glm to work.
const m4T newMat4 = glm::rotate(origMat4, rad, v3T(0, 0, 1));//Assuming only rotating around z.
A(newMat4[0][0]);//Use direct assignments instead of constructor to skip assigning C and F.
B(newMat4[0][1]);
D(newMat4[1][0]);
E(newMat4[1][1]);
}
template <typename T>
void Affine2D<T>::RotateTrans(T rad)
{
const m4T origMat4 = TransToMat4ColMajor();//Only put translation in this matrix.
const m4T newMat4 = glm::rotate(origMat4, rad, v3T(0, 0, 1));//Assuming only rotating around z.
C(newMat4[0][3]);//Use direct assignments instead of constructor to skip assigning A, B, D, E.
F(newMat4[1][3]);
}
/// <summary>
/// Move by v.
/// </summary>
/// <param name="v">The vec2 describing how far to move in the x and y directions</param>
template <typename T>
void Affine2D<T>::Translate(const v2T& v)
{
O(O() + v);
}
/// <summary>
/// Rotate and scale the X and Y components by a certain amount based on X.
/// </summary>
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
template <typename T>
void Affine2D<T>::RotateScaleXTo(const v2T& v)
{
const Affine2D<T> rs = CalcRotateScale(X(), v);
X(rs.TransformNormal(X()));
Y(rs.TransformNormal(Y()));
}
/// <summary>
/// Rotate and scale the X and Y components by a certain amount based on Y.
/// </summary>
/// <param name="v">The vec2 describing how much to rotate and scale the X and Y components</param>
template <typename T>
void Affine2D<T>::RotateScaleYTo(const v2T& v)
{
const Affine2D<T> rs = CalcRotateScale(Y(), v);
X(rs.TransformNormal(X()));
Y(rs.TransformNormal(Y()));
}
/// <summary>
/// Return the inverse of the 2x3 affine matrix.
/// </summary>
/// <returns>The inverse of this affine transform</returns>
template <typename T>
Affine2D<T> Affine2D<T>::Inverse() const
{
const T det = A() * E() - D() * B();
return Affine2D<T>(E() / det, -D() / det,
-B() / det, A() / det,
(F() * B() - C() * E()) / det, (C() * D() - F() * A()) / det);
}
/// <summary>
/// Return a vec2 gotten from transforming this affine transform
/// by the vec2 passed in, but with a T component of 0, 0.
/// </summary>
/// <param name="v">The vec2 describing how much to transform by</param>
/// <returns>The centered, transformed vec2</returns>
template <typename T>
typename v2T Affine2D<T>::TransformNormal(const v2T& v) const
{
return v2T(A() * v.x + B() * v.y, D() * v.x + E() * v.y);
}
/// <summary>
/// Return a vec2 gotten from transforming this affine transform
/// by the vec2 passed in, and applying T translation.
/// </summary>
/// <param name="v">The vec2 describing how much to transform by</param>
/// <returns>The translated, transformed vec2</returns>
template <typename T>
typename v2T Affine2D<T>::TransformVector(const v2T& v) const
{
return v2T(A() * v.x + B() * v.y + C(), D() * v.x + E() * v.y + F());
}
/// <summary>
/// Return the X and Y components as a 2x2 matrix in column major order.
/// </summary>
/// <returns>The 2x2 matrix</returns>
template <typename T>
typename m2T Affine2D<T>::ToMat2ColMajor() const
{
return m2T(A(), B(),//Col0...
D(), E());//1
}
/// <summary>
/// Return the X and Y components as a 2x2 matrix in row major order.
/// </summary>
/// <returns>The 2x2 matrix</returns>
template <typename T>
typename m2T Affine2D<T>::ToMat2RowMajor() const
{
return m2T(A(), D(),//Col0...
B(), E());//1
}
/// <summary>
/// Return the 2x3 affine transform matrix as a 4x4 matrix in column major order.
/// </summary>
/// <param name="center">Whether to use T translation value or just 0 for center</param>
/// <returns>The 4x4 matrix</returns>
template <typename T>
typename m4T Affine2D<T>::ToMat4ColMajor(bool center) const
{
const m4T mat(A(), B(), 0, center ? 0 : C(), //Col0...
D(), E(), 0, center ? 0 : F(), //1
0, 0, 1, 0, //2
0, 0, 0, 1);//3
return mat;
}
/// <summary>
/// Return the 2x3 affine transform matrix as a 4x4 matrix in row major order.
/// </summary>
/// <param name="center">Whether to use T translation value or just 0 for center</param>
/// <returns>The 4x4 matrix</returns>
template <typename T>
typename m4T Affine2D<T>::ToMat4RowMajor(bool center) const
{
const m4T mat(A(), D(), 0, 0,
B(), E(), 0, 0,
0, 0, 1, 0,
center ? 0 : C(), center ? 0 : F(), 0, 1);
return mat;
}
template <typename T>
typename m4T Affine2D<T>::TransToMat4ColMajor() const
{
const m4T mat(1, 0, 0, C(), //Col0...
0, 1, 0, F(), //1
0, 0, 1, 0, //2
0, 0, 0, 1);//3
return mat;
}
/// <summary>
/// Accessors.
/// </summary>
template <typename T> T Affine2D<T>::A() const { return m_Mat[0][0]; }//[0][0]//flam3
template <typename T> T Affine2D<T>::B() const { return m_Mat[0][1]; }//[1][0]
template <typename T> T Affine2D<T>::C() const { return m_Mat[0][2]; }//[2][0]
template <typename T> T Affine2D<T>::D() const { return m_Mat[1][0]; }//[0][1]
template <typename T> T Affine2D<T>::E() const { return m_Mat[1][1]; }//[1][1]
template <typename T> T Affine2D<T>::F() const { return m_Mat[1][2]; }//[2][1]
template <typename T> void Affine2D<T>::A(T a) { m_Mat[0][0] = a; }
template <typename T> void Affine2D<T>::B(T b) { m_Mat[0][1] = b; }
template <typename T> void Affine2D<T>::C(T c) { m_Mat[0][2] = c; }
template <typename T> void Affine2D<T>::D(T d) { m_Mat[1][0] = d; }
template <typename T> void Affine2D<T>::E(T e) { m_Mat[1][1] = e; }
template <typename T> void Affine2D<T>::F(T f) { m_Mat[1][2] = f; }
template <typename T> typename v2T Affine2D<T>::X() const { return v2T(A(), D()); }//X Axis.
template <typename T> typename v2T Affine2D<T>::Y() const { return v2T(B(), E()); }//Y Axis.
template <typename T> typename v2T Affine2D<T>::O() const { return v2T(C(), F()); }//Translation.
template <typename T> void Affine2D<T>::X(const v2T& x) { A(x.x); D(x.y); }//X Axis.
template <typename T> void Affine2D<T>::Y(const v2T& y) { B(y.x); E(y.y); }//Y Axis.
template <typename T> void Affine2D<T>::O(const v2T& t) { C(t.x); F(t.y); }//Translation.
template <typename T>
string Affine2D<T>::ToString() const
{
ostringstream ss;
ss << "A: " << A() << " "
<< "B: " << B() << " "
<< "C: " << C()
<< "\nD: " << D() << " "
<< "E: " << E() << " "
<< "F: " << F();
return ss.str();
}
/// <summary>
/// Rotate and scale this affine transform and return as a copy. Orginal is unchanged.
/// </summary>
/// <param name="from">The starting point to rotate and scale from</param>
/// <param name="to">The ending point to rotate and scale to</param>
/// <returns>The newly rotated and scalled Affine2D</returns>
template <typename T>
Affine2D<T> Affine2D<T>::CalcRotateScale(const v2T& from, const v2T& to)
{
T a, c;
CalcRSAC(from, to, a, c);
return Affine2D<T>(a, c, -c, a, 0, 0);
}
/// <summary>
/// Never fully understood what this did or why it's named what it is.
/// But it seems to handle some rotating and scaling.
/// </summary>
/// <param name="from">The starting point to rotate and scale from</param>
/// <param name="to">The ending point to rotate and scale to</param>
/// <param name="a">a</param>
/// <param name="c">c</param>
template <typename T>
void Affine2D<T>::CalcRSAC(const v2T& from, const v2T& to, T& a, T& c)
{
const T lsq = from.x * from.x + from.y * from.y;
a = (from.y * to.y + from.x * to.x) / lsq;
c = (from.x * to.y - from.y * to.x) / lsq;
}
//This class had to be implemented in a cpp file because the compiler was breaking.
//So the explicit instantiation must be declared here rather than in Ember.cpp where
//all of the other classes are done.
template EMBER_API class Affine2D<float>;
#ifdef DO_DOUBLE
template EMBER_API class Affine2D<double>;
#endif
}

View File

@ -1,125 +1,125 @@
#pragma once
#include "Utils.h"
/// <summary>
/// Affine2D class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// Uses matrix composition to handle the
/// affine matrix. Taken almost entirely from
/// Fractron, but using glm, and in C++.
/// Note that the matrix layout differs from flam3 so it's best to use
/// the A, B, C, D, E, F wrappers around the underlying matrix indices. But if the matrix must
/// be accessed directly, the two are laid out as such:
/// flam3: 3 columns of 2 rows each. Accessed col, row.
/// [a(0,0)][b(1,0)][c(2,0)]
/// [d(0,1)][e(1,1)][f(2,1)]
/// Ember: 2 columns of 3 rows each. Accessed col, row.
/// [a(0,0)][d(1,0)]
/// [b(0,1)][e(1,1)]
/// [c(0,2)][f(1,2)]
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API Affine2D
{
public:
Affine2D();
Affine2D(const Affine2D<T>& affine);
/// <summary>
/// Copy constructor to copy an Affine2D object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename U>
Affine2D(const Affine2D<U>& affine)
{
Affine2D<T>::operator=<U>(affine);
}
Affine2D(v2T& x, v2T& y, v2T& t);
Affine2D(T xx, T xy, T yx, T yy, T tx, T ty);
Affine2D(m4T& mat);
Affine2D<T>& operator = (const Affine2D<T>& affine);
/// <summary>
/// Assignment operator to assign an Affine2D object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="affine">The Affine2D object to copy.</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Affine2D<T>& operator = (const Affine2D<U>& affine)
{
A(static_cast<T>(affine.A()));
B(static_cast<T>(affine.B()));
C(static_cast<T>(affine.C()));
D(static_cast<T>(affine.D()));
E(static_cast<T>(affine.E()));
F(static_cast<T>(affine.F()));
return *this;
}
bool operator == (const Affine2D<T>& affine) const;
v2T operator * (const v2T& v) const;
Affine2D<T> operator * (T t) const;
void MakeID();
bool IsID() const;
bool IsZero() const;
bool IsEmpty() const;
void Scale(T amount);
void ScaleXY(T amount);
Affine2D<T> ScaleCopy(T amount);
void Rotate(T rad);
void RotateTrans(T rad);
void Translate(const v2T& v);
void RotateScaleXTo(const v2T& v);
void RotateScaleYTo(const v2T& v);
Affine2D<T> Inverse() const;
v2T TransformNormal(const v2T& v) const;
v2T TransformVector(const v2T& v) const;
m2T ToMat2ColMajor() const;
m2T ToMat2RowMajor() const;
m4T ToMat4ColMajor(bool center = false) const;
m4T ToMat4RowMajor(bool center = false) const;
m4T TransToMat4ColMajor() const;
//Note that returning a copy is actually faster than a const ref&.
T A() const;
T B() const;
T C() const;
T D() const;
T E() const;
T F() const;
void A(T a);
void B(T b);
void C(T c);
void D(T d);
void E(T e);
void F(T f);
v2T X() const;
v2T Y() const;
v2T O() const;
void X(const v2T& x);
void Y(const v2T& y);
void O(const v2T& t);
string ToString() const;
static Affine2D CalcRotateScale(const v2T& from, const v2T& to);
static void CalcRSAC(const v2T& from, const v2T& to, T& a, T& c);
m23T m_Mat;
};
}
#pragma once
#include "Utils.h"
/// <summary>
/// Affine2D class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// Uses matrix composition to handle the
/// affine matrix. Taken almost entirely from
/// Fractron, but using glm, and in C++.
/// Note that the matrix layout differs from flam3 so it's best to use
/// the A, B, C, D, E, F wrappers around the underlying matrix indices. But if the matrix must
/// be accessed directly, the two are laid out as such:
/// flam3: 3 columns of 2 rows each. Accessed col, row.
/// [a(0,0)][b(1,0)][c(2,0)]
/// [d(0,1)][e(1,1)][f(2,1)]
/// Ember: 2 columns of 3 rows each. Accessed col, row.
/// [a(0,0)][d(1,0)]
/// [b(0,1)][e(1,1)]
/// [c(0,2)][f(1,2)]
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API Affine2D
{
public:
Affine2D();
Affine2D(const Affine2D<T>& affine);
/// <summary>
/// Copy constructor to copy an Affine2D object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="affine">The Affine2D object to copy</param>
template <typename U>
Affine2D(const Affine2D<U>& affine)
{
Affine2D<T>::operator=<U>(affine);
}
Affine2D(v2T& x, v2T& y, v2T& t);
Affine2D(T xx, T xy, T yx, T yy, T tx, T ty);
Affine2D(m4T& mat);
Affine2D<T>& operator = (const Affine2D<T>& affine);
/// <summary>
/// Assignment operator to assign an Affine2D object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="affine">The Affine2D object to copy.</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Affine2D<T>& operator = (const Affine2D<U>& affine)
{
A(static_cast<T>(affine.A()));
B(static_cast<T>(affine.B()));
C(static_cast<T>(affine.C()));
D(static_cast<T>(affine.D()));
E(static_cast<T>(affine.E()));
F(static_cast<T>(affine.F()));
return *this;
}
bool operator == (const Affine2D<T>& affine) const;
v2T operator * (const v2T& v) const;
Affine2D<T> operator * (T t) const;
void MakeID();
bool IsID() const;
bool IsZero() const;
bool IsEmpty() const;
void Scale(T amount);
void ScaleXY(T amount);
Affine2D<T> ScaleCopy(T amount);
void Rotate(T rad);
void RotateTrans(T rad);
void Translate(const v2T& v);
void RotateScaleXTo(const v2T& v);
void RotateScaleYTo(const v2T& v);
Affine2D<T> Inverse() const;
v2T TransformNormal(const v2T& v) const;
v2T TransformVector(const v2T& v) const;
m2T ToMat2ColMajor() const;
m2T ToMat2RowMajor() const;
m4T ToMat4ColMajor(bool center = false) const;
m4T ToMat4RowMajor(bool center = false) const;
m4T TransToMat4ColMajor() const;
//Note that returning a copy is actually faster than a const ref&.
T A() const;
T B() const;
T C() const;
T D() const;
T E() const;
T F() const;
void A(T a);
void B(T b);
void C(T c);
void D(T d);
void E(T e);
void F(T f);
v2T X() const;
v2T Y() const;
v2T O() const;
void X(const v2T& x);
void Y(const v2T& y);
void O(const v2T& t);
string ToString() const;
static Affine2D CalcRotateScale(const v2T& from, const v2T& to);
static void CalcRSAC(const v2T& from, const v2T& to, T& a, T& c);
m23T m_Mat;
};
}

View File

@ -1,273 +1,273 @@
#pragma once
#include "Point.h"
/// <summary>
/// CarToRas class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// When iterating, everything is positioned in terms of a carteseian plane with 0,0 in the center like so:
/// [-1,1] [1,1]
/// [-1,-1] [1,-1]
/// However, when accumulating to the histogram, the data is stored in the traditional raster coordinate system
/// of 0,0 at the top left and x,y at the bottom right. This class provides functionality to convert from one
/// to the other and is used when accumulating a sub batch of iteration results to the histogram.
/// Note the functions use reference arguments for the converted values because they are slightly faster than returning a value.
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API CarToRas
{
public:
/// <summary>
/// Empty constructor. This class should never be used unless it's been properly constructed with the constructor that takes arguments.
/// </summary>
CarToRas() = default;
/// <summary>
/// Constructor that takes arguments to set up the bounds and passes them to Init().
/// </summary>
/// <param name="carLlX">The lower left x of the cartesian plane</param>
/// <param name="carLlY">The lower left y of the cartesian plane</param>
/// <param name="carUrX">The upper right x of the cartesian plane</param>
/// <param name="carUrY">The upper right y of the cartesian plane</param>
/// <param name="rasW">The width in pixels of the raster image/histogram</param>
/// <param name="rasH">The height in pixels of the raster image/histogram</param>
/// <param name="aspectRatio">The aspect ratio, generally 1</param>
CarToRas(T carLlX, T carLlY, T carUrX, T carUrY, size_t rasW, size_t rasH, T aspectRatio)
{
Init(carLlX, carLlY, carUrX, carUrY, rasW, rasH, aspectRatio);
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
CarToRas(const CarToRas<T>& carToRas)
{
CarToRas<T>::operator=<T>(carToRas);
}
/// <summary>
/// Copy constructor to copy a CarToRas object of type U.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
template <typename U>
CarToRas(const CarToRas<U>& carToRas)
{
CarToRas<T>::operator=<U>(carToRas);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
CarToRas<T>& operator = (const CarToRas<T>& carToRas)
{
if (this != &carToRas)
CarToRas<T>::operator=<T>(carToRas);
return *this;
}
/// <summary>
/// Assignment operator to assign a CarToRas object of type U.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy.</param>
/// <returns>Reference to updated self</returns>
template <typename U>
CarToRas<T>& operator = (const CarToRas<U>& carToRas)
{
m_RasWidth = carToRas.RasWidth();
m_RasHeight = carToRas.RasHeight();
m_OneRow = T(carToRas.OneRow());
m_OneCol = T(carToRas.OneCol());
m_PixPerImageUnitW = T(carToRas.PixPerImageUnitW());
m_RasLlX = T(carToRas.RasLlX());
m_PixPerImageUnitH = T(carToRas.PixPerImageUnitH());
m_RasLlY = T(carToRas.RasLlY());
m_CarLlX = T(carToRas.CarLlX());
m_CarLlY = T(carToRas.CarLlY());
m_CarUrX = T(carToRas.CarUrX());
m_CarUrY = T(carToRas.CarUrY());
m_PadCarLlX = T(carToRas.PadCarLlX());
m_PadCarLlY = T(carToRas.PadCarLlY());
m_PadCarUrX = T(carToRas.PadCarUrX());
m_PadCarUrY = T(carToRas.PadCarUrY());
m_CarHalfX = T(carToRas.CarHalfX());
m_CarHalfY = T(carToRas.CarHalfY());
m_CarCenterX = T(carToRas.CarCenterX());
m_CarCenterY = T(carToRas.CarCenterY());
return *this;
}
/// <summary>
/// Initialize the dimensions with the specified bounds.
/// </summary>
/// <param name="carLlX">The lower left x of the cartesian plane</param>
/// <param name="carLlY">The lower left y of the cartesian plane</param>
/// <param name="carUrX">The upper right x of the cartesian plane</param>
/// <param name="carUrY">The upper right y of the cartesian plane</param>
/// <param name="rasW">The width in pixels of the raster image/histogram</param>
/// <param name="rasH">The height in pixels of the raster image/histogram</param>
/// <param name="aspectRatio">The aspect ratio, generally 1</param>
void Init(T carLlX, T carLlY, T carUrX, T carUrY, size_t rasW, size_t rasH, T aspectRatio)
{
m_RasWidth = rasW;
m_RasHeight = rasH;
m_CarLlX = carLlX;
m_CarLlY = carLlY;
m_CarUrX = carUrX;
m_CarUrY = carUrY;
T carW = m_CarUrX - m_CarLlX;//Right minus left.
T carH = m_CarUrY - m_CarLlY;//Top minus bottom.
T invSizeW = T(1.0) / carW;
T invSizeH = T(1.0) / carH;
m_PixPerImageUnitW = static_cast<T>(rasW) * invSizeW;
m_RasLlX = m_PixPerImageUnitW * carLlX;
m_PixPerImageUnitH = static_cast<T>(rasH) * invSizeH;
m_RasLlY = m_PixPerImageUnitH * carLlY;
m_OneRow = std::abs(m_CarUrY - m_CarLlY) / m_RasHeight;
m_OneCol = std::abs(m_CarUrX - m_CarLlX) / m_RasWidth;
m_PadCarLlX = m_CarLlX + m_OneCol;
m_PadCarUrX = m_CarUrX - m_OneCol;
m_PadCarLlY = m_CarLlY + m_OneRow;
m_PadCarUrY = m_CarUrY - m_OneRow;
m_CarHalfX = (m_CarUrX - m_CarLlX) / 2;
m_CarHalfY = (m_CarUrY - m_CarLlY) / 2;
m_CarCenterX = m_CarLlX + m_CarHalfX;
m_CarCenterY = m_CarLlY + m_CarHalfY;
}
/// <summary>
/// Assign values to the cached half width/height fields.
/// This is only done manually here and is used when rendering strips
/// because a cached copy of these is required because the real values
/// change with the assignment of each temporary strip ember object.
/// </summary>
/// <param name="x">The cached value equal to half of the cartesian width of the x plane</param>
/// <param name="y">The cached value equal to half of the cartesian width of the y plane</param>
void UpdateCachedHalf(T x, T y)
{
m_CachedCarHalfX = x;
m_CachedCarHalfY = y;
}
/// <summary>
/// Convert a cartesian x, y coordinate to a raster x, y coordinate.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="cartX">The cartesian x</param>
/// <param name="cartY">The cartesian y</param>
/// <param name="rasX">The converted raster x</param>
/// <param name="rasY">The converted raster y</param>
inline void Convert(T cartX, T cartY, size_t& rasX, size_t& rasY)
{
rasX = static_cast<size_t>(m_PixPerImageUnitW * cartX - m_RasLlX);
rasY = static_cast<size_t>(m_RasLlY - (m_PixPerImageUnitH * cartY));
}
/// <summary>
/// Convert a cartesian x, y coordinate to a single raster buffer index.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="cartX">The cartesian x</param>
/// <param name="cartY">The cartesian y</param>
/// <param name="singleBufferIndex">The converted single raster buffer index</param>
inline void Convert(T cartX, T cartY, size_t& singleBufferIndex)
{
singleBufferIndex = static_cast<size_t>(m_PixPerImageUnitW * cartX - m_RasLlX) + (m_RasWidth * static_cast<size_t>(m_PixPerImageUnitH * cartY - m_RasLlY));
}
/// <summary>
/// Convert a cartesian x, y point to a single raster buffer index.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// This is the most efficient possible way of converting, consisting of only
/// a multiply and subtract per coordinate element.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="point">The cartesian y</param>
/// <param name="singleBufferIndex">The converted single raster buffer index</param>
inline void Convert(Point<T>& point, size_t& singleBufferIndex)
{
//singleBufferIndex = static_cast<size_t>(Round(m_PixPerImageUnitW * point.m_X - m_RasLlX) + (m_RasWidth * Round(m_PixPerImageUnitH * point.m_Y - m_RasLlY)));
singleBufferIndex = static_cast<size_t>(m_PixPerImageUnitW * point.m_X - m_RasLlX) + (m_RasWidth * static_cast<size_t>(m_PixPerImageUnitH * point.m_Y - m_RasLlY));
}
/// <summary>
/// Determine if a point in the cartesian plane can be converted to a point within the raster plane.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="point">The point to test</param>
/// <returns>True if within bounds, else false</returns>
inline bool InBounds(Point<T>& point)
{
//Debug check for hitting the very first pixel in the image.
//if (point.m_Y > m_CarLlY && point.m_Y <= m_PadCarLlY && //Mapped to top row...
// point.m_X > m_CarLlX && point.m_X <= m_PadCarLlX)//...first col.
//{
// cout << "First pixel hit.\n";
//}
return point.m_X >= m_CarLlX &&
point.m_X < m_CarUrX &&
point.m_Y < m_CarUrY &&
point.m_Y >= m_CarLlY;
}
/// <summary>
/// Accessors.
/// </summary>
inline size_t RasWidth() const { return m_RasWidth; }
inline size_t RasHeight() const { return m_RasHeight; }
inline T OneRow() const { return m_OneRow; }
inline T OneCol() const { return m_OneCol; }
inline T PixPerImageUnitW() const { return m_PixPerImageUnitW; }
inline T RasLlX() const { return m_RasLlX; }
inline T PixPerImageUnitH() const { return m_PixPerImageUnitH; }
inline T RasLlY() const { return m_RasLlY; }
inline T CarLlX() const { return m_CarLlX; }
inline T CarLlY() const { return m_CarLlY; }
inline T CarUrX() const { return m_CarUrX; }
inline T CarUrY() const { return m_CarUrY; }
inline T PadCarLlX() const { return m_PadCarLlX; }
inline T PadCarLlY() const { return m_PadCarLlY; }
inline T PadCarUrX() const { return m_PadCarUrX; }
inline T PadCarUrY() const { return m_PadCarUrY; }
inline T CarHalfX() const { return m_CarHalfX; }
inline T CarHalfY() const { return m_CarHalfY; }
inline T CachedCarHalfX() const { return m_CachedCarHalfX; }
inline T CachedCarHalfY() const { return m_CachedCarHalfY; }
inline T CarCenterX() const { return m_CarCenterX; }
inline T CarCenterY() const { return m_CarCenterY; }
private:
size_t m_RasWidth, m_RasHeight;//The width and height of the raster image.
T m_OneRow;//The distance that one raster row represents in the cartesian plane.
T m_OneCol;//The distance that one raster column represents in the cartesian plane.
T m_PixPerImageUnitW;//The number of columns in the raster plane that a horizontal distance of 1 in the cartesian plane represents. The higher the number, the more zoomed in.
T m_RasLlX;//The lower left x of the raster image plane.
T m_PixPerImageUnitH;//The number of rows in the raster plane that a vertical distance of 1 in the cartesian plane represents. The higher the number, the more zoomed in.
T m_RasLlY;//The lower left y of the raster image plane.
T m_CarLlX, m_CarLlY, m_CarUrX, m_CarUrY;//The bounds of the cartesian plane.
T m_PadCarLlX, m_PadCarLlY, m_PadCarUrX, m_PadCarUrY;//The bounds of the cartesian plane padded by one raster row and column on each side.
T m_CarHalfX, m_CarHalfY;//The distance from the center of the of the cartesian plane to the edges.
T m_CachedCarHalfX, m_CachedCarHalfY;//The cahced distance from the center of the of the cartesian plane to the edges, needed when rendering strips.
T m_CarCenterX, m_CarCenterY;//The center of the cartesian plane.
};
}
#pragma once
#include "Point.h"
/// <summary>
/// CarToRas class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// When iterating, everything is positioned in terms of a carteseian plane with 0,0 in the center like so:
/// [-1,1] [1,1]
/// [-1,-1] [1,-1]
/// However, when accumulating to the histogram, the data is stored in the traditional raster coordinate system
/// of 0,0 at the top left and x,y at the bottom right. This class provides functionality to convert from one
/// to the other and is used when accumulating a sub batch of iteration results to the histogram.
/// Note the functions use reference arguments for the converted values because they are slightly faster than returning a value.
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API CarToRas
{
public:
/// <summary>
/// Empty constructor. This class should never be used unless it's been properly constructed with the constructor that takes arguments.
/// </summary>
CarToRas() = default;
/// <summary>
/// Constructor that takes arguments to set up the bounds and passes them to Init().
/// </summary>
/// <param name="carLlX">The lower left x of the cartesian plane</param>
/// <param name="carLlY">The lower left y of the cartesian plane</param>
/// <param name="carUrX">The upper right x of the cartesian plane</param>
/// <param name="carUrY">The upper right y of the cartesian plane</param>
/// <param name="rasW">The width in pixels of the raster image/histogram</param>
/// <param name="rasH">The height in pixels of the raster image/histogram</param>
/// <param name="aspectRatio">The aspect ratio, generally 1</param>
CarToRas(T carLlX, T carLlY, T carUrX, T carUrY, size_t rasW, size_t rasH, T aspectRatio)
{
Init(carLlX, carLlY, carUrX, carUrY, rasW, rasH, aspectRatio);
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
CarToRas(const CarToRas<T>& carToRas)
{
CarToRas<T>::operator=<T>(carToRas);
}
/// <summary>
/// Copy constructor to copy a CarToRas object of type U.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
template <typename U>
CarToRas(const CarToRas<U>& carToRas)
{
CarToRas<T>::operator=<U>(carToRas);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy</param>
CarToRas<T>& operator = (const CarToRas<T>& carToRas)
{
if (this != &carToRas)
CarToRas<T>::operator=<T>(carToRas);
return *this;
}
/// <summary>
/// Assignment operator to assign a CarToRas object of type U.
/// </summary>
/// <param name="carToRas">The CarToRas object to copy.</param>
/// <returns>Reference to updated self</returns>
template <typename U>
CarToRas<T>& operator = (const CarToRas<U>& carToRas)
{
m_RasWidth = carToRas.RasWidth();
m_RasHeight = carToRas.RasHeight();
m_OneRow = T(carToRas.OneRow());
m_OneCol = T(carToRas.OneCol());
m_PixPerImageUnitW = T(carToRas.PixPerImageUnitW());
m_RasLlX = T(carToRas.RasLlX());
m_PixPerImageUnitH = T(carToRas.PixPerImageUnitH());
m_RasLlY = T(carToRas.RasLlY());
m_CarLlX = T(carToRas.CarLlX());
m_CarLlY = T(carToRas.CarLlY());
m_CarUrX = T(carToRas.CarUrX());
m_CarUrY = T(carToRas.CarUrY());
m_PadCarLlX = T(carToRas.PadCarLlX());
m_PadCarLlY = T(carToRas.PadCarLlY());
m_PadCarUrX = T(carToRas.PadCarUrX());
m_PadCarUrY = T(carToRas.PadCarUrY());
m_CarHalfX = T(carToRas.CarHalfX());
m_CarHalfY = T(carToRas.CarHalfY());
m_CarCenterX = T(carToRas.CarCenterX());
m_CarCenterY = T(carToRas.CarCenterY());
return *this;
}
/// <summary>
/// Initialize the dimensions with the specified bounds.
/// </summary>
/// <param name="carLlX">The lower left x of the cartesian plane</param>
/// <param name="carLlY">The lower left y of the cartesian plane</param>
/// <param name="carUrX">The upper right x of the cartesian plane</param>
/// <param name="carUrY">The upper right y of the cartesian plane</param>
/// <param name="rasW">The width in pixels of the raster image/histogram</param>
/// <param name="rasH">The height in pixels of the raster image/histogram</param>
/// <param name="aspectRatio">The aspect ratio, generally 1</param>
void Init(T carLlX, T carLlY, T carUrX, T carUrY, size_t rasW, size_t rasH, T aspectRatio)
{
m_RasWidth = rasW;
m_RasHeight = rasH;
m_CarLlX = carLlX;
m_CarLlY = carLlY;
m_CarUrX = carUrX;
m_CarUrY = carUrY;
T carW = m_CarUrX - m_CarLlX;//Right minus left.
T carH = m_CarUrY - m_CarLlY;//Top minus bottom.
T invSizeW = T(1.0) / carW;
T invSizeH = T(1.0) / carH;
m_PixPerImageUnitW = static_cast<T>(rasW) * invSizeW;
m_RasLlX = m_PixPerImageUnitW * carLlX;
m_PixPerImageUnitH = static_cast<T>(rasH) * invSizeH;
m_RasLlY = m_PixPerImageUnitH * carLlY;
m_OneRow = std::abs(m_CarUrY - m_CarLlY) / m_RasHeight;
m_OneCol = std::abs(m_CarUrX - m_CarLlX) / m_RasWidth;
m_PadCarLlX = m_CarLlX + m_OneCol;
m_PadCarUrX = m_CarUrX - m_OneCol;
m_PadCarLlY = m_CarLlY + m_OneRow;
m_PadCarUrY = m_CarUrY - m_OneRow;
m_CarHalfX = (m_CarUrX - m_CarLlX) / 2;
m_CarHalfY = (m_CarUrY - m_CarLlY) / 2;
m_CarCenterX = m_CarLlX + m_CarHalfX;
m_CarCenterY = m_CarLlY + m_CarHalfY;
}
/// <summary>
/// Assign values to the cached half width/height fields.
/// This is only done manually here and is used when rendering strips
/// because a cached copy of these is required because the real values
/// change with the assignment of each temporary strip ember object.
/// </summary>
/// <param name="x">The cached value equal to half of the cartesian width of the x plane</param>
/// <param name="y">The cached value equal to half of the cartesian width of the y plane</param>
void UpdateCachedHalf(T x, T y)
{
m_CachedCarHalfX = x;
m_CachedCarHalfY = y;
}
/// <summary>
/// Convert a cartesian x, y coordinate to a raster x, y coordinate.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="cartX">The cartesian x</param>
/// <param name="cartY">The cartesian y</param>
/// <param name="rasX">The converted raster x</param>
/// <param name="rasY">The converted raster y</param>
inline void Convert(T cartX, T cartY, size_t& rasX, size_t& rasY)
{
rasX = static_cast<size_t>(m_PixPerImageUnitW * cartX - m_RasLlX);
rasY = static_cast<size_t>(m_RasLlY - (m_PixPerImageUnitH * cartY));
}
/// <summary>
/// Convert a cartesian x, y coordinate to a single raster buffer index.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="cartX">The cartesian x</param>
/// <param name="cartY">The cartesian y</param>
/// <param name="singleBufferIndex">The converted single raster buffer index</param>
inline void Convert(T cartX, T cartY, size_t& singleBufferIndex)
{
singleBufferIndex = static_cast<size_t>(m_PixPerImageUnitW * cartX - m_RasLlX) + (m_RasWidth * static_cast<size_t>(m_PixPerImageUnitH * cartY - m_RasLlY));
}
/// <summary>
/// Convert a cartesian x, y point to a single raster buffer index.
/// This will flip the Y coordinate, so points that hit the bottom of the cartesian plane will
/// be mapped to the top of the histogram and vice versa.
/// This is the most efficient possible way of converting, consisting of only
/// a multiply and subtract per coordinate element.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="point">The cartesian y</param>
/// <param name="singleBufferIndex">The converted single raster buffer index</param>
inline void Convert(Point<T>& point, size_t& singleBufferIndex)
{
//singleBufferIndex = static_cast<size_t>(Round(m_PixPerImageUnitW * point.m_X - m_RasLlX) + (m_RasWidth * Round(m_PixPerImageUnitH * point.m_Y - m_RasLlY)));
singleBufferIndex = static_cast<size_t>(m_PixPerImageUnitW * point.m_X - m_RasLlX) + (m_RasWidth * static_cast<size_t>(m_PixPerImageUnitH * point.m_Y - m_RasLlY));
}
/// <summary>
/// Determine if a point in the cartesian plane can be converted to a point within the raster plane.
/// There is a very slim chance that a point will be right on the border and will technically be in bounds, passing the InBounds() test,
/// but ends up being mapped to a histogram bucket that is out of bounds due to roundoff error. Perform an additional check after this call to make sure the
/// mapped point is in bounds.
/// </summary>
/// <param name="point">The point to test</param>
/// <returns>True if within bounds, else false</returns>
inline bool InBounds(Point<T>& point)
{
//Debug check for hitting the very first pixel in the image.
//if (point.m_Y > m_CarLlY && point.m_Y <= m_PadCarLlY && //Mapped to top row...
// point.m_X > m_CarLlX && point.m_X <= m_PadCarLlX)//...first col.
//{
// cout << "First pixel hit.\n";
//}
return point.m_X >= m_CarLlX &&
point.m_X < m_CarUrX &&
point.m_Y < m_CarUrY &&
point.m_Y >= m_CarLlY;
}
/// <summary>
/// Accessors.
/// </summary>
inline size_t RasWidth() const { return m_RasWidth; }
inline size_t RasHeight() const { return m_RasHeight; }
inline T OneRow() const { return m_OneRow; }
inline T OneCol() const { return m_OneCol; }
inline T PixPerImageUnitW() const { return m_PixPerImageUnitW; }
inline T RasLlX() const { return m_RasLlX; }
inline T PixPerImageUnitH() const { return m_PixPerImageUnitH; }
inline T RasLlY() const { return m_RasLlY; }
inline T CarLlX() const { return m_CarLlX; }
inline T CarLlY() const { return m_CarLlY; }
inline T CarUrX() const { return m_CarUrX; }
inline T CarUrY() const { return m_CarUrY; }
inline T PadCarLlX() const { return m_PadCarLlX; }
inline T PadCarLlY() const { return m_PadCarLlY; }
inline T PadCarUrX() const { return m_PadCarUrX; }
inline T PadCarUrY() const { return m_PadCarUrY; }
inline T CarHalfX() const { return m_CarHalfX; }
inline T CarHalfY() const { return m_CarHalfY; }
inline T CachedCarHalfX() const { return m_CachedCarHalfX; }
inline T CachedCarHalfY() const { return m_CachedCarHalfY; }
inline T CarCenterX() const { return m_CarCenterX; }
inline T CarCenterY() const { return m_CarCenterY; }
private:
size_t m_RasWidth, m_RasHeight;//The width and height of the raster image.
T m_OneRow;//The distance that one raster row represents in the cartesian plane.
T m_OneCol;//The distance that one raster column represents in the cartesian plane.
T m_PixPerImageUnitW;//The number of columns in the raster plane that a horizontal distance of 1 in the cartesian plane represents. The higher the number, the more zoomed in.
T m_RasLlX;//The lower left x of the raster image plane.
T m_PixPerImageUnitH;//The number of rows in the raster plane that a vertical distance of 1 in the cartesian plane represents. The higher the number, the more zoomed in.
T m_RasLlY;//The lower left y of the raster image plane.
T m_CarLlX, m_CarLlY, m_CarUrX, m_CarUrY;//The bounds of the cartesian plane.
T m_PadCarLlX, m_PadCarLlY, m_PadCarUrX, m_PadCarUrY;//The bounds of the cartesian plane padded by one raster row and column on each side.
T m_CarHalfX, m_CarHalfY;//The distance from the center of the of the cartesian plane to the edges.
T m_CachedCarHalfX, m_CachedCarHalfY;//The cahced distance from the center of the of the cartesian plane to the edges, needed when rendering strips.
T m_CarCenterX, m_CarCenterY;//The center of the cartesian plane.
};
}

View File

@ -1,273 +1,273 @@
#pragma once
#include "Utils.h"
#include "Isaac.h"
#include "Curves.h"
#define CURVE_POINTS 5
/// <summary>
/// Curves class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// The b-spline curves used to adjust the colors during final accumulation.
/// This functionality was gotten inferred from Chaotica.
/// Note this is now incompatible with Apophysis, which uses Bezier curves instead.
/// </summary>
template <typename T>
class EMBER_API Curves
{
public:
/// <summary>
/// Constructor which sets the curve and weight values to their defaults.
/// </summary>
Curves(bool init = false)
{
if (init)
Init();
else
Clear();
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
Curves(const Curves<T>& curves)
{
Curves<T>::operator=<T>(curves);
}
/// <summary>
/// Copy constructor to copy a Curves object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
template <typename U>
Curves(const Curves<U>& curves)
{
Curves<T>::operator=<U>(curves);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
Curves<T>& operator = (const Curves<T>& curves)
{
if (this != &curves)
Curves<T>::operator=<T>(curves);
return *this;
}
/// <summary>
/// Assignment operator to assign a Curves object of type U.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator = (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : curves.m_Points)
{
int j = 0;
m_Points[i].clear();
for (auto& p : pp)
{
m_Points[i].push_back(p);
j++;
}
i++;
}
i = 0;
return *this;
}
/// <summary>
/// Unary addition operator to add a Curves<T> object to this one.
/// </summary>
/// <param name="curves">The Curves object to add</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator += (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : m_Points)
{
int j = 0;
for (auto& p : pp)
{
if (j < curves.m_Points[i].size())
p += curves.m_Points[i][j];
else
break;
j++;
}
i++;
}
return *this;
}
/// <summary>
/// Unary multiplication operator to multiply this object by another Curves<T> object.
/// </summary>
/// <param name="curves">The Curves object to multiply this one by</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator *= (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : m_Points)
{
int j = 0;
for (auto& p : pp)
{
if (j < curves.m_Points[i].size())
p *= curves.m_Points[i][j];
else
break;
j++;
}
i++;
}
return *this;
}
/// <summary>
/// Unary multiplication operator to multiply this object by a scalar of type T.
/// </summary>
/// <param name="t">The scalar to multiply this object by</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator *= (const U& t)
{
for (auto& pp : m_Points)
for (auto& p : pp)
p *= T(t);
return *this;
}
/// <summary>
/// Set the curve and weight values to their default state.
/// </summary>
void Init()
{
for (size_t i = 0; i < 4; i++)
Init(i);
}
/// <summary>
/// Set a specific curve and its weight value to their default state.
/// </summary>
void Init(size_t i)
{
if (i < 4)
{
m_Points[i].resize(5);
m_Points[i][0] = v2T{ 0 };
m_Points[i][1] = v2T{ static_cast<T>(0.25) };
m_Points[i][2] = v2T{ static_cast<T>(0.50) };
m_Points[i][3] = v2T{ static_cast<T>(0.75) };
m_Points[i][4] = v2T{ 1 };
}
}
/// <summary>
/// Set the curve and weight values to an empty state.
/// </summary>
void Clear()
{
for (auto& p : m_Points)
p.clear();
}
/// <summary>
/// Whether any points are not the default.
/// </summary>
/// <returns>True if any point has been set to a value other than the default, else false.</returns>
bool CurvesSet()
{
bool set = false;
for (size_t i = 0; i < 4; i++)
{
if (m_Points[i].size() != CURVE_POINTS)
{
set = true;
break;
}
if ((m_Points[i][0] != v2T(0)) ||
(m_Points[i][1] != v2T(static_cast<T>(0.25))) ||
(m_Points[i][2] != v2T(static_cast<T>(0.50))) ||
(m_Points[i][3] != v2T(static_cast<T>(0.75))) ||
(m_Points[i][4] != v2T(1))
)
{
set = true;
break;
}
}
return set;
}
public:
std::array<std::vector<v2T>, 4> m_Points;
};
//Must declare this outside of the class to provide for both orders of parameters.
/// <summary>
/// Multiplication operator to multiply a Curves<T> object by a scalar of type U.
/// </summary>
/// <param name="curves">The curves object to multiply</param>
/// <param name="t">The scalar to multiply curves by by</param>
/// <returns>Copy of new Curves<T></returns>
template <typename T, typename U>
Curves<T> operator * (const Curves<T>& curves, const U& t)
{
T tt = T(t);
Curves<T> c(curves);
for (auto& pp : c.m_Points)
for (auto& p : pp)
p *= tt;
return c;
}
/// <summary>
/// Multiplication operator for reverse order.
/// </summary>
/// <param name="t">The scalar to multiply curves by by</param>
/// <param name="curves">The curves object to multiply</param>
/// <returns>Copy of new Curves<T></returns>
template <typename T, typename U>
Curves<T> operator * (const U& t, const Curves<T>& curves)
{
return curves * t;
}
}
#pragma once
#include "Utils.h"
#include "Isaac.h"
#include "Curves.h"
#define CURVE_POINTS 5
/// <summary>
/// Curves class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// The b-spline curves used to adjust the colors during final accumulation.
/// This functionality was gotten inferred from Chaotica.
/// Note this is now incompatible with Apophysis, which uses Bezier curves instead.
/// </summary>
template <typename T>
class EMBER_API Curves
{
public:
/// <summary>
/// Constructor which sets the curve and weight values to their defaults.
/// </summary>
Curves(bool init = false)
{
if (init)
Init();
else
Clear();
}
/// <summary>
/// Default copy constructor.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
Curves(const Curves<T>& curves)
{
Curves<T>::operator=<T>(curves);
}
/// <summary>
/// Copy constructor to copy a Curves object of type U.
/// Special case that must be here in the header because it has
/// a second template parameter.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
template <typename U>
Curves(const Curves<U>& curves)
{
Curves<T>::operator=<U>(curves);
}
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
Curves<T>& operator = (const Curves<T>& curves)
{
if (this != &curves)
Curves<T>::operator=<T>(curves);
return *this;
}
/// <summary>
/// Assignment operator to assign a Curves object of type U.
/// </summary>
/// <param name="curves">The Curves object to copy</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator = (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : curves.m_Points)
{
int j = 0;
m_Points[i].clear();
for (auto& p : pp)
{
m_Points[i].push_back(p);
j++;
}
i++;
}
i = 0;
return *this;
}
/// <summary>
/// Unary addition operator to add a Curves<T> object to this one.
/// </summary>
/// <param name="curves">The Curves object to add</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator += (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : m_Points)
{
int j = 0;
for (auto& p : pp)
{
if (j < curves.m_Points[i].size())
p += curves.m_Points[i][j];
else
break;
j++;
}
i++;
}
return *this;
}
/// <summary>
/// Unary multiplication operator to multiply this object by another Curves<T> object.
/// </summary>
/// <param name="curves">The Curves object to multiply this one by</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator *= (const Curves<U>& curves)
{
int i = 0;
for (auto& pp : m_Points)
{
int j = 0;
for (auto& p : pp)
{
if (j < curves.m_Points[i].size())
p *= curves.m_Points[i][j];
else
break;
j++;
}
i++;
}
return *this;
}
/// <summary>
/// Unary multiplication operator to multiply this object by a scalar of type T.
/// </summary>
/// <param name="t">The scalar to multiply this object by</param>
/// <returns>Reference to updated self</returns>
template <typename U>
Curves<T>& operator *= (const U& t)
{
for (auto& pp : m_Points)
for (auto& p : pp)
p *= T(t);
return *this;
}
/// <summary>
/// Set the curve and weight values to their default state.
/// </summary>
void Init()
{
for (size_t i = 0; i < 4; i++)
Init(i);
}
/// <summary>
/// Set a specific curve and its weight value to their default state.
/// </summary>
void Init(size_t i)
{
if (i < 4)
{
m_Points[i].resize(5);
m_Points[i][0] = v2T{ 0 };
m_Points[i][1] = v2T{ static_cast<T>(0.25) };
m_Points[i][2] = v2T{ static_cast<T>(0.50) };
m_Points[i][3] = v2T{ static_cast<T>(0.75) };
m_Points[i][4] = v2T{ 1 };
}
}
/// <summary>
/// Set the curve and weight values to an empty state.
/// </summary>
void Clear()
{
for (auto& p : m_Points)
p.clear();
}
/// <summary>
/// Whether any points are not the default.
/// </summary>
/// <returns>True if any point has been set to a value other than the default, else false.</returns>
bool CurvesSet()
{
bool set = false;
for (size_t i = 0; i < 4; i++)
{
if (m_Points[i].size() != CURVE_POINTS)
{
set = true;
break;
}
if ((m_Points[i][0] != v2T(0)) ||
(m_Points[i][1] != v2T(static_cast<T>(0.25))) ||
(m_Points[i][2] != v2T(static_cast<T>(0.50))) ||
(m_Points[i][3] != v2T(static_cast<T>(0.75))) ||
(m_Points[i][4] != v2T(1))
)
{
set = true;
break;
}
}
return set;
}
public:
std::array<std::vector<v2T>, 4> m_Points;
};
//Must declare this outside of the class to provide for both orders of parameters.
/// <summary>
/// Multiplication operator to multiply a Curves<T> object by a scalar of type U.
/// </summary>
/// <param name="curves">The curves object to multiply</param>
/// <param name="t">The scalar to multiply curves by by</param>
/// <returns>Copy of new Curves<T></returns>
template <typename T, typename U>
Curves<T> operator * (const Curves<T>& curves, const U& t)
{
T tt = T(t);
Curves<T> c(curves);
for (auto& pp : c.m_Points)
for (auto& p : pp)
p *= tt;
return c;
}
/// <summary>
/// Multiplication operator for reverse order.
/// </summary>
/// <param name="t">The scalar to multiply curves by by</param>
/// <param name="curves">The curves object to multiply</param>
/// <returns>Copy of new Curves<T></returns>
template <typename T, typename U>
Curves<T> operator * (const U& t, const Curves<T>& curves)
{
return curves * t;
}
}

View File

@ -1,341 +1,341 @@
#pragma once
#include "SpatialFilter.h"
/// <summary>
/// DensityFilter class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// A base class with virtual functions to allow both templating and polymorphism to work together.
/// Derived classes will implement all of these functions.
/// </summary>
class EMBER_API DensityFilterBase
{
public:
DensityFilterBase() { }
virtual ~DensityFilterBase() { }
virtual intmax_t FilterWidth() const { return 0; }
};
/// <summary>
/// The density estimation filter is used after iterating, but before final accumulation.
/// It's a variable width Gaussian filter, whose width is inversely proportional
/// to the number of hits a given histogram cell has received.
/// That means the fewer hits in a cell, the more blur is applied. The greater the hits,
/// the less blur.
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API DensityFilter : public DensityFilterBase
{
public:
/// <summary>
/// Constructor that assigns various fields but does not create the actual filter vector.
/// This is done because filter creation could fail, so the user must manually call it
/// after construction.
/// </summary>
/// <param name="minRad">The minimum filter radius</param>
/// <param name="maxRad">The maximum filter radius</param>
/// <param name="curve">The curve of the filter</param>
/// <param name="supersample">The supersample of the ember this filter will be used with</param>
DensityFilter(T minRad, T maxRad, T curve, size_t supersample)
{
m_MinRad = minRad;
m_MaxRad = maxRad;
m_Curve = curve;
m_Supersample = supersample;
m_MaxFilterIndex = 0;
//Make sure the values make sense.
if (m_Curve <= 0.0)
m_Curve = static_cast<T>(0.5);
if (m_MaxRad < m_MinRad)
m_MaxRad = m_MinRad + 1;
//Ensure it's valid.
while (!Valid())
{
m_Curve += static_cast<T>(0.1);
}
}
/// <summary>
/// Copy constructor.
/// </summary>
/// <param name="filter">The DensityFilter object to copy</param>
DensityFilter(const DensityFilter<T>& filter)
{
*this = filter;
}
/// <summary>
/// Assignment operator.
/// </summary>
/// <param name="filter">The DensityFilter object to copy.</param>
/// <returns>Reference to updated self</returns>
DensityFilter<T>& operator = (const DensityFilter<T>& filter)
{
if (this != &filter)
{
m_MinRad = filter.m_MinRad;
m_MaxRad = filter.m_MaxRad;
m_Curve = filter.m_Curve;
m_Supersample = filter.m_Supersample;
m_KernelSize = filter.m_KernelSize;
m_MaxFilterIndex = filter.m_MaxFilterIndex;
m_MaxFilteredCounts = filter.m_MaxFilteredCounts;
m_FilterWidth = filter.m_FilterWidth;
m_Coefs = filter.m_Coefs;
m_Widths = filter.m_Widths;
}
return *this;
}
/// <summary>
/// Create the filter vector of up to 10M entries.
/// If more than that are requested, it isn't created and
/// false is returned.
/// </summary>
/// <returns>True if success, else false.</returns>
bool Create()
{
size_t w;
int intFilterCount, maxIndex;
int rowSize;
size_t filterLoop;
int keepThresh = 100;
uint filterCoefIndex = 0;
T decFilterCount;
T finalMinRad = m_MinRad * m_Supersample + 1;//Should scale the filter width by the oversample.
T finalMaxRad = m_MaxRad * m_Supersample + 1;//The '+1' comes from the assumed distance to the first pixel.
GaussianFilter<T> gaussianFilter(m_MaxRad, m_Supersample);
m_KernelSize = 0;
m_MaxFilterIndex = 0;
//Calculate how many filter kernels are needed based on the decay function
//
// num filters = (de_max_width / de_min_width)^(1 / estimator_curve)
//
decFilterCount = std::pow(finalMaxRad / finalMinRad, static_cast<T>(1) / m_Curve);
if (decFilterCount > 1e7)//Too many filters.
return false;
intFilterCount = static_cast<int>(ceil(decFilterCount));
//Condense the smaller kernels to save space.
if (intFilterCount > keepThresh)
{
maxIndex = static_cast<int>(ceil(DE_THRESH + std::pow(static_cast<T>(intFilterCount - DE_THRESH), m_Curve))) + 1;
m_MaxFilteredCounts = static_cast<int>(std::pow(static_cast<T>(maxIndex - DE_THRESH), static_cast<T>(1) / m_Curve)) + DE_THRESH;
}
else
{
maxIndex = intFilterCount;
m_MaxFilteredCounts = maxIndex;
}
//Allocate the memory for these filters and the hit/width lookup array.
rowSize = static_cast<int>(2 * std::ceil(finalMaxRad) - 1);
m_FilterWidth = (rowSize - 1) / 2;
m_KernelSize = (m_FilterWidth + 1) * (2 + m_FilterWidth) / 2;
m_Coefs.resize(maxIndex * m_KernelSize);
m_Widths.resize(maxIndex);
//Generate the filter coefficients.
for (filterLoop = 0; filterLoop < maxIndex; filterLoop++)
{
intmax_t dej, dek;
size_t coefIndex;
T filterSum = 0.0;
T filterVal;
T filterHeight;
T loopAdjust;
//Calculate the filter width for this number of hits in a bin.
if (filterLoop < keepThresh)
{
filterHeight = (finalMaxRad / std::pow(static_cast<T>(filterLoop + 1), m_Curve));
}
else
{
loopAdjust = std::pow(static_cast<T>(filterLoop - keepThresh), (static_cast<T>(1) / m_Curve)) + keepThresh;
filterHeight = (finalMaxRad / std::pow(loopAdjust + 1, m_Curve));
}
//Once we've reached the min radius, don't populate any more.
if (filterHeight <= finalMinRad)
{
filterHeight = finalMinRad;
m_MaxFilterIndex = filterLoop;
}
m_Widths[filterLoop] = filterHeight;
//Calculate norm of kernel separately (easier).
for (dej = -m_FilterWidth; dej <= m_FilterWidth; dej++)
{
for (dek = -m_FilterWidth; dek <= m_FilterWidth; dek++)
{
filterVal = std::sqrt(static_cast<T>(dej * dej + dek * dek)) / filterHeight;
//Only populate the coefs within this radius.
if (filterVal <= 1.0)
filterSum += gaussianFilter.Filter(gaussianFilter.Support() * filterVal);
}
}
coefIndex = filterLoop * m_KernelSize;
//Calculate the unique entries of the kernel.
for (dej = 0; dej <= m_FilterWidth; dej++)
{
for (dek = 0; dek <= dej; dek++)
{
filterVal = std::sqrt(static_cast<T>(dej * dej + dek * dek)) / filterHeight;
//Only populate the coefs within this radius.
if (filterVal > 1.0)
m_Coefs[coefIndex] = 0.0;
else
m_Coefs[coefIndex] = gaussianFilter.Filter(gaussianFilter.Support() * filterVal) / filterSum;
coefIndex++;
}
}
if (m_MaxFilterIndex > 0)
break;
}
if (m_MaxFilterIndex == 0)
m_MaxFilterIndex = maxIndex - 1;
w = m_FilterWidth + 1;
m_CoefIndices.resize(w * w);
//This will populate one quadrant of filter indices.
//Really only need 1/8th, but that would require a sparse matrix.
for (intmax_t j = 0; j <= m_FilterWidth; j++)
{
for (intmax_t i = 0; i <= j; i++, filterCoefIndex++)
{
if (j == 0 && i == 0)
{
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
else if (i == 0)
{
m_CoefIndices[(0 * w) + j] = filterCoefIndex;
m_CoefIndices[(j * w) + 0] = filterCoefIndex;
}
else if (j == i)
{
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
else
{
m_CoefIndices[(i * w) + j] = filterCoefIndex;
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
}
}
return true;
}
/// <summary>
/// Return whether the requested dimensions are valid.
/// Meaning, is the requested filter size less than or equal to 10M?
/// </summary>
/// <returns>True if requested filter size is less than or equal to 10M, else false.</returns>
inline bool Valid() const
{
T finalMaxRad = m_MaxRad * m_Supersample + 1;
T finalMinRad = m_MinRad * m_Supersample + 1;
return std::pow(finalMaxRad / finalMinRad, static_cast<T>(1) / m_Curve) <= 1e7;
}
/// <summary>
/// Return a string representation of this density estimation filter.
/// </summary>
/// <returns>The string representation of this density estimation filter</returns>
string ToString() const
{
size_t i, j, coefIndex = 0, w = m_FilterWidth + 1;
stringstream ss;
ss
<< "Density Filter:"
<< "\n Min radius: " << MinRad()
<< "\n Max radius: " << MaxRad()
<< "\n Curve: " << Curve()
<< "\n Kernel size: " << KernelSize()
<< "\n Max filter index: " << MaxFilterIndex()
<< "\nMax Filtered counts: " << MaxFilteredCounts()
<< "\n Filter width: " << FilterWidth();
ss << "\nCoefficients: \n";
for (i = 0; i < m_Widths.size(); i++)
{
for (coefIndex = 0; coefIndex < m_KernelSize; coefIndex++)
ss << "Kernel[" << i << "].Coefs[" << coefIndex << "]: " << m_Coefs[(i * m_KernelSize) + coefIndex] << "\n";
}
ss << "\nWidths: \n";
for (i = 0; i < m_Widths.size(); i++)
{
ss << "Widths[" << i << "]: " << m_Widths[i] << "\n";
}
for (i = 0; i < w; i++)
{
for (j = 0; j < w; j++)
{
cout << std::setw(2) << std::setfill('0') << m_CoefIndices[i * w + j] << "\t";
}
cout << "\n";
}
return ss.str();
}
/// <summary>
/// Accessors.
/// </summary>
inline T MinRad() const { return m_MinRad; }
inline T MaxRad() const { return m_MaxRad; }
inline T Curve() const { return m_Curve; }
inline size_t Supersample() const { return m_Supersample; }
inline size_t KernelSize() const { return m_KernelSize; }
inline size_t MaxFilterIndex() const { return m_MaxFilterIndex; }
inline size_t MaxFilteredCounts() const { return m_MaxFilteredCounts; }
virtual intmax_t FilterWidth() const override { return m_FilterWidth; }
inline size_t BufferSize() const { return m_Widths.size(); }
inline size_t CoefsSizeBytes() const { return BufferSize() * m_KernelSize * sizeof(T); }
inline size_t WidthsSizeBytes() const { return SizeOf(m_Widths); }
inline size_t CoefsIndicesSizeBytes() const { return SizeOf(m_CoefIndices); }
inline const T* Coefs() const { return m_Coefs.data(); }
inline const T* Widths() const { return m_Widths.data(); }
inline const uint* CoefIndices() const { return m_CoefIndices.data(); }
private:
T m_MinRad;
T m_MaxRad;//The original specified filter radius.
T m_Curve;
size_t m_Supersample;
size_t m_KernelSize;
size_t m_MaxFilterIndex;
size_t m_MaxFilteredCounts;
intmax_t m_FilterWidth;//The new radius after scaling for super sample and rounding. This is what's actually used.
vector<T> m_Coefs;
vector<T> m_Widths;
vector<uint> m_CoefIndices;
};
}
#pragma once
#include "SpatialFilter.h"
/// <summary>
/// DensityFilter class.
/// </summary>
namespace EmberNs
{
/// <summary>
/// A base class with virtual functions to allow both templating and polymorphism to work together.
/// Derived classes will implement all of these functions.
/// </summary>
class EMBER_API DensityFilterBase
{
public:
DensityFilterBase() { }
virtual ~DensityFilterBase() { }
virtual intmax_t FilterWidth() const { return 0; }
};
/// <summary>
/// The density estimation filter is used after iterating, but before final accumulation.
/// It's a variable width Gaussian filter, whose width is inversely proportional
/// to the number of hits a given histogram cell has received.
/// That means the fewer hits in a cell, the more blur is applied. The greater the hits,
/// the less blur.
/// Template argument expected to be float or double.
/// </summary>
template <typename T>
class EMBER_API DensityFilter : public DensityFilterBase
{
public:
/// <summary>
/// Constructor that assigns various fields but does not create the actual filter vector.
/// This is done because filter creation could fail, so the user must manually call it
/// after construction.
/// </summary>
/// <param name="minRad">The minimum filter radius</param>
/// <param name="maxRad">The maximum filter radius</param>
/// <param name="curve">The curve of the filter</param>
/// <param name="supersample">The supersample of the ember this filter will be used with</param>
DensityFilter(T minRad, T maxRad, T curve, size_t supersample)
{
m_MinRad = minRad;
m_MaxRad = maxRad;
m_Curve = curve;
m_Supersample = supersample;
m_MaxFilterIndex = 0;
//Make sure the values make sense.
if (m_Curve <= 0.0)
m_Curve = static_cast<T>(0.5);
if (m_MaxRad < m_MinRad)
m_MaxRad = m_MinRad + 1;
//Ensure it's valid.
while (!Valid())
{
m_Curve += static_cast<T>(0.1);
}
}
/// <summary>
/// Copy constructor.
/// </summary>
/// <param name="filter">The DensityFilter object to copy</param>
DensityFilter(const DensityFilter<T>& filter)
{
*this = filter;
}
/// <summary>
/// Assignment operator.
/// </summary>
/// <param name="filter">The DensityFilter object to copy.</param>
/// <returns>Reference to updated self</returns>
DensityFilter<T>& operator = (const DensityFilter<T>& filter)
{
if (this != &filter)
{
m_MinRad = filter.m_MinRad;
m_MaxRad = filter.m_MaxRad;
m_Curve = filter.m_Curve;
m_Supersample = filter.m_Supersample;
m_KernelSize = filter.m_KernelSize;
m_MaxFilterIndex = filter.m_MaxFilterIndex;
m_MaxFilteredCounts = filter.m_MaxFilteredCounts;
m_FilterWidth = filter.m_FilterWidth;
m_Coefs = filter.m_Coefs;
m_Widths = filter.m_Widths;
}
return *this;
}
/// <summary>
/// Create the filter vector of up to 10M entries.
/// If more than that are requested, it isn't created and
/// false is returned.
/// </summary>
/// <returns>True if success, else false.</returns>
bool Create()
{
size_t w;
int intFilterCount, maxIndex;
int rowSize;
size_t filterLoop;
int keepThresh = 100;
uint filterCoefIndex = 0;
T decFilterCount;
T finalMinRad = m_MinRad * m_Supersample + 1;//Should scale the filter width by the oversample.
T finalMaxRad = m_MaxRad * m_Supersample + 1;//The '+1' comes from the assumed distance to the first pixel.
GaussianFilter<T> gaussianFilter(m_MaxRad, m_Supersample);
m_KernelSize = 0;
m_MaxFilterIndex = 0;
//Calculate how many filter kernels are needed based on the decay function
//
// num filters = (de_max_width / de_min_width)^(1 / estimator_curve)
//
decFilterCount = std::pow(finalMaxRad / finalMinRad, static_cast<T>(1) / m_Curve);
if (decFilterCount > 1e7)//Too many filters.
return false;
intFilterCount = static_cast<int>(ceil(decFilterCount));
//Condense the smaller kernels to save space.
if (intFilterCount > keepThresh)
{
maxIndex = static_cast<int>(ceil(DE_THRESH + std::pow(static_cast<T>(intFilterCount - DE_THRESH), m_Curve))) + 1;
m_MaxFilteredCounts = static_cast<int>(std::pow(static_cast<T>(maxIndex - DE_THRESH), static_cast<T>(1) / m_Curve)) + DE_THRESH;
}
else
{
maxIndex = intFilterCount;
m_MaxFilteredCounts = maxIndex;
}
//Allocate the memory for these filters and the hit/width lookup array.
rowSize = static_cast<int>(2 * std::ceil(finalMaxRad) - 1);
m_FilterWidth = (rowSize - 1) / 2;
m_KernelSize = (m_FilterWidth + 1) * (2 + m_FilterWidth) / 2;
m_Coefs.resize(maxIndex * m_KernelSize);
m_Widths.resize(maxIndex);
//Generate the filter coefficients.
for (filterLoop = 0; filterLoop < maxIndex; filterLoop++)
{
intmax_t dej, dek;
size_t coefIndex;
T filterSum = 0.0;
T filterVal;
T filterHeight;
T loopAdjust;
//Calculate the filter width for this number of hits in a bin.
if (filterLoop < keepThresh)
{
filterHeight = (finalMaxRad / std::pow(static_cast<T>(filterLoop + 1), m_Curve));
}
else
{
loopAdjust = std::pow(static_cast<T>(filterLoop - keepThresh), (static_cast<T>(1) / m_Curve)) + keepThresh;
filterHeight = (finalMaxRad / std::pow(loopAdjust + 1, m_Curve));
}
//Once we've reached the min radius, don't populate any more.
if (filterHeight <= finalMinRad)
{
filterHeight = finalMinRad;
m_MaxFilterIndex = filterLoop;
}
m_Widths[filterLoop] = filterHeight;
//Calculate norm of kernel separately (easier).
for (dej = -m_FilterWidth; dej <= m_FilterWidth; dej++)
{
for (dek = -m_FilterWidth; dek <= m_FilterWidth; dek++)
{
filterVal = std::sqrt(static_cast<T>(dej * dej + dek * dek)) / filterHeight;
//Only populate the coefs within this radius.
if (filterVal <= 1.0)
filterSum += gaussianFilter.Filter(gaussianFilter.Support() * filterVal);
}
}
coefIndex = filterLoop * m_KernelSize;
//Calculate the unique entries of the kernel.
for (dej = 0; dej <= m_FilterWidth; dej++)
{
for (dek = 0; dek <= dej; dek++)
{
filterVal = std::sqrt(static_cast<T>(dej * dej + dek * dek)) / filterHeight;
//Only populate the coefs within this radius.
if (filterVal > 1.0)
m_Coefs[coefIndex] = 0.0;
else
m_Coefs[coefIndex] = gaussianFilter.Filter(gaussianFilter.Support() * filterVal) / filterSum;
coefIndex++;
}
}
if (m_MaxFilterIndex > 0)
break;
}
if (m_MaxFilterIndex == 0)
m_MaxFilterIndex = maxIndex - 1;
w = m_FilterWidth + 1;
m_CoefIndices.resize(w * w);
//This will populate one quadrant of filter indices.
//Really only need 1/8th, but that would require a sparse matrix.
for (intmax_t j = 0; j <= m_FilterWidth; j++)
{
for (intmax_t i = 0; i <= j; i++, filterCoefIndex++)
{
if (j == 0 && i == 0)
{
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
else if (i == 0)
{
m_CoefIndices[(0 * w) + j] = filterCoefIndex;
m_CoefIndices[(j * w) + 0] = filterCoefIndex;
}
else if (j == i)
{
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
else
{
m_CoefIndices[(i * w) + j] = filterCoefIndex;
m_CoefIndices[(j * w) + i] = filterCoefIndex;
}
}
}
return true;
}
/// <summary>
/// Return whether the requested dimensions are valid.
/// Meaning, is the requested filter size less than or equal to 10M?
/// </summary>
/// <returns>True if requested filter size is less than or equal to 10M, else false.</returns>
inline bool Valid() const
{
T finalMaxRad = m_MaxRad * m_Supersample + 1;
T finalMinRad = m_MinRad * m_Supersample + 1;
return std::pow(finalMaxRad / finalMinRad, static_cast<T>(1) / m_Curve) <= 1e7;
}
/// <summary>
/// Return a string representation of this density estimation filter.
/// </summary>
/// <returns>The string representation of this density estimation filter</returns>
string ToString() const
{
size_t i, j, coefIndex = 0, w = m_FilterWidth + 1;
stringstream ss;
ss
<< "Density Filter:"
<< "\n Min radius: " << MinRad()
<< "\n Max radius: " << MaxRad()
<< "\n Curve: " << Curve()
<< "\n Kernel size: " << KernelSize()
<< "\n Max filter index: " << MaxFilterIndex()
<< "\nMax Filtered counts: " << MaxFilteredCounts()
<< "\n Filter width: " << FilterWidth();
ss << "\nCoefficients: \n";
for (i = 0; i < m_Widths.size(); i++)
{
for (coefIndex = 0; coefIndex < m_KernelSize; coefIndex++)
ss << "Kernel[" << i << "].Coefs[" << coefIndex << "]: " << m_Coefs[(i * m_KernelSize) + coefIndex] << "\n";
}
ss << "\nWidths: \n";
for (i = 0; i < m_Widths.size(); i++)
{
ss << "Widths[" << i << "]: " << m_Widths[i] << "\n";
}
for (i = 0; i < w; i++)
{
for (j = 0; j < w; j++)
{
cout << std::setw(2) << std::setfill('0') << m_CoefIndices[i * w + j] << "\t";
}
cout << "\n";
}
return ss.str();
}
/// <summary>
/// Accessors.
/// </summary>
inline T MinRad() const { return m_MinRad; }
inline T MaxRad() const { return m_MaxRad; }
inline T Curve() const { return m_Curve; }
inline size_t Supersample() const { return m_Supersample; }
inline size_t KernelSize() const { return m_KernelSize; }
inline size_t MaxFilterIndex() const { return m_MaxFilterIndex; }
inline size_t MaxFilteredCounts() const { return m_MaxFilteredCounts; }
virtual intmax_t FilterWidth() const override { return m_FilterWidth; }
inline size_t BufferSize() const { return m_Widths.size(); }
inline size_t CoefsSizeBytes() const { return BufferSize() * m_KernelSize * sizeof(T); }
inline size_t WidthsSizeBytes() const { return SizeOf(m_Widths); }
inline size_t CoefsIndicesSizeBytes() const { return SizeOf(m_CoefIndices); }
inline const T* Coefs() const { return m_Coefs.data(); }
inline const T* Widths() const { return m_Widths.data(); }
inline const uint* CoefIndices() const { return m_CoefIndices.data(); }
private:
T m_MinRad;
T m_MaxRad;//The original specified filter radius.
T m_Curve;
size_t m_Supersample;
size_t m_KernelSize;
size_t m_MaxFilterIndex;
size_t m_MaxFilteredCounts;
intmax_t m_FilterWidth;//The new radius after scaling for super sample and rounding. This is what's actually used.
vector<T> m_Coefs;
vector<T> m_Widths;
vector<uint> m_CoefIndices;
};
}

View File

@ -1,22 +1,22 @@
#include "EmberPch.h"
#ifdef _WIN32
/// <summary>
/// Generated by Visual Studio to make the DLL run properly.
/// </summary>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#endif
#include "EmberPch.h"
#ifdef _WIN32
/// <summary>
/// Generated by Visual Studio to make the DLL run properly.
/// </summary>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#endif

Some files were not shown because too many files have changed in this diff Show More