[ElmSharp] Added new AnimationView widget for lottie (#624)
authorarosis78 <35049857+arosis78@users.noreply.github.com>
Tue, 15 Jan 2019 07:29:10 +0000 (16:29 +0900)
committerKangho Hur <rookiejava+github@gmail.com>
Tue, 15 Jan 2019 07:29:10 +0000 (16:29 +0900)
* [ElmSharp] Added new AnimationView widget for lottie

Signed-off-by: Jeonghyun Yun <jh0506.yun@samsung.com>
* Update Interop.Elementary.AnimationView.cs

* Update AnimationViewTest1.cs

* Update AnimationViewTest1.cs

* Update AnimationViewTest1.cs

* Update AnimationViewTest1.cs

* Update AnimationView.cs

* Update AnimationViewTest1.cs

* Update AnimationView.cs

* Update AnimationView.cs

* Update AnimationViewTest1.cs

* Update AnimationView.cs

* Update AnimationViewTest1.cs

src/ElmSharp/ElmSharp/AnimationView.cs [new file with mode: 0644]
src/ElmSharp/Interop/Interop.Elementary.AnimationView.cs [new file with mode: 0644]
test/ElmSharp.Test/TC/AnimationViewTest1.cs [new file with mode: 0644]
test/ElmSharp.Test/res/a_mountain.json [new file with mode: 0644]

diff --git a/src/ElmSharp/ElmSharp/AnimationView.cs b/src/ElmSharp/ElmSharp/AnimationView.cs
new file mode 100644 (file)
index 0000000..c34ebab
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace ElmSharp
+{
+    /// <summary>
+    /// The AnimationView is designed to show and play animation of vector graphics based content.
+    /// Currently ElmSharp AnimationView is supporting only json format (known for Lottie file as well).
+    /// </summary>
+    /// <since_tizen> preview </since_tizen>
+    public class AnimationView : EvasObject
+    {
+        private SmartEvent _started;
+        private SmartEvent _repeated;
+        private SmartEvent _finished;
+        private SmartEvent _paused;
+        private SmartEvent _resumed;
+        private SmartEvent _stopped;
+        private SmartEvent _updated;
+
+        /// <summary>
+        /// Creates and initializes a new instance of the AnimationView class.
+        /// </summary>
+        /// <param name="parent">The parent is a given container, which will be attached by AnimationView as a child. It's <see cref="EvasObject"/> type.</param>
+        /// <since_tizen> preview </since_tizen>
+        public AnimationView(EvasObject parent) : base(parent)
+        {
+            _started = new SmartEvent(this, this.Handle, "play,start");
+            _repeated = new SmartEvent(this, this.Handle, "play,repeat");
+            _finished = new SmartEvent(this, this.Handle, "play,done");
+            _paused = new SmartEvent(this, this.Handle, "play,pause");
+            _resumed = new SmartEvent(this, this.Handle, "play,resume");
+            _stopped = new SmartEvent(this, this.Handle, "play,stop");
+            _updated = new SmartEvent(this, this.Handle, "play,update");
+
+            _started.On += (sender, e) =>
+            {
+                Started?.Invoke(this, EventArgs.Empty);
+            };
+
+            _repeated.On += (sender, e) =>
+            {
+                Repeated?.Invoke(this, EventArgs.Empty);
+            };
+
+            _finished.On += (sender, e) =>
+            {
+                Finished?.Invoke(this, EventArgs.Empty);
+            };
+
+            _paused.On += (sender, e) =>
+            {
+                Paused?.Invoke(this, EventArgs.Empty);
+            };
+
+            _resumed.On += (sender, e) =>
+            {
+                Resumed?.Invoke(this, EventArgs.Empty);
+            };
+
+            _stopped.On += (sender, e) =>
+            {
+                Stopped?.Invoke(this, EventArgs.Empty);
+            };
+
+            _updated.On += (sender, e) =>
+            {
+                Updated?.Invoke(this, EventArgs.Empty);
+            };
+        }
+
+        /// <summary>
+        /// It occurs when the animation is just started.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Started;
+
+        /// <summary>
+        /// It occurs when the animation is just repeated.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Repeated;
+
+        /// <summary>
+        /// It occurs when the animation is just finished.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Finished;
+
+        /// <summary>
+        /// It occurs when the animation is just paused.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Paused;
+
+        /// <summary>
+        /// It occurs when the animation is just resumed.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Resumed;
+
+        /// <summary>
+        /// It occurs when the animation is just stopped.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Stopped;
+
+        /// <summary>
+        /// It occurs when the animation is updated to the next frame.
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public event EventHandler Updated;
+
+        /// <summary>
+        /// Sets or gets whether to play animation automatically.
+        /// <remarks>
+        /// If AutoPlay is true, animation will be started when it's readied.
+        /// The condition of AutoPlay is when AnimationView opened file successfully, yet to play it plus when the object is visible.
+        /// If AnimationView is disabled, invisible, it turns to pause state then resume animation when it's visible again.
+        /// This AutoPlay will be only affected to the next animation source. So must be called before SetAnimation()
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public bool AutoPlay
+        {
+            get
+            {
+                return Interop.Elementary.elm_animation_view_auto_play_get(Handle);
+            }
+            set
+            {
+                Interop.Elementary.elm_animation_view_auto_play_set(Handle, value);
+            }
+        }
+
+        /// <summary>
+        /// Sets or gets whether to turn on/off animation looping.
+        /// <remarks>
+        /// If AutoRepeat is true, it repeats animation when animation frame is reached to end.
+        /// This AutoRepeat mode is valid to both Play and ReversePlay cases.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public bool AutoRepeat
+        {
+            get
+            {
+                return Interop.Elementary.elm_animation_view_auto_repeat_get(Handle);
+            }
+            set
+            {
+                Interop.Elementary.elm_animation_view_auto_repeat_set(Handle, value);
+            }
+        }
+
+        /// <summary>
+        /// Sets or gets the animation speed.
+        /// <remarks>
+        /// Control animation speed by multiplying Speed value.
+        /// If you want to play animation double-time faster, you can give Speed 2.
+        /// If you want to play animation double-time slower, you can give Speed 0.5.
+        /// Speed must be greater than zero.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public double Speed
+        {
+            get
+            {
+                return Interop.Elementary.elm_animation_view_speed_get(Handle);
+            }
+            set
+            {
+                Interop.Elementary.elm_animation_view_speed_set(Handle, value);
+            }
+        }
+
+        /// <summary>
+        /// Get the duration of animation in seconds.
+        /// </summary>
+        /// <remarks>
+        /// Returns total duration time of current animation in the seconds.
+        /// If current animation source isn't animatable, it returns zero.
+        /// </remarks>
+        /// <since_tizen> preview </since_tizen>
+        public double DurationTime
+        {
+            get
+            {
+                return Interop.Elementary.elm_animation_view_duration_time_get(Handle);
+            }
+        }
+
+        /// <summary>
+        /// Sets or gets current keyframe position of animation view.
+        /// <remarks>
+        /// When you required to jump on a certain frame instantly,
+        /// you can change current keyframe by using this property
+        /// The range of keyframe is 0 ~ 1.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public double KeyFrame
+        {
+            get
+            {
+                return Interop.Elementary.elm_animation_view_keyframe_get(Handle);
+            }
+            set
+            {
+                Interop.Elementary.elm_animation_view_keyframe_set(Handle, value);
+            }
+        }
+
+        /// <summary>
+        /// Sets the animation source file.
+        /// </summary>
+        /// <param name="file">The animation file path.</param>
+        /// <since_tizen> preview </since_tizen>
+        public void SetAnimation(string file)
+        {
+            Interop.Elementary.elm_animation_view_file_set(Handle, file, null);
+        }
+
+        /// <summary>
+        /// Play animation one time instantly when it's available.
+        /// <remarks>
+        /// If current keyframe is on a certain position by playing reverse, this will play forward from there.
+        /// Play request will be ignored if animation source is not set yet or animation is paused state or it's already on playing.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public void Play()
+        {
+            Interop.Elementary.elm_animation_view_play(Handle);
+        }
+
+        /// <summary>
+        /// Play animation one time instantly when it's available.
+        /// <remarks>
+        /// If current keyframe is on a certain position by playing reverse and isReverse is ture, this will play forward from there.
+        /// And if current keyframe is on a certain position by playing and isReverse is false, this will play backward from there.
+        /// Play request will be ignored if animation source is not set yet or animation is paused state or it's already on playing.
+        /// </remarks>
+        /// </summary>
+        /// <param name="isReverse">Whether the animation play or reverse play.</param>
+        /// <since_tizen> preview </since_tizen>
+        public void Play(bool isReverse)
+        {
+            if (!isReverse)
+            {
+                Interop.Elementary.elm_animation_view_play(Handle);
+            }
+            else
+            {
+                Interop.Elementary.elm_animation_view_play_back(Handle);
+            }
+        }
+
+        /// <summary>
+        /// Pause current animation instantly.
+        /// <remarks>
+        /// Once animation is paused, animation view must get resume to play continue again.
+        /// Animation must be on playing or playing back status.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public void Pause()
+        {
+            Interop.Elementary.elm_animation_view_pause(Handle);
+        }
+
+        /// <summary>
+        /// Resume paused animation to continue animation.
+        /// </summary>
+        /// <remarks>
+        /// This resume must be called on animation paused status.
+        /// </remarks>
+        /// <since_tizen> preview </since_tizen>
+        public void Resume()
+        {
+            Interop.Elementary.elm_animation_view_resume(Handle);
+        }
+
+        /// <summary>
+        /// Stop playing animation.
+        /// <remarks>
+        /// Stop animation instatly regardless of it's status and reset to
+        /// show first frame of animation.Even though current animation is paused,
+        /// the animation status will be stopped.
+        /// </remarks>
+        /// </summary>
+        /// <since_tizen> preview </since_tizen>
+        public void Stop()
+        {
+            Interop.Elementary.elm_animation_view_stop(Handle);
+        }
+
+        /// <summary>
+        /// Creates a AnimationView handle.
+        /// </summary>
+        /// <param name="parent">Parent EvasObject.</param>
+        /// <returns>Handle IntPtr.</returns>
+        /// <since_tizen> preview </since_tizen>
+        protected override IntPtr CreateHandle(EvasObject parent)
+        {
+            return Interop.Elementary.elm_animation_view_add(parent.Handle);
+        }
+    }
+}
diff --git a/src/ElmSharp/Interop/Interop.Elementary.AnimationView.cs b/src/ElmSharp/Interop/Interop.Elementary.AnimationView.cs
new file mode 100644 (file)
index 0000000..5afcb64
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+    internal static partial class Elementary
+    {
+        [DllImport(Libraries.Elementary)]
+        internal static extern IntPtr elm_animation_view_add(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_auto_play_get(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_animation_view_auto_play_set(IntPtr obj, bool auto_play);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_auto_repeat_get(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_animation_view_auto_repeat_set(IntPtr obj, bool auto_repeat);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern double elm_animation_view_speed_get(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_speed_set(IntPtr obj, double speed);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern double elm_animation_view_duration_time_get(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern double elm_animation_view_keyframe_get(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern void elm_animation_view_keyframe_set(IntPtr obj, double keyframe);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_play(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_play_back(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_pause(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_resume(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_stop(IntPtr obj);
+
+        [DllImport(Libraries.Elementary)]
+        internal static extern bool elm_animation_view_file_set(IntPtr obj, string file, string key);
+    }
+}
diff --git a/test/ElmSharp.Test/TC/AnimationViewTest1.cs b/test/ElmSharp.Test/TC/AnimationViewTest1.cs
new file mode 100644 (file)
index 0000000..4236847
--- /dev/null
@@ -0,0 +1,373 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using ElmSharp;
+
+namespace ElmSharp.Test
+{
+    class AnimationViewTest1 : TestCaseBase
+    {
+        public override string TestName => "AnimationViewTest1";
+        public override string TestDescription => "To test basic operation of AnimationView";
+
+        private enum AnimationState
+        {
+            NotReady,
+            Play,
+            ReversePlay,
+            Pause,
+            Stop,
+        }
+
+        private AnimationState _state;
+        private bool _isPlayingReverse;
+
+        void UpdateAnimationViewStateLabel(Label _stateLabel)
+        {
+            if (_state == AnimationState.NotReady)
+            {
+                _stateLabel.Text = "<font_size=32>State = Not Ready</font_size>";
+            }
+            else if (_state == AnimationState.Play)
+            {
+                _stateLabel.Text = "<font_size=32>State = Playing</font_size>";
+            }
+            else if (_state == AnimationState.ReversePlay)
+            {
+                _stateLabel.Text = "<font_size=32>State = Reverse Playing</font_size>";
+            }
+            else if (_state == AnimationState.Pause)
+            {
+                _stateLabel.Text = "<font_size=32>State = Paused</font_size>";
+            }
+            else if (_state == AnimationState.Stop)
+            {
+                _stateLabel.Text = "<font_size=32>State = Stopped</font_size>";
+            }
+        }
+
+        public override void Run(Window window)
+        {
+            Conformant conformant = new Conformant(window);
+            conformant.Show();
+
+            Naviframe navi = new Naviframe(conformant)
+            {
+                PreserveContentOnPop = true,
+                DefaultBackButtonEnabled = true
+            };
+            navi.Show();
+            conformant.SetContent(navi);
+
+            Layout layout = new Layout(conformant)
+            {
+                WeightX = 1,
+                WeightY = 1,
+                AlignmentX = -1,
+                AlignmentY = -1,
+            };
+            layout.SetTheme("layout", "application", "default");
+            layout.Show();
+
+            Background bg = new Background(layout)
+            {
+                WeightX = 1,
+                WeightY = 1,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Color = Color.Gray,
+            };
+            bg.Show();
+            layout.SetPartContent("elm.swallow.bg", bg);
+
+            Box box = new Box(conformant)
+            {
+                WeightX = 1,
+                WeightY = 1,
+                AlignmentX = -1,
+                AlignmentY = -1,
+            };
+            box.Show();
+            box.SetPadding(5, 5);
+            layout.SetPartContent("elm.swallow.content", box);
+
+            Label label = new Label(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = 0.5,
+                AlignmentY = 0,
+            };
+            label.Show();
+            box.PackEnd(label);
+
+            AnimationView aniview = new AnimationView(box)
+            {
+                WeightX = 1,
+                WeightY = 1,
+                AlignmentX = -1,
+                AlignmentY = -1,
+            };
+            aniview.SetAnimation(Path.Combine(TestRunner.ResourceDir, "a_mountain.json"));
+            aniview.Show();
+            box.PackEnd(aniview);
+
+            Label label2 = new Label(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = 1.0,
+                AlignmentY = 0.5,
+                Text = "Duration : " + (Math.Round(Convert.ToDouble(aniview.DurationTime), 2)).ToString(),
+            };
+            label2.Show();
+            box.PackEnd(label2);
+
+            Box box2 = new Box(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = 1,
+                IsHorizontal = true,
+            };
+            box2.Show();
+            box.PackEnd(box2);
+
+            Check check = new Check(box2)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Loop",
+            };
+            check.Show();
+            box2.PackEnd(check);
+
+            check.StateChanged += (s, e) =>
+            {
+                aniview.AutoRepeat = !aniview.AutoRepeat;
+            };
+
+            Check check2 = new Check(box2)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Speed: 0.25x",
+            };
+            check2.Show();
+            box2.PackEnd(check2);
+
+            check2.StateChanged += (s, e) =>
+            {
+                if (check2.IsChecked)
+                {
+                    aniview.Speed = 0.25;
+                }
+                else
+                {
+                    aniview.Speed = 1.0;
+                }
+            };
+
+            Slider slider = new Slider(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                IsIndicatorVisible = true,
+                IndicatorFormat = "%1.1f",
+                Minimum = 0,
+                Maximum = 1,
+            };
+            slider.Show();
+            box.PackEnd(slider);
+
+            slider.ValueChanged += (s, e) =>
+            {
+                aniview.KeyFrame = slider.Value;
+            };
+
+            Box box3 = new Box(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = 1,
+                IsHorizontal = true,
+            };
+            box3.Show();
+            box.PackEnd(box3);
+
+            Button btn1 = new Button(box3)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Play",
+            };
+            btn1.Show();
+            box3.PackEnd(btn1);
+
+            btn1.Clicked += (s, e) =>
+            {
+                _isPlayingReverse = false;
+                if (_state == AnimationState.ReversePlay)
+                {
+                    UpdateAnimationViewStateLabel(label);
+                }
+                aniview.Play();
+            };
+
+            Button btn2 = new Button(box3)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Reverse",
+            };
+            btn2.Show();
+            box3.PackEnd(btn2);
+
+            btn2.Clicked += (s, e) =>
+            {
+                _isPlayingReverse = true;
+                if (_state == AnimationState.Play)
+                {
+                    UpdateAnimationViewStateLabel(label);
+                }
+                aniview.Play(true);
+            };
+
+            Button btn3 = new Button(box3)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Stop",
+            };
+            btn3.Show();
+            box3.PackEnd(btn3);
+
+            btn3.Clicked += (s, e) =>
+            {
+                aniview.Stop();
+            };
+
+            Box box4 = new Box(box)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = 1,
+                IsHorizontal = true,
+            };
+            box4.Show();
+            box.PackEnd(box4);
+
+            Button btn4 = new Button(box3)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Pause",
+            };
+            btn4.Show();
+            box4.PackEnd(btn4);
+
+            btn4.Clicked += (s, e) =>
+            {
+                aniview.Pause();
+            };
+
+            Button btn5 = new Button(box3)
+            {
+                WeightX = 1,
+                WeightY = 0,
+                AlignmentX = -1,
+                AlignmentY = -1,
+                Text = "Resume",
+            };
+            btn5.Show();
+            box4.PackEnd(btn5);
+
+            btn5.Clicked += (s, e) =>
+            {
+                aniview.Resume();
+            };
+
+            aniview.Started += (s, e) =>
+            {
+                if (!_isPlayingReverse)
+                {
+                    _state = AnimationState.Play;
+                }
+                else
+                {
+                    _state = AnimationState.ReversePlay;
+                }
+                UpdateAnimationViewStateLabel(label);
+            };
+
+            aniview.Stopped += (s, e) =>
+            {
+                _state = AnimationState.Stop;
+                UpdateAnimationViewStateLabel(label);
+
+                slider.Value = 0;
+            };
+
+            aniview.Paused += (s, e) =>
+            {
+                _state = AnimationState.Pause;
+                UpdateAnimationViewStateLabel(label);
+            };
+
+            aniview.Resumed += (s, e) =>
+            {
+                if (!_isPlayingReverse)
+                {
+                    _state = AnimationState.Play;
+                }
+                else
+                {
+                    _state = AnimationState.ReversePlay;
+                }
+                UpdateAnimationViewStateLabel(label);
+            };
+
+            aniview.Updated += (s, e) =>
+            {
+                slider.Value = aniview.KeyFrame;
+            };
+
+            _state = AnimationState.NotReady;
+            UpdateAnimationViewStateLabel(label);
+
+            navi.Push(layout, "AnimationView Test");
+        }
+    }
+}
diff --git a/test/ElmSharp.Test/res/a_mountain.json b/test/ElmSharp.Test/res/a_mountain.json
new file mode 100644 (file)
index 0000000..65fed4b
--- /dev/null
@@ -0,0 +1 @@
+{"v":"5.1.15","fr":25,"ip":0,"op":89,"w":300,"h":300,"nm":"MountainCircle","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"CloudA contornos","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":25,"s":[65,155,0],"e":[136,155,0],"to":[11.8333330154419,0,0],"ti":[-11.8333330154419,0,0]},{"t":88}],"ix":2},"a":{"a":0,"k":[21.25,16.25,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":10,"s":[100,0,100],"e":[100,110,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":17,"s":[100,110,100],"e":[100,90,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":22,"s":[100,90,100],"e":[100,100,100]},{"t":24}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.418],[4.418,0],[0,4.418],[-4.418,0]],"o":[[0,4.418],[-4.418,0],[0,-4.418],[4.418,0]],"v":[[8,0],[0,8],[-8,0],[0,-8]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-78,149],[222,149],[222,-151],[-78,-151]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-78,-151],[222,-151],[222,149],[-78,149]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.929000016755,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.25,12.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.627],[6.627,0],[0,6.627],[-6.627,0]],"o":[[0,6.627],[-6.627,0],[0,-6.627],[6.627,0]],"v":[[12,0],[0,12],[-12,0],[0,-12]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-72,141],[228,141],[228,-159],[-72,-159]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-72,-159],[228,-159],[228,141],[-72,141]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.929000016755,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.25,20.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.075],[6.075,0],[0,6.075],[-6.075,0]],"o":[[0,6.075],[-6.075,0],[0,-6.075],[6.075,0]],"v":[[11,0],[0,11],[-11,0],[0,-11]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-65,150],[235,150],[235,-150],[-65,-150]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-65,-150],[235,-150],[235,150],[-65,150]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.929000016755,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.25,11.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 3","np":4,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.18],[7.18,0],[0,7.18],[-7.18,0]],"o":[[0,7.18],[-7.18,0],[0,-7.18],[7.18,0]],"v":[[13,0],[0,13],[-13,0],[0,-13]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57,145],[243,145],[243,-155],[-57,-155]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-57,-155],[243,-155],[243,145],[-57,145]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.929000016755,0.929000016755,0.929000016755,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[13.25,16.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 4","np":4,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Circle 4","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[137.25,137.25,0],"ix":1},"s":{"a":0,"k":[97.333,97.333,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-75.663],[75.663,0],[0,75.663],[-75.663,0]],"o":[[0,75.663],[-75.663,0],[0,-75.663],[75.663,0]],"v":[[137,0],[0,137],[-137,0],[0,-137]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,150],[150,150],[150,-150],[-150,-150]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,-150],[150,-150],[150,150],[-150,150]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.626999978458,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.25,137.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Sun contornos","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.25,"y":1},"o":{"x":0.75,"y":0},"n":"0p25_1_0p75_0","t":11,"s":[182,-13,0],"e":[182,83,0],"to":[0,16,0],"ti":[0,-13.6666669845581,0]},{"i":{"x":0.25,"y":1},"o":{"x":0.75,"y":0},"n":"0p25_1_0p75_0","t":29,"s":[182,83,0],"e":[182,69,0],"to":[0,13.6666669845581,0],"ti":[0,2.33333325386047,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[20.25,20.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.05],[11.05,0],[0,0]],"o":[[0,11.05],[0,0],[11.05,0]],"v":[[10,0],[-10,20],[-10,-20]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-192,207],[108,207],[108,-93],[-192,-93]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-192,-93],[108,-93],[108,207],[-192,207]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952999997606,0.611999990426,0.071000005685,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.25,20.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-11.046],[11.046,0],[0,11.046],[-11.046,0]],"o":[[0,11.046],[-11.046,0],[0,-11.046],[11.046,0]],"v":[[20,0],[0,20],[-20,0],[0,-20]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-182,207],[118,207],[118,-93],[-182,-93]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-182,-93],[118,-93],[118,207],[-182,207]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.944999964097,0.769000004787,0.059000000299,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[20.25,20.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Circle 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[137.25,137.25,0],"ix":1},"s":{"a":0,"k":[97.333,97.333,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-75.663],[75.663,0],[0,75.663],[-75.663,0]],"o":[[0,75.663],[-75.663,0],[0,-75.663],[75.663,0]],"v":[[137,0],[0,137],[-137,0],[0,-137]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,150],[150,150],[150,-150],[-150,-150]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,-150],[150,-150],[150,150],[-150,150]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.626999978458,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.25,137.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"MountainF contornos","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,280.135,0],"ix":2},"a":{"a":0,"k":[113.88,151.115,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":0,"s":[100,0,100],"e":[100,110,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":7,"s":[100,110,100],"e":[100,90,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":12,"s":[100,90,100],"e":[100,100,100]},{"t":14}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[30.77,0],[14.62,5.52],[0,0],[-0.921,-0.9]],"o":[[-22.529,17.55],[-16.54,0],[0,0],[1.17,-0.03],[0,0]],"v":[[64.32,48.55],[-17.32,76.55],[-64.32,68.01],[-64.32,-76.52],[-61.039,-75.22]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-167.32,93.55],[132.68,93.55],[132.68,-206.45],[-167.32,-206.45]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-167.32,-206.45],[132.68,-206.45],[132.68,93.55],[-167.32,93.55]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.172999991623,0.243000000598,0.313999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.2,77.429],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[30.77,0],[23.34,38.3],[0,0],[-1.987,-1.96]],"o":[[-22.529,17.55],[-48.13,0],[0,0],[1.634,-2.264],[0,0]],"v":[[97.635,48.864],[15.995,76.865],[-97.635,12.995],[-34.613,-74.329],[-27.725,-74.905]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-134.005,93.865],[165.995,93.865],[165.995,-206.135],[-134.005,-206.135]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-134.005,-206.135],[165.995,-206.135],[165.995,93.865],[-134.005,93.865]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.204000001795,0.286000001197,0.368999974868,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.885,77.115],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"CloudB contornos","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":32,"s":[181.824,192.221,0],"e":[216.824,192.221,0],"to":[5.83333349227905,0,0],"ti":[-5.83333349227905,0,0]},{"t":88}],"ix":2},"a":{"a":0,"k":[14.733,8.87,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":17,"s":[100,0,100],"e":[100,110,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":24,"s":[100,110,100],"e":[100,90,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":29,"s":[100,90,100],"e":[100,100,100]},{"t":31}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.392,-3.246],[3.246,0.392],[-0.391,3.246],[-3.246,-0.392]],"o":[[-0.391,3.246],[-3.246,-0.391],[0.391,-3.246],[3.246,0.391]],"v":[[5.877,0.708],[-0.709,5.878],[-5.878,-0.709],[0.708,-5.878]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-190.038,106.159],[109.962,106.159],[109.962,-193.841],[-190.038,-193.841]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-190.038,-193.841],[109.962,-193.841],[109.962,106.159],[-190.038,106.159]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.948,10.49],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.245,-2.028],[2.029,0.245],[-0.244,2.029],[-2.029,-0.244]],"o":[[-0.244,2.029],[-2.029,-0.245],[0.244,-2.029],[2.029,0.245]],"v":[[3.673,0.442],[-0.443,3.673],[-3.674,-0.443],[0.443,-3.674]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-191.304,110.478],[108.696,110.478],[108.696,-189.522],[-191.304,-189.522]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-191.304,-189.522],[108.696,-189.522],[108.696,110.478],[-191.304,110.478]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.213,6.171],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 2","np":4,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.391,-3.246],[3.246,0.391],[-0.39,3.246],[-3.246,-0.391]],"o":[[-0.392,3.246],[-3.246,-0.392],[0.392,-3.246],[3.246,0.392]],"v":[[5.878,0.708],[-0.709,5.878],[-5.879,-0.708],[0.708,-5.878]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-173.609,105.902],[126.391,105.902],[126.391,-194.098],[-173.609,-194.098]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-173.609,-194.098],[126.391,-194.098],[126.391,105.902],[-173.609,105.902]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.518,10.746],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 3","np":4,"cix":2,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.538,-4.464],[4.464,0.539],[-0.538,4.464],[-4.464,-0.538]],"o":[[-0.537,4.463],[-4.463,-0.538],[0.538,-4.463],[4.463,0.538]],"v":[[8.082,0.974],[-0.975,8.081],[-8.082,-0.974],[0.975,-8.082]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-182.779,107.779],[117.221,107.779],[117.221,-192.221],[-182.779,-192.221]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-182.779,-192.221],[117.221,-192.221],[117.221,107.779],[-182.779,107.779]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.808000033509,0.808000033509,0.808000033509,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.689,8.87],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 4","np":4,"cix":2,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Circle 3","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[137.25,137.25,0],"ix":1},"s":{"a":0,"k":[96.667,96.667,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-75.663],[75.663,0],[0,75.663],[-75.663,0]],"o":[[0,75.663],[-75.663,0],[0,-75.663],[75.663,0]],"v":[[137,0],[0,137],[-137,0],[0,-137]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,150],[150,150],[150,-150],[-150,-150]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,-150],[150,-150],[150,150],[-150,150]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.626999978458,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.25,137.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"MountainB contornos","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[174.57,280.73,0],"ix":2},"a":{"a":0,"k":[0.249,105.98,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":0,"s":[100,0,100],"e":[100,110,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":7,"s":[100,110,100],"e":[100,90,100]},{"i":{"x":[0.25,0.25,0.667],"y":[1,1,1]},"o":{"x":[0.75,0.75,0.333],"y":[0,0,0]},"n":["0p25_1_0p75_0","0p25_1_0p75_0","0p667_1_0p333_0"],"t":12,"s":[100,90,100],"e":[100,100,100]},{"t":14}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[36.889,-6.891],[0,0]],"o":[[-19.399,30.58],[0,0],[0,0]],"v":[[43.91,-6.726],[-43.91,52.866],[8.52,-52.866]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-218.48,72.135],[81.52,72.135],[81.52,-227.865],[-218.48,-227.865]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-218.48,-227.865],[81.52,-227.865],[81.52,72.135],[-218.48,72.135]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.109999997008,0.165000002992,0.20800000359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.159,53.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2},"a":{"a":0,"k":[137.25,137.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-75.663],[75.663,0],[0,75.663],[-75.663,0]],"o":[[0,75.663],[-75.663,0],[0,-75.663],[75.663,0]],"v":[[137,0],[0,137],[-137,0],[0,-137]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,150],[150,150],[150,-150],[-150,-150]],"c":true},"ix":2},"nm":"Trazado 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-150,-150],[150,-150],[150,150],[-150,150]],"c":true},"ix":2},"nm":"Trazado 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":2,"cix":2,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Combinar trazados 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.081999999402,0.626999978458,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Relleno 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[137.25,137.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformar"}],"nm":"Grupo 1","np":4,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":89,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file