//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//       LottieGen version:
//           8.1.240821.1+077322fa26
//       
//       Command:
//           LottieGen -Language CSharp -Public -WinUIVersion 3.0 -InputFile heart.json
//       
//       Input file:
//           heart.json (211983 bytes created 11:41+02:00 Nov 17 2024)
//       
//       LottieGen source:
//           http://aka.ms/Lottie
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
// ____________________________________
// |       Object stats       | Count |
// |__________________________|_______|
// | All CompositionObjects   |   184 |
// |--------------------------+-------|
// | Expression animators     |     1 |
// | KeyFrame animators       |    43 |
// | Reference parameters     |     1 |
// | Expression operations    |     0 |
// |--------------------------+-------|
// | Animated brushes         |     - |
// | Animated gradient stops  |     - |
// | ExpressionAnimations     |     1 |
// | PathKeyFrameAnimations   |     1 |
// |--------------------------+-------|
// | ContainerVisuals         |     5 |
// | ShapeVisuals             |     5 |
// |--------------------------+-------|
// | ContainerShapes          |     6 |
// | CompositionSpriteShapes  |    18 |
// |--------------------------+-------|
// | Brushes                  |    13 |
// | Gradient stops           |     - |
// | CompositionVisualSurface |     4 |
// ------------------------------------
using Microsoft.Graphics;
using Microsoft.Graphics.Canvas;
using Microsoft.Graphics.Canvas.Effects;
using Microsoft.Graphics.Canvas.Geometry;
using Microsoft.UI.Composition;
using System;
using System.Collections.Generic;
using System.Numerics;
using Windows.UI;

namespace AnimatedVisuals
{
    // Name:        heart
    // Frame rate:  24 fps
    // Frame count: 28
    // Duration:    1166.7 mS
    // _____________________________________________________________________________________________
    // |           Marker           |           Constant           | Frame |   mS   |   Progress   |
    // |____________________________|______________________________|_______|________|______________|
    // | NormalToPressed_Start      | M_NormalToPressed_Start      |     0 |    0.0 | 0F           |
    // | NormalToPressed_End        | M_NormalToPressed_End        |     9 |  375.0 | 0.323214293F |
    // | PointerOverToPressed_Start | M_PointerOverToPressed_Start |     9 |  375.0 | 0.323214293F |
    // | PointerOverToPressed_End   | M_PointerOverToPressed_End   |    19 |  791.7 | 0.680357158F |
    // | PressedToNormal_Start      | M_PressedToNormal_Start      |    20 |  833.3 | 0.716071427F |
    // | PressedToNormal_End        | M_PressedToNormal_End        |    28 | 1166.7 | 1F           |
    // | PressedToPointerOver_Start | M_PressedToPointerOver_Start |    28 | 1166.7 | 1F           |
    // | PressedToPointerOver_End   | M_PressedToPointerOver_End   |    28 | 1166.7 | 1F           |
    // ---------------------------------------------------------------------------------------------
    sealed partial class Heart
        : Microsoft.UI.Xaml.Controls.IAnimatedVisualSource
        , Microsoft.UI.Xaml.Controls.IAnimatedVisualSource2
    {
        // Animation duration: 1.167 seconds.
        internal const long c_durationTicks = 11666666;

        // Marker: NormalToPressed_Start.
        internal const float M_NormalToPressed_Start = 0F;

        // Marker: NormalToPressed_End.
        internal const float M_NormalToPressed_End = 0.323214293F;

        // Marker: PointerOverToPressed_Start.
        internal const float M_PointerOverToPressed_Start = 0.323214293F;

        // Marker: PointerOverToPressed_End.
        internal const float M_PointerOverToPressed_End = 0.680357158F;

        // Marker: PressedToNormal_Start.
        internal const float M_PressedToNormal_Start = 0.716071427F;

        // Marker: PressedToNormal_End.
        internal const float M_PressedToNormal_End = 1F;

        // Marker: PressedToPointerOver_Start.
        internal const float M_PressedToPointerOver_Start = 1F;

        // Marker: PressedToPointerOver_End.
        internal const float M_PressedToPointerOver_End = 1F;

        public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor)
        {
            object ignored = null;
            return TryCreateAnimatedVisual(compositor, out ignored);
        }

        public Microsoft.UI.Xaml.Controls.IAnimatedVisual TryCreateAnimatedVisual(Compositor compositor, out object diagnostics)
        {
            diagnostics = null;

            var res =
                new Heart_AnimatedVisual(
                    compositor
                    );
            res.CreateAnimations();
            return res;
        }

        /// <summary>
        /// Gets the number of frames in the animation.
        /// </summary>
        public double FrameCount => 28d;

        /// <summary>
        /// Gets the frame rate of the animation.
        /// </summary>
        public double Framerate => 24d;

        /// <summary>
        /// Gets the duration of the animation.
        /// </summary>
        public TimeSpan Duration => TimeSpan.FromTicks(11666666);

        /// <summary>
        /// Converts a zero-based frame number to the corresponding progress value denoting the
        /// start of the frame.
        /// </summary>
        public double FrameToProgress(double frameNumber)
        {
            return frameNumber / 28d;
        }

        /// <summary>
        /// Returns a map from marker names to corresponding progress values.
        /// </summary>
        public IReadOnlyDictionary<string, double> Markers =>
            new Dictionary<string, double>
            {
                { "NormalToPressed_Start", 0d },
                { "NormalToPressed_End", 0.323214285714286 },
                { "PointerOverToPressed_Start", 0.323214285714286 },
                { "PointerOverToPressed_End", 0.680357142857143 },
                { "PressedToNormal_Start", 0.716071428571429 },
                { "PressedToNormal_End", 1d },
                { "PressedToPointerOver_Start", 1d },
                { "PressedToPointerOver_End", 1d },
            };

        /// <summary>
        /// Sets the color property with the given name, or does nothing if no such property
        /// exists.
        /// </summary>
        public void SetColorProperty(string propertyName, Color value)
        {
        }

        /// <summary>
        /// Sets the scalar property with the given name, or does nothing if no such property
        /// exists.
        /// </summary>
        public void SetScalarProperty(string propertyName, double value)
        {
        }

        sealed partial class Heart_AnimatedVisual
            : Microsoft.UI.Xaml.Controls.IAnimatedVisual
            , Microsoft.UI.Xaml.Controls.IAnimatedVisual2
        {
            const long c_durationTicks = 11666666;
            readonly Compositor _c;
            readonly ExpressionAnimation _reusableExpressionAnimation;
            AnimationController _animationController_0;
            BooleanKeyFrameAnimation _isVisibleBooleanAnimation_0;
            CompositionColorBrush _colorBrush_AlmostCornflowerBlue_FF42A5F5;
            CompositionColorBrush _colorBrush_AlmostDarkOrange_FFFF9800;
            CompositionColorBrush _colorBrush_AlmostLimeGreen_FF40C351;
            CompositionColorBrush _colorBrush_AlmostOrangeRed_FFFF3D00;
            CompositionColorBrush _colorBrush_AlmostPink_FFFFCDD2;
            CompositionContainerShape _containerShape_0;
            CompositionContainerShape _containerShape_1;
            CompositionContainerShape _containerShape_2;
            CompositionContainerShape _containerShape_3;
            CompositionContainerShape _containerShape_4;
            CompositionContainerShape _containerShape_5;
            CompositionPath _path_0;
            CompositionPath _path_1;
            CompositionPathGeometry _pathGeometry_0;
            CompositionPathGeometry _pathGeometry_1;
            CompositionPathGeometry _pathGeometry_2;
            CompositionPathGeometry _pathGeometry_3;
            CompositionSpriteShape _spriteShape_00;
            CompositionSpriteShape _spriteShape_01;
            CompositionSpriteShape _spriteShape_02;
            CompositionSpriteShape _spriteShape_03;
            CompositionSpriteShape _spriteShape_04;
            CompositionSpriteShape _spriteShape_05;
            CompositionSpriteShape _spriteShape_06;
            CompositionSpriteShape _spriteShape_07;
            CompositionSpriteShape _spriteShape_08;
            CompositionSpriteShape _spriteShape_09;
            CompositionSpriteShape _spriteShape_10;
            CompositionSpriteShape _spriteShape_11;
            CompositionSpriteShape _spriteShape_12;
            CompositionSpriteShape _spriteShape_13;
            CompositionSpriteShape _spriteShape_14;
            CompositionSpriteShape _spriteShape_15;
            CompositionSpriteShape _spriteShape_16;
            CompositionSpriteShape _spriteShape_17;
            ContainerVisual _root;
            CubicBezierEasingFunction _cubicBezierEasingFunction_0;
            ScalarKeyFrameAnimation _scalarAnimation_0_to_0p912_0;
            ScalarKeyFrameAnimation _scalarAnimation_0_to_0p912_1;
            ShapeVisual _shapeVisual_1;
            ShapeVisual _shapeVisual_2;
            ShapeVisual _shapeVisual_3;
            ShapeVisual _shapeVisual_4;
            StepEasingFunction _holdThenStepEasingFunction;
            StepEasingFunction _stepThenHoldEasingFunction;
            Vector2KeyFrameAnimation _scaleVector2Animation_0;
            Vector2KeyFrameAnimation _scaleVector2Animation_1;
            Vector2KeyFrameAnimation _scaleVector2Animation_2;

            void BindProperty(
                CompositionObject target,
                string animatedPropertyName,
                string expression,
                string referenceParameterName,
                CompositionObject referencedObject)
            {
                _reusableExpressionAnimation.ClearAllParameters();
                _reusableExpressionAnimation.Expression = expression;
                _reusableExpressionAnimation.SetReferenceParameter(referenceParameterName, referencedObject);
                target.StartAnimation(animatedPropertyName, _reusableExpressionAnimation);
            }

            BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation(float initialProgress, bool initialValue)
            {
                var result = _c.CreateBooleanKeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue);
                return result;
            }

            PathKeyFrameAnimation CreatePathKeyFrameAnimation(float initialProgress, CompositionPath initialValue, CompositionEasingFunction initialEasingFunction)
            {
                var result = _c.CreatePathKeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction);
                return result;
            }

            ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation(float initialProgress, float initialValue, CompositionEasingFunction initialEasingFunction)
            {
                var result = _c.CreateScalarKeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction);
                return result;
            }

            Vector2KeyFrameAnimation CreateVector2KeyFrameAnimation(float initialProgress, Vector2 initialValue, CompositionEasingFunction initialEasingFunction)
            {
                var result = _c.CreateVector2KeyFrameAnimation();
                result.Duration = TimeSpan.FromTicks(c_durationTicks);
                result.InsertKeyFrame(initialProgress, initialValue, initialEasingFunction);
                return result;
            }

            AnimationController AnimationController_0()
            {
                if (_animationController_0 != null) { return _animationController_0; }
                var result = _animationController_0 = _c.CreateAnimationController();
                result.Pause();
                BindProperty(_animationController_0, "Progress", "_.Progress", "_", _root);
                return result;
            }

            BooleanKeyFrameAnimation IsVisibleBooleanAnimation_0()
            {
                // Frame 0.
                if (_isVisibleBooleanAnimation_0 != null) { return _isVisibleBooleanAnimation_0; }
                var result = _isVisibleBooleanAnimation_0 = CreateBooleanKeyFrameAnimation(0F, false);
                // Frame 6.
                result.InsertKeyFrame(0.214285716F, true);
                // Frame 25.
                result.InsertKeyFrame(0.892857134F, false);
                return result;
            }

            // Shape tree root for layer: Bubble circle
            BooleanKeyFrameAnimation IsVisibleBooleanAnimation_1()
            {
                // Frame 0.
                var result = CreateBooleanKeyFrameAnimation(0F, false);
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, true);
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, false);
                return result;
            }

            // Shape tree root for layer: Bubble circle mask
            BooleanKeyFrameAnimation IsVisibleBooleanAnimation_2()
            {
                // Frame 0.
                var result = CreateBooleanKeyFrameAnimation(0F, false);
                // Frame 4.
                result.InsertKeyFrame(0.142857149F, true);
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, false);
                return result;
            }

            CanvasGeometry Geometry_0()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(2F, 0F));
                    builder.AddCubicBezier(new Vector2(2F, 1.10500002F), new Vector2(1.10500002F, 2F), new Vector2(0F, 2F));
                    builder.AddCubicBezier(new Vector2(-1.10500002F, 2F), new Vector2(-2F, 1.10500002F), new Vector2(-2F, 0F));
                    builder.AddCubicBezier(new Vector2(-2F, -1.10500002F), new Vector2(-1.10500002F, -2F), new Vector2(0F, -2F));
                    builder.AddCubicBezier(new Vector2(1.10500002F, -2F), new Vector2(2F, -1.10500002F), new Vector2(2F, 0F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CanvasGeometry Geometry_1()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(10F, -18F));
                    builder.AddCubicBezier(new Vector2(5.82399988F, -18F), new Vector2(2.148F, -15.8629999F), new Vector2(0F, -12.6280003F));
                    builder.AddCubicBezier(new Vector2(-2.14899993F, -15.8629999F), new Vector2(-5.82399988F, -18F), new Vector2(-10F, -18F));
                    builder.AddCubicBezier(new Vector2(-16.6270008F, -18F), new Vector2(-22F, -12.6269999F), new Vector2(-22F, -6F));
                    builder.AddCubicBezier(new Vector2(-22F, 5.94299984F), new Vector2(0F, 18F), new Vector2(0F, 18F));
                    builder.AddCubicBezier(new Vector2(0F, 18F), new Vector2(22F, 6.04500008F), new Vector2(22F, -6F));
                    builder.AddCubicBezier(new Vector2(22F, -12.6269999F), new Vector2(16.6270008F, -18F), new Vector2(10F, -18F));
                    builder.EndFigure(CanvasFigureLoop.Open);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CanvasGeometry Geometry_2()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.BeginFigure(new Vector2(0.563000023F, 0.5F));
                    builder.AddCubicBezier(new Vector2(0.563000023F, 0.535000026F), new Vector2(0.535000026F, 0.563000023F), new Vector2(0.5F, 0.563000023F));
                    builder.AddCubicBezier(new Vector2(0.465000004F, 0.563000023F), new Vector2(0.437999994F, 0.535000026F), new Vector2(0.437999994F, 0.5F));
                    builder.AddCubicBezier(new Vector2(0.437999994F, 0.465000004F), new Vector2(0.465000004F, 0.437999994F), new Vector2(0.5F, 0.437999994F));
                    builder.AddCubicBezier(new Vector2(0.535000026F, 0.437999994F), new Vector2(0.563000023F, 0.465000004F), new Vector2(0.563000023F, 0.5F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CanvasGeometry Geometry_3()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.BeginFigure(new Vector2(25.1879997F, 0.5F));
                    builder.AddCubicBezier(new Vector2(25.1879997F, 14.1350002F), new Vector2(14.1350002F, 25.1879997F), new Vector2(0.5F, 25.1879997F));
                    builder.AddCubicBezier(new Vector2(-13.1350002F, 25.1879997F), new Vector2(-24.1879997F, 14.1350002F), new Vector2(-24.1879997F, 0.5F));
                    builder.AddCubicBezier(new Vector2(-24.1879997F, -13.1350002F), new Vector2(-13.1350002F, -24.1879997F), new Vector2(0.5F, -24.1879997F));
                    builder.AddCubicBezier(new Vector2(14.1350002F, -24.1879997F), new Vector2(25.1879997F, -13.1350002F), new Vector2(25.1879997F, 0.5F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CanvasGeometry Geometry_4()
            {
                CanvasGeometry result;
                using (var builder = new CanvasPathBuilder(null))
                {
                    builder.SetFilledRegionDetermination(CanvasFilledRegionDetermination.Winding);
                    builder.BeginFigure(new Vector2(24F, 0F));
                    builder.AddCubicBezier(new Vector2(24F, 13.2550001F), new Vector2(13.2550001F, 24F), new Vector2(0F, 24F));
                    builder.AddCubicBezier(new Vector2(-13.2550001F, 24F), new Vector2(-24F, 13.2550001F), new Vector2(-24F, 0F));
                    builder.AddCubicBezier(new Vector2(-24F, -13.2550001F), new Vector2(-13.2550001F, -24F), new Vector2(0F, -24F));
                    builder.AddCubicBezier(new Vector2(13.2550001F, -24F), new Vector2(24F, -13.2550001F), new Vector2(24F, 0F));
                    builder.EndFigure(CanvasFigureLoop.Closed);
                    result = CanvasGeometry.CreatePath(builder);
                }
                return result;
            }

            CompositionColorBrush ColorBrush_AlmostCornflowerBlue_FF42A5F5()
            {
                return (_colorBrush_AlmostCornflowerBlue_FF42A5F5 == null)
                    ? _colorBrush_AlmostCornflowerBlue_FF42A5F5 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0x42, 0xA5, 0xF5))
                    : _colorBrush_AlmostCornflowerBlue_FF42A5F5;
            }

            CompositionColorBrush ColorBrush_AlmostDarkOrange_FFFF9800()
            {
                return (_colorBrush_AlmostDarkOrange_FFFF9800 == null)
                    ? _colorBrush_AlmostDarkOrange_FFFF9800 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0xFF, 0x98, 0x00))
                    : _colorBrush_AlmostDarkOrange_FFFF9800;
            }

            // - - Shape tree root for layer: Bubble circle mask
            // Transforms: Bubble circle mask
            CompositionColorBrush ColorBrush_AlmostGold_FFFFCA27()
            {
                return _c.CreateColorBrush(Color.FromArgb(0xFF, 0xFF, 0xCA, 0x27));
            }

            CompositionColorBrush ColorBrush_AlmostLimeGreen_FF40C351()
            {
                return (_colorBrush_AlmostLimeGreen_FF40C351 == null)
                    ? _colorBrush_AlmostLimeGreen_FF40C351 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0x40, 0xC3, 0x51))
                    : _colorBrush_AlmostLimeGreen_FF40C351;
            }

            CompositionColorBrush ColorBrush_AlmostOrangeRed_FFFF3D00()
            {
                return (_colorBrush_AlmostOrangeRed_FFFF3D00 == null)
                    ? _colorBrush_AlmostOrangeRed_FFFF3D00 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0xFF, 0x3D, 0x00))
                    : _colorBrush_AlmostOrangeRed_FFFF3D00;
            }

            CompositionColorBrush ColorBrush_AlmostPink_FFFFCDD2()
            {
                return (_colorBrush_AlmostPink_FFFFCDD2 == null)
                    ? _colorBrush_AlmostPink_FFFFCDD2 = _c.CreateColorBrush(Color.FromArgb(0xFF, 0xFF, 0xCD, 0xD2))
                    : _colorBrush_AlmostPink_FFFFCDD2;
            }

            // - Masks
            // Layer: Heart fill
            CompositionColorBrush ColorBrush_Black()
            {
                return _c.CreateColorBrush(Color.FromArgb(0xFF, 0x00, 0x00, 0x00));
            }

            // Layer aggregator
            // Layer: Circle 12
            CompositionContainerShape ContainerShape_0()
            {
                if (_containerShape_0 != null) { return _containerShape_0; }
                var result = _containerShape_0 = _c.CreateContainerShape();
                result.Scale = new Vector2(0F, 0F);
                result.Shapes.Add(ContainerShape_1());
                return result;
            }

            // - Layer aggregator
            // Layer: Circle 12
            CompositionContainerShape ContainerShape_1()
            {
                if (_containerShape_1 != null) { return _containerShape_1; }
                var result = _containerShape_1 = _c.CreateContainerShape();
                result.Offset = new Vector2(22F, 26.8959999F);
                result.Scale = new Vector2(1F, -1F);
                var shapes = result.Shapes;
                // Transforms: Circle 12
                shapes.Add(SpriteShape_00());
                // Transforms: Circle 11
                shapes.Add(SpriteShape_01());
                // Transforms: Circle 10
                shapes.Add(SpriteShape_02());
                // Transforms: Circle 9
                shapes.Add(SpriteShape_03());
                // Transforms: Circle 8
                shapes.Add(SpriteShape_04());
                // Transforms: Circle 7
                shapes.Add(SpriteShape_05());
                // Transforms: Circle 6
                shapes.Add(SpriteShape_06());
                // Transforms: Circle 5
                shapes.Add(SpriteShape_07());
                // Transforms: Circle 4
                shapes.Add(SpriteShape_08());
                // Transforms: Circle 3
                shapes.Add(SpriteShape_09());
                // Transforms: Circle 2
                shapes.Add(SpriteShape_10());
                // Transforms: Circle 1
                shapes.Add(SpriteShape_11());
                return result;
            }

            // Layer aggregator
            // Layer: Heart empty
            CompositionContainerShape ContainerShape_2()
            {
                if (_containerShape_2 != null) { return _containerShape_2; }
                var result = _containerShape_2 = _c.CreateContainerShape();
                result.Scale = new Vector2(0F, 0F);
                // ShapeGroup: Group 1
                result.Shapes.Add(SpriteShape_12());
                return result;
            }

            // Layer aggregator
            // Layer: Heart empty 2
            CompositionContainerShape ContainerShape_3()
            {
                if (_containerShape_3 != null) { return _containerShape_3; }
                var result = _containerShape_3 = _c.CreateContainerShape();
                // ShapeGroup: Group 1
                result.Shapes.Add(SpriteShape_13());
                return result;
            }

            // Shape tree root for layer: Bubble circle
            CompositionContainerShape ContainerShape_4()
            {
                if (_containerShape_4 != null) { return _containerShape_4; }
                var result = _containerShape_4 = _c.CreateContainerShape();
                result.Offset = new Vector2(24F, 24F);
                // Transforms: Bubble circle
                result.Shapes.Add(SpriteShape_16());
                return result;
            }

            // Shape tree root for layer: Bubble circle mask
            CompositionContainerShape ContainerShape_5()
            {
                if (_containerShape_5 != null) { return _containerShape_5; }
                var result = _containerShape_5 = _c.CreateContainerShape();
                result.Offset = new Vector2(24F, 24F);
                // Transforms: Bubble circle mask
                result.Shapes.Add(SpriteShape_17());
                return result;
            }

            CompositionEffectBrush EffectBrush_0()
            {
                var effectFactory = EffectFactory_0();
                var result = effectFactory.CreateBrush();
                result.SetSourceParameter("destination", SurfaceBrush_0());
                result.SetSourceParameter("source", SurfaceBrush_1());
                return result;
            }

            CompositionEffectBrush EffectBrush_1()
            {
                var effectFactory = EffectFactory_1();
                var result = effectFactory.CreateBrush();
                result.SetSourceParameter("destination", SurfaceBrush_2());
                result.SetSourceParameter("source", SurfaceBrush_3());
                return result;
            }

            CompositionEffectFactory EffectFactory_0()
            {
                var compositeEffect = new CompositeEffect();
                compositeEffect.Mode = CanvasComposite.DestinationIn;
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("destination"));
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("source"));
                var result = _c.CreateEffectFactory(compositeEffect);
                return result;
            }

            CompositionEffectFactory EffectFactory_1()
            {
                var compositeEffect = new CompositeEffect();
                compositeEffect.Mode = CanvasComposite.DestinationOut;
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("destination"));
                compositeEffect.Sources.Add(new CompositionEffectSourceParameter("source"));
                var result = _c.CreateEffectFactory(compositeEffect);
                return result;
            }

            CompositionPath Path_0()
            {
                if (_path_0 != null) { return _path_0; }
                var result = _path_0 = new CompositionPath(Geometry_2());
                return result;
            }

            CompositionPath Path_1()
            {
                if (_path_1 != null) { return _path_1; }
                var result = _path_1 = new CompositionPath(Geometry_3());
                return result;
            }

            CompositionPathGeometry PathGeometry_0()
            {
                return (_pathGeometry_0 == null)
                    ? _pathGeometry_0 = _c.CreatePathGeometry(new CompositionPath(Geometry_0()))
                    : _pathGeometry_0;
            }

            CompositionPathGeometry PathGeometry_1()
            {
                return (_pathGeometry_1 == null)
                    ? _pathGeometry_1 = _c.CreatePathGeometry(new CompositionPath(Geometry_1()))
                    : _pathGeometry_1;
            }

            // - Masks
            // Layer: Heart fill
            CompositionPathGeometry PathGeometry_2()
            {
                if (_pathGeometry_2 != null) { return _pathGeometry_2; }
                var result = _pathGeometry_2 = _c.CreatePathGeometry();
                return result;
            }

            CompositionPathGeometry PathGeometry_3()
            {
                return (_pathGeometry_3 == null)
                    ? _pathGeometry_3 = _c.CreatePathGeometry(new CompositionPath(Geometry_4()))
                    : _pathGeometry_3;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_00()
            {
                if (_spriteShape_00 != null) { return _spriteShape_00; }
                var result = _spriteShape_00 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostCornflowerBlue_FF42A5F5();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_01()
            {
                if (_spriteShape_01 != null) { return _spriteShape_01; }
                var result = _spriteShape_01 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostDarkOrange_FFFF9800();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_02()
            {
                if (_spriteShape_02 != null) { return _spriteShape_02; }
                var result = _spriteShape_02 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostOrangeRed_FFFF3D00();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_03()
            {
                if (_spriteShape_03 != null) { return _spriteShape_03; }
                var result = _spriteShape_03 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostDarkOrange_FFFF9800();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_04()
            {
                if (_spriteShape_04 != null) { return _spriteShape_04; }
                var result = _spriteShape_04 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostLimeGreen_FF40C351();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_05()
            {
                if (_spriteShape_05 != null) { return _spriteShape_05; }
                var result = _spriteShape_05 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostLimeGreen_FF40C351();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_06()
            {
                if (_spriteShape_06 != null) { return _spriteShape_06; }
                var result = _spriteShape_06 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostLimeGreen_FF40C351();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_07()
            {
                if (_spriteShape_07 != null) { return _spriteShape_07; }
                var result = _spriteShape_07 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostOrangeRed_FFFF3D00();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_08()
            {
                if (_spriteShape_08 != null) { return _spriteShape_08; }
                var result = _spriteShape_08 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostOrangeRed_FFFF3D00();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_09()
            {
                if (_spriteShape_09 != null) { return _spriteShape_09; }
                var result = _spriteShape_09 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostCornflowerBlue_FF42A5F5();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_10()
            {
                if (_spriteShape_10 != null) { return _spriteShape_10; }
                var result = _spriteShape_10 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostDarkOrange_FFFF9800();
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Path 1
            CompositionSpriteShape SpriteShape_11()
            {
                if (_spriteShape_11 != null) { return _spriteShape_11; }
                var result = _spriteShape_11 = _c.CreateSpriteShape(PathGeometry_0());
                result.FillBrush = ColorBrush_AlmostCornflowerBlue_FF42A5F5();
                return result;
            }

            // - Layer aggregator
            // Layer: Heart empty
            // Path 1
            CompositionSpriteShape SpriteShape_12()
            {
                if (_spriteShape_12 != null) { return _spriteShape_12; }
                var result = _spriteShape_12 = _c.CreateSpriteShape(PathGeometry_1());
                result.Offset = new Vector2(24F, 24F);
                result.FillBrush = ColorBrush_AlmostPink_FFFFCDD2();
                return result;
            }

            // - Layer aggregator
            // Layer: Heart empty 2
            // Path 1
            CompositionSpriteShape SpriteShape_13()
            {
                if (_spriteShape_13 != null) { return _spriteShape_13; }
                var result = _spriteShape_13 = _c.CreateSpriteShape(PathGeometry_1());
                result.Offset = new Vector2(24F, 24F);
                result.FillBrush = ColorBrush_AlmostPink_FFFFCDD2();
                return result;
            }

            // Shape tree root for layer: Heart fill
            // Path 1
            CompositionSpriteShape SpriteShape_14()
            {
                if (_spriteShape_14 != null) { return _spriteShape_14; }
                var result = _spriteShape_14 = _c.CreateSpriteShape(PathGeometry_1());
                result.Offset = new Vector2(24F, 24F);
                result.FillBrush = ColorBrush_AlmostOrangeRed_FFFF3D00();
                return result;
            }

            // Masks
            // Transforms for Heart fill
            CompositionSpriteShape SpriteShape_15()
            {
                if (_spriteShape_15 != null) { return _spriteShape_15; }
                var result = _spriteShape_15 = _c.CreateSpriteShape(PathGeometry_2());
                result.Offset = new Vector2(24F, 24F);
                result.FillBrush = ColorBrush_Black();
                return result;
            }

            // - Shape tree root for layer: Bubble circle
            // Path 1
            CompositionSpriteShape SpriteShape_16()
            {
                if (_spriteShape_16 != null) { return _spriteShape_16; }
                var result = _spriteShape_16 = _c.CreateSpriteShape(PathGeometry_3());
                result.FillBrush = ColorBrush_AlmostOrangeRed_FFFF3D00();
                return result;
            }

            // - Shape tree root for layer: Bubble circle mask
            // Path 1
            CompositionSpriteShape SpriteShape_17()
            {
                if (_spriteShape_17 != null) { return _spriteShape_17; }
                var result = _spriteShape_17 = _c.CreateSpriteShape(PathGeometry_3());
                result.FillBrush = ColorBrush_AlmostGold_FFFFCA27();
                return result;
            }

            CompositionSurfaceBrush SurfaceBrush_0()
            {
                return _c.CreateSurfaceBrush(VisualSurface_0());
            }

            CompositionSurfaceBrush SurfaceBrush_1()
            {
                return _c.CreateSurfaceBrush(VisualSurface_1());
            }

            CompositionSurfaceBrush SurfaceBrush_2()
            {
                return _c.CreateSurfaceBrush(VisualSurface_2());
            }

            CompositionSurfaceBrush SurfaceBrush_3()
            {
                return _c.CreateSurfaceBrush(VisualSurface_3());
            }

            CompositionVisualSurface VisualSurface_0()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_0();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            CompositionVisualSurface VisualSurface_1()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_1();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            CompositionVisualSurface VisualSurface_2()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_2();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            CompositionVisualSurface VisualSurface_3()
            {
                var result = _c.CreateVisualSurface();
                result.SourceVisual = ContainerVisual_3();
                result.SourceSize = new Vector2(48F, 48F);
                return result;
            }

            ContainerVisual ContainerVisual_0()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Shape tree root for layer: Heart fill
                result.Children.InsertAtTop(ShapeVisual_1());
                return result;
            }

            ContainerVisual ContainerVisual_1()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Masks
                result.Children.InsertAtTop(ShapeVisual_2());
                return result;
            }

            ContainerVisual ContainerVisual_2()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Shape tree root for layer: Bubble circle
                result.Children.InsertAtTop(ShapeVisual_3());
                return result;
            }

            ContainerVisual ContainerVisual_3()
            {
                var result = _c.CreateContainerVisual();
                result.BorderMode = CompositionBorderMode.Soft;
                // Shape tree root for layer: Bubble circle mask
                result.Children.InsertAtTop(ShapeVisual_4());
                return result;
            }

            // The root of the composition.
            ContainerVisual Root()
            {
                if (_root != null) { return _root; }
                var result = _root = _c.CreateContainerVisual();
                var propertySet = result.Properties;
                propertySet.InsertScalar("Progress", 0F);
                var children = result.Children;
                // Layer aggregator
                children.InsertAtTop(ShapeVisual_0());
                children.InsertAtTop(SpriteVisual_0());
                children.InsertAtTop(SpriteVisual_1());
                return result;
            }

            CubicBezierEasingFunction CubicBezierEasingFunction_0()
            {
                return (_cubicBezierEasingFunction_0 == null)
                    ? _cubicBezierEasingFunction_0 = _c.CreateCubicBezierEasingFunction(new Vector2(0.333000004F, 0F), new Vector2(0.666999996F, 1F))
                    : _cubicBezierEasingFunction_0;
            }

            // - - Masks
            // - Layer: Heart fill
            // Path
            PathKeyFrameAnimation PathKeyFrameAnimation_0()
            {
                // Frame 0.
                var result = CreatePathKeyFrameAnimation(0F, Path_0(), StepThenHoldEasingFunction());
                // Frame 5.
                result.InsertKeyFrame(0.178571433F, Path_0(), HoldThenStepEasingFunction());
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, Path_1(), CubicBezierEasingFunction_0());
                // Frame 17.
                result.InsertKeyFrame(0.607142866F, Path_1(), CubicBezierEasingFunction_0());
                // Frame 25.
                result.InsertKeyFrame(0.892857134F, Path_0(), CubicBezierEasingFunction_0());
                return result;
            }

            // - - Layer aggregator
            // - Layer: Circle 12
            // Rotation
            ScalarKeyFrameAnimation RotationAngleInDegreesScalarAnimation_0_to_8()
            {
                // Frame 0.
                var result = CreateScalarKeyFrameAnimation(0F, 0F, StepThenHoldEasingFunction());
                // Frame 5.
                result.InsertKeyFrame(0.178571433F, 0F, HoldThenStepEasingFunction());
                // Frame 11.
                result.InsertKeyFrame(0.392857134F, 8F, CubicBezierEasingFunction_0());
                return result;
            }

            // Scale
            ScalarKeyFrameAnimation ScalarAnimation_0_to_0p912_0()
            {
                // Frame 0.
                if (_scalarAnimation_0_to_0p912_0 != null) { return _scalarAnimation_0_to_0p912_0; }
                var result = _scalarAnimation_0_to_0p912_0 = CreateScalarKeyFrameAnimation(0F, 0F, StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, 0F, HoldThenStepEasingFunction());
                // Frame 5.
                result.InsertKeyFrame(0.178571433F, 0.5F, _c.CreateCubicBezierEasingFunction(new Vector2(0.191F, 0.0979999974F), new Vector2(0.57099998F, 0.728999972F)));
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, 0.91249001F, _c.CreateCubicBezierEasingFunction(new Vector2(0.331999987F, 0.381999999F), new Vector2(0.61500001F, 1F)));
                return result;
            }

            // Scale
            ScalarKeyFrameAnimation ScalarAnimation_0_to_0p912_1()
            {
                // Frame 0.
                if (_scalarAnimation_0_to_0p912_1 != null) { return _scalarAnimation_0_to_0p912_1; }
                var result = _scalarAnimation_0_to_0p912_1 = CreateScalarKeyFrameAnimation(0F, 0F, StepThenHoldEasingFunction());
                // Frame 4.
                result.InsertKeyFrame(0.142857149F, 0F, HoldThenStepEasingFunction());
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, 0.91249001F, _c.CreateCubicBezierEasingFunction(new Vector2(0.170000002F, 0.236000001F), new Vector2(0.61500001F, 1F)));
                return result;
            }

            // Layer aggregator
            ShapeVisual ShapeVisual_0()
            {
                var result = _c.CreateShapeVisual();
                result.Size = new Vector2(48F, 48F);
                var shapes = result.Shapes;
                // Layer: Circle 12
                shapes.Add(ContainerShape_0());
                // Layer: Heart empty
                shapes.Add(ContainerShape_2());
                // Layer: Heart empty 2
                shapes.Add(ContainerShape_3());
                return result;
            }

            // Shape tree root for layer: Heart fill
            ShapeVisual ShapeVisual_1()
            {
                if (_shapeVisual_1 != null) { return _shapeVisual_1; }
                var result = _shapeVisual_1 = _c.CreateShapeVisual();
                result.IsVisible = false;
                result.Size = new Vector2(48F, 48F);
                // Transforms: Heart fill
                result.Shapes.Add(SpriteShape_14());
                return result;
            }

            // Masks
            ShapeVisual ShapeVisual_2()
            {
                if (_shapeVisual_2 != null) { return _shapeVisual_2; }
                var result = _shapeVisual_2 = _c.CreateShapeVisual();
                result.IsVisible = false;
                result.Size = new Vector2(48F, 48F);
                // Layer: Heart fill
                result.Shapes.Add(SpriteShape_15());
                return result;
            }

            // Shape tree root for layer: Bubble circle
            ShapeVisual ShapeVisual_3()
            {
                if (_shapeVisual_3 != null) { return _shapeVisual_3; }
                var result = _shapeVisual_3 = _c.CreateShapeVisual();
                result.IsVisible = false;
                result.Size = new Vector2(48F, 48F);
                result.Shapes.Add(ContainerShape_4());
                return result;
            }

            // Shape tree root for layer: Bubble circle mask
            ShapeVisual ShapeVisual_4()
            {
                if (_shapeVisual_4 != null) { return _shapeVisual_4; }
                var result = _shapeVisual_4 = _c.CreateShapeVisual();
                result.IsVisible = false;
                result.Size = new Vector2(48F, 48F);
                result.Shapes.Add(ContainerShape_5());
                return result;
            }

            SpriteVisual SpriteVisual_0()
            {
                var result = _c.CreateSpriteVisual();
                result.Size = new Vector2(48F, 48F);
                result.Brush = EffectBrush_0();
                return result;
            }

            SpriteVisual SpriteVisual_1()
            {
                var result = _c.CreateSpriteVisual();
                result.Size = new Vector2(48F, 48F);
                result.Brush = EffectBrush_1();
                return result;
            }

            StepEasingFunction HoldThenStepEasingFunction()
            {
                if (_holdThenStepEasingFunction != null) { return _holdThenStepEasingFunction; }
                var result = _holdThenStepEasingFunction = _c.CreateStepEasingFunction();
                result.IsFinalStepSingleFrame = true;
                return result;
            }

            StepEasingFunction StepThenHoldEasingFunction()
            {
                if (_stepThenHoldEasingFunction != null) { return _stepThenHoldEasingFunction; }
                var result = _stepThenHoldEasingFunction = _c.CreateStepEasingFunction();
                result.IsInitialStepSingleFrame = true;
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 12
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_00()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-1F, -1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-1F, -1F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(-7.31099987F, -16.7250004F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 11
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_01()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(3F, -1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(3F, -1F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(12.0819998F, -13.0299997F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 10
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_02()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-5F, -1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-5F, -1F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(-16.5039997F, -17.4150009F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 9
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_03()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-1F, 3F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-1F, 3F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(-15.125F, -10.125F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 8
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_04()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(3F, 3F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(3F, 3F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(22.0650005F, -4.42000008F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 7
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_05()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-5F, 3F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-5F, 3F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(-19.8659992F, 13.1630001F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 6
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_06()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-1F, 7F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-1F, 7F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(-7.30600023F, 22.9960003F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 5
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_07()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(3F, 7F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(3F, 7F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(9.84300041F, 24.6970005F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 4
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_08()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(7F, -1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(7F, -1F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(17.875F, -12.5F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 3
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_09()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(7F, 3F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(7F, 3F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(16.2290001F, 25.9650002F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 2
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_10()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(7F, 7F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(7F, 7F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(20.3610001F, 23.0890007F), CubicBezierEasingFunction_0());
                return result;
            }

            // - - - Layer aggregator
            // - - Layer: Circle 12
            // Transforms: Circle 1
            // Offset
            Vector2KeyFrameAnimation OffsetVector2Animation_11()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(-5F, 7F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(-5F, 7F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(-20.9640007F, 18.6089993F), CubicBezierEasingFunction_0());
                return result;
            }

            // Scale
            Vector2KeyFrameAnimation ScaleVector2Animation_0()
            {
                // Frame 0.
                if (_scaleVector2Animation_0 != null) { return _scaleVector2Animation_0; }
                var result = _scaleVector2Animation_0 = CreateVector2KeyFrameAnimation(0F, new Vector2(0.5F, 0.5F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(0.5F, 0.5F), HoldThenStepEasingFunction());
                // Frame 10.
                result.InsertKeyFrame(0.357142866F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                return result;
            }

            // Scale
            Vector2KeyFrameAnimation ScaleVector2Animation_1()
            {
                // Frame 0.
                if (_scaleVector2Animation_1 != null) { return _scaleVector2Animation_1; }
                var result = _scaleVector2Animation_1 = CreateVector2KeyFrameAnimation(0F, new Vector2(0.5F, 0.5F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(0.5F, 0.5F), HoldThenStepEasingFunction());
                // Frame 8.
                result.InsertKeyFrame(0.285714298F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                return result;
            }

            // Scale
            Vector2KeyFrameAnimation ScaleVector2Animation_2()
            {
                // Frame 0.
                if (_scaleVector2Animation_2 != null) { return _scaleVector2Animation_2; }
                var result = _scaleVector2Animation_2 = CreateVector2KeyFrameAnimation(0F, new Vector2(1F, 1F), StepThenHoldEasingFunction());
                // Frame 3.
                result.InsertKeyFrame(0.107142858F, new Vector2(1F, 1F), HoldThenStepEasingFunction());
                // Frame 5.
                result.InsertKeyFrame(0.178571433F, new Vector2(0.5F, 0.5F), CubicBezierEasingFunction_0());
                // Frame 7.
                result.InsertKeyFrame(0.25F, new Vector2(1.10000002F, 1.10000002F), CubicBezierEasingFunction_0());
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                // Frame 17.
                result.InsertKeyFrame(0.607142866F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                // Frame 20.
                result.InsertKeyFrame(0.714285731F, new Vector2(0.699999988F, 0.699999988F), CubicBezierEasingFunction_0());
                // Frame 25.
                result.InsertKeyFrame(0.892857134F, new Vector2(1F, 1F), CubicBezierEasingFunction_0());
                return result;
            }

            // - Layer aggregator
            // Layer: Circle 12
            Vector2KeyFrameAnimation ShapeVisibilityAnimation_0()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(0F, 0F), HoldThenStepEasingFunction());
                // Frame 5.
                result.InsertKeyFrame(0.178571433F, new Vector2(1F, 1F), HoldThenStepEasingFunction());
                // Frame 11.
                result.InsertKeyFrame(0.392857134F, new Vector2(0F, 0F), HoldThenStepEasingFunction());
                return result;
            }

            // - Layer aggregator
            // Layer: Heart empty
            Vector2KeyFrameAnimation ShapeVisibilityAnimation_1()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(0F, 0F), HoldThenStepEasingFunction());
                // Frame 17.
                result.InsertKeyFrame(0.607142866F, new Vector2(1F, 1F), HoldThenStepEasingFunction());
                return result;
            }

            // - Layer aggregator
            // Layer: Heart empty 2
            Vector2KeyFrameAnimation ShapeVisibilityAnimation_2()
            {
                // Frame 0.
                var result = CreateVector2KeyFrameAnimation(0F, new Vector2(1F, 1F), HoldThenStepEasingFunction());
                // Frame 9.
                result.InsertKeyFrame(0.321428567F, new Vector2(0F, 0F), HoldThenStepEasingFunction());
                return result;
            }

            internal Heart_AnimatedVisual(
                Compositor compositor
                )
            {
                _c = compositor;
                _reusableExpressionAnimation = compositor.CreateExpressionAnimation();
                Root();
            }

            public Visual RootVisual => _root;
            public TimeSpan Duration => TimeSpan.FromTicks(c_durationTicks);
            public Vector2 Size => new Vector2(48F, 48F);
            void IDisposable.Dispose() => _root?.Dispose();

            public void CreateAnimations()
            {
                _containerShape_0.StartAnimation("Scale", ShapeVisibilityAnimation_0(), AnimationController_0());
                _containerShape_1.StartAnimation("RotationAngleInDegrees", RotationAngleInDegreesScalarAnimation_0_to_8(), AnimationController_0());
                _containerShape_2.StartAnimation("Scale", ShapeVisibilityAnimation_1(), AnimationController_0());
                _containerShape_3.StartAnimation("Scale", ShapeVisibilityAnimation_2(), AnimationController_0());
                _containerShape_4.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _containerShape_5.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _pathGeometry_2.StartAnimation("Path", PathKeyFrameAnimation_0(), AnimationController_0());
                _spriteShape_00.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_00.StartAnimation("Offset", OffsetVector2Animation_00(), AnimationController_0());
                _spriteShape_01.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_01.StartAnimation("Offset", OffsetVector2Animation_01(), AnimationController_0());
                _spriteShape_02.StartAnimation("Scale", ScaleVector2Animation_1(), AnimationController_0());
                _spriteShape_02.StartAnimation("Offset", OffsetVector2Animation_02(), AnimationController_0());
                _spriteShape_03.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_03.StartAnimation("Offset", OffsetVector2Animation_03(), AnimationController_0());
                _spriteShape_04.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_04.StartAnimation("Offset", OffsetVector2Animation_04(), AnimationController_0());
                _spriteShape_05.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_05.StartAnimation("Offset", OffsetVector2Animation_05(), AnimationController_0());
                _spriteShape_06.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_06.StartAnimation("Offset", OffsetVector2Animation_06(), AnimationController_0());
                _spriteShape_07.StartAnimation("Scale", ScaleVector2Animation_1(), AnimationController_0());
                _spriteShape_07.StartAnimation("Offset", OffsetVector2Animation_07(), AnimationController_0());
                _spriteShape_08.StartAnimation("Scale", ScaleVector2Animation_1(), AnimationController_0());
                _spriteShape_08.StartAnimation("Offset", OffsetVector2Animation_08(), AnimationController_0());
                _spriteShape_09.StartAnimation("Scale", ScaleVector2Animation_0(), AnimationController_0());
                _spriteShape_09.StartAnimation("Offset", OffsetVector2Animation_09(), AnimationController_0());
                _spriteShape_10.StartAnimation("Scale", ScaleVector2Animation_1(), AnimationController_0());
                _spriteShape_10.StartAnimation("Offset", OffsetVector2Animation_10(), AnimationController_0());
                _spriteShape_11.StartAnimation("Scale", ScaleVector2Animation_1(), AnimationController_0());
                _spriteShape_11.StartAnimation("Offset", OffsetVector2Animation_11(), AnimationController_0());
                _spriteShape_12.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _spriteShape_13.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _spriteShape_14.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _spriteShape_15.StartAnimation("Scale", ScaleVector2Animation_2(), AnimationController_0());
                _spriteShape_16.StartAnimation("Scale.X", ScalarAnimation_0_to_0p912_0(), AnimationController_0());
                _spriteShape_16.StartAnimation("Scale.Y", ScalarAnimation_0_to_0p912_0(), AnimationController_0());
                _spriteShape_17.StartAnimation("Scale.X", ScalarAnimation_0_to_0p912_1(), AnimationController_0());
                _spriteShape_17.StartAnimation("Scale.Y", ScalarAnimation_0_to_0p912_1(), AnimationController_0());
                _shapeVisual_1.StartAnimation("IsVisible", IsVisibleBooleanAnimation_0(), AnimationController_0());
                _shapeVisual_2.StartAnimation("IsVisible", IsVisibleBooleanAnimation_0(), AnimationController_0());
                _shapeVisual_3.StartAnimation("IsVisible", IsVisibleBooleanAnimation_1(), AnimationController_0());
                _shapeVisual_4.StartAnimation("IsVisible", IsVisibleBooleanAnimation_2(), AnimationController_0());
            }

            public void DestroyAnimations()
            {
                _containerShape_0.StopAnimation("Scale");
                _containerShape_1.StopAnimation("RotationAngleInDegrees");
                _containerShape_2.StopAnimation("Scale");
                _containerShape_3.StopAnimation("Scale");
                _containerShape_4.StopAnimation("Scale");
                _containerShape_5.StopAnimation("Scale");
                _pathGeometry_2.StopAnimation("Path");
                _spriteShape_00.StopAnimation("Scale");
                _spriteShape_00.StopAnimation("Offset");
                _spriteShape_01.StopAnimation("Scale");
                _spriteShape_01.StopAnimation("Offset");
                _spriteShape_02.StopAnimation("Scale");
                _spriteShape_02.StopAnimation("Offset");
                _spriteShape_03.StopAnimation("Scale");
                _spriteShape_03.StopAnimation("Offset");
                _spriteShape_04.StopAnimation("Scale");
                _spriteShape_04.StopAnimation("Offset");
                _spriteShape_05.StopAnimation("Scale");
                _spriteShape_05.StopAnimation("Offset");
                _spriteShape_06.StopAnimation("Scale");
                _spriteShape_06.StopAnimation("Offset");
                _spriteShape_07.StopAnimation("Scale");
                _spriteShape_07.StopAnimation("Offset");
                _spriteShape_08.StopAnimation("Scale");
                _spriteShape_08.StopAnimation("Offset");
                _spriteShape_09.StopAnimation("Scale");
                _spriteShape_09.StopAnimation("Offset");
                _spriteShape_10.StopAnimation("Scale");
                _spriteShape_10.StopAnimation("Offset");
                _spriteShape_11.StopAnimation("Scale");
                _spriteShape_11.StopAnimation("Offset");
                _spriteShape_12.StopAnimation("Scale");
                _spriteShape_13.StopAnimation("Scale");
                _spriteShape_14.StopAnimation("Scale");
                _spriteShape_15.StopAnimation("Scale");
                _spriteShape_16.StopAnimation("Scale.X");
                _spriteShape_16.StopAnimation("Scale.Y");
                _spriteShape_17.StopAnimation("Scale.X");
                _spriteShape_17.StopAnimation("Scale.Y");
                _shapeVisual_1.StopAnimation("IsVisible");
                _shapeVisual_2.StopAnimation("IsVisible");
                _shapeVisual_3.StopAnimation("IsVisible");
                _shapeVisual_4.StopAnimation("IsVisible");
            }

        }
    }
}
