diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..104d4209143312457683bc94cc2dee0ca6f90d7f
--- /dev/null
+++ b/Assembly-CSharp-Editor.csproj
@@ -0,0 +1,725 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LangVersion>latest</LangVersion>
+    <CscToolPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Tools/RoslynScripts</CscToolPath>
+    <CscToolExe>unity_csc.sh</CscToolExe>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <RootNamespace></RootNamespace>
+    <ProjectGuid>{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <AssemblyName>Assembly-CSharp-Editor</AssemblyName>
+    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <BaseDirectory>.</BaseDirectory>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Temp\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_LINUX;PLATFORM_STANDALONE;UNITY_STANDALONE_LINUX;UNITY_STANDALONE;UNITY_STANDALONE_LINUX_API;PLAYERPREFS_SERIALIZE_TO_XML;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_SPATIALTRACKING;ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_LINUX;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>0169</NoWarn>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Temp\bin\Release\</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>0169</NoWarn>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>
+    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="UnityEngine">
+      <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>
+    </Reference>
+    <Reference Include="UnityEditor">
+      <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineBasicMultiChannelPerlinEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineBlenderSettingsEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineBlendListCameraEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineBrainEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineClearShotEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineColliderEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineComposerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineConfinerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineExternalCameraEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineFramingTransposerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineFreeLookEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineGroupComposerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineHardLockToTargetEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineHardLookAtEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineMixingCameraEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineOrbitalTransposerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachinePathEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachinePOVEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineScreenComposerGuides.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineSmoothPathEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineStateDrivenCameraEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineTargetGroupEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineTrackedDollyEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineTransposerEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineVirtualCameraBaseEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Editors\CinemachineVirtualCameraEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Menus\CinemachineMenu.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\PropertyDrawers\CinemachineBlendDefinitionPropertyDrawer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\PropertyDrawers\CinemachineTagFieldPropertyDrawer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\PropertyDrawers\GetSetDrawer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\PropertyDrawers\LensSettingsPropertyDrawer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\PropertyDrawers\MinDrawer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Utility\BaseEditor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Utility\EmbeddedAssetHelpers.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Utility\SaveDuringPlay.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Utility\ScriptableObjectUtility.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Utility\SerializedPropertyHelper.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Windows\AboutWindow.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Windows\CinemachineColliderPrefs.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Editor\Windows\CinemachineSettings.cs" />
+     <Compile Include="Assets\Cinemachine\PostFX\Editor\CinemachinePostProcessingEditor.cs" />
+     <Compile Include="Assets\Cinemachine\PostFX\Editor\PostFXAutoImport.cs" />
+     <Compile Include="Assets\Cinemachine\Timeline\Editor\CinemachineShotEditor.cs" />
+ <Reference Include="Unity.Timeline.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.TextMeshPro.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.PackageManagerUI.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Timeline">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.CollabProxy.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.TextMeshPro">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.DataPrivacy">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ARModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AccessibilityModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AnimationModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AssetBundleModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AudioModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClothModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClusterInputModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClusterRendererModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.CoreModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.CrashReportingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.DirectorModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.FileSystemHttpModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.GameCenterModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.GridModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.HotReloadModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.IMGUIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ImageConversionModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.InputModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.JSONSerializeModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.LocalizationModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ParticleSystemModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.PerformanceReportingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.PhysicsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.Physics2DModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ProfilerModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ScreenCaptureModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SharedInternalsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SpriteMaskModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SpriteShapeModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.StreamingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.StyleSheetsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SubstanceModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TLSModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TerrainModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TerrainPhysicsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TextCoreModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TextRenderingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TilemapModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UIElementsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UNETModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UmbraModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityAnalyticsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityConnectModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityTestProtocolModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestAssetBundleModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestAudioModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestTextureModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestWWWModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VFXModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VRModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VehiclesModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VideoModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.WindModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.XRModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Locator">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UI">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.UI">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.TestRunner">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TestRunner">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit.framework">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.VR">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.Graphs">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.WindowsStandalone.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.WebGL.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.OSXStandalone.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.LinuxStandalone.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.Android.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.iOS.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.Advertisements">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.StandardEvents">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.Tracker">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.Purchasing">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.iOS.Extensions.Xcode">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEditor.iOS.Extensions.Common">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="mscorlib">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll</HintPath>
+ </Reference>
+ <Reference Include="System">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Core">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.Linq">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Numerics">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Numerics.Vectors">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.CSharp">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Win32.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.AppContext">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.Concurrent">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.NonGeneric">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.Specialized">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.Annotations">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.EventBasedAsync">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.TypeConverter">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Console">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data.Common">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Contracts">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Debug">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.FileVersionInfo">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Process">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.StackTrace">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.TextWriterTraceListener">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Tools">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.TraceSource">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Drawing.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Dynamic.Runtime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization.Calendars">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Compression.ZipFile">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.DriveInfo">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.Watcher">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.IsolatedStorage">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.MemoryMappedFiles">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Pipes">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.UnmanagedMemoryStream">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Expressions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Parallel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Queryable">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http.Rtc">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.NameResolution">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.NetworkInformation">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Ping">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Requests">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Security">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Sockets">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebHeaderCollection">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebSockets.Client">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebSockets">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ObjectModel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Emit.ILGeneration">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Emit.Lightweight">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Emit">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.Reader">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.ResourceManager">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.Writer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.CompilerServices.VisualC">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Handles">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices.RuntimeInformation">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices.WindowsRuntime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Numerics">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Formatters">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Json">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Xml">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Claims">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Algorithms">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Csp">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Encoding">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.X509Certificates">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Principal">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.SecureString">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.Duplex">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.Http">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.NetTcp">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.Security">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.Encoding.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.Encoding">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.RegularExpressions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Overlapped">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Tasks.Parallel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Tasks">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Thread">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.ThreadPool">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Timer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ValueTuple">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.ReaderWriter">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XPath.XDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XPath">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XmlDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XmlSerializer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll</HintPath>
+ </Reference>
+ <Reference Include="netstandard">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityScript">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityScript.Lang">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll</HintPath>
+ </Reference>
+ <Reference Include="Boo.Lang">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll</HintPath>
+ </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="Assembly-CSharp.csproj">
+      <Project>{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}</Project>
+      <Name>Assembly-CSharp</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..46018a774e586ad65aef6ee4b3da93f9649e14e7
--- /dev/null
+++ b/Assembly-CSharp.csproj
@@ -0,0 +1,680 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LangVersion>latest</LangVersion>
+    <CscToolPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Tools/RoslynScripts</CscToolPath>
+    <CscToolExe>unity_csc.sh</CscToolExe>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <RootNamespace></RootNamespace>
+    <ProjectGuid>{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <AssemblyName>Assembly-CSharp</AssemblyName>
+    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <BaseDirectory>.</BaseDirectory>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Temp\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;UNITY_2019_1_0;UNITY_2019_1;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2019_1_OR_NEWER;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_LINUX;PLATFORM_STANDALONE;UNITY_STANDALONE_LINUX;UNITY_STANDALONE;UNITY_STANDALONE_LINUX_API;PLAYERPREFS_SERIALIZE_TO_XML;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_SCRIPTING_GC_WBARRIERS;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_SPATIALTRACKING;ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_STANDARD_2_0;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_LINUX;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>0169</NoWarn>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Temp\bin\Release\</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>0169</NoWarn>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup>
+    <NoConfig>true</NoConfig>
+    <NoStdLib>true</NoStdLib>
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+    <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>
+    <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="UnityEngine">
+      <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>
+    </Reference>
+    <Reference Include="UnityEditor">
+      <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineBlendListCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineBrain.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineClearShot.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineCollider.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineConfiner.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineDollyCart.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineExternalCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineFollowZoom.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineFreeLook.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineMixingCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachinePath.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachinePipeline.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineSmoother.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineSmoothPath.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineStateDrivenCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineTargetGroup.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Behaviours\CinemachineVirtualCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineBasicMultiChannelPerlin.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineComposer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineFramingTransposer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineGroupComposer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineHardLockToTarget.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineHardLookAt.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineOrbitalTransposer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachinePOV.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineSameAsFollowObject.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineTrackedDolly.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Components\CinemachineTransposer.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\AxisState.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CameraState.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineBlend.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineBlenderSettings.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineComponentBase.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineCore.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineDebugLogger.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineExtension.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachinePathBase.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachinePropertyAttribute.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\CinemachineVirtualCameraBase.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\GaussianFilter.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\ICinemachineCamera.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\ICinemachineComponent.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\LensSettings.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\NoiseSettings.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\Predictor.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\ReflectionHelpers.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\SplineHelpers.cs" />
+     <Compile Include="Assets\Cinemachine\Base\Runtime\Core\UnityVectorExtensions.cs" />
+     <Compile Include="Assets\Cinemachine\PostFX\CinemachinePostFX.cs" />
+     <Compile Include="Assets\Cinemachine\PostFX\CinemachinePostProcessing.cs" />
+     <Compile Include="Assets\Cinemachine\Timeline\CinemachineMixer.cs" />
+     <Compile Include="Assets\Cinemachine\Timeline\CinemachineShot.cs" />
+     <Compile Include="Assets\Cinemachine\Timeline\CinemachineTrack.cs" />
+     <Compile Include="Assets\Scripts\MovementScript.cs" />
+     <None Include="Assets\Cinemachine\ReleaseNotes.txt" />
+ <Reference Include="Unity.Timeline.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Timeline.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.TextMeshPro.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.PackageManagerUI.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Timeline">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Timeline.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.CollabProxy.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.TextMeshPro">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.TextMeshPro.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.DataPrivacy">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ARModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AccessibilityModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AnimationModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AssetBundleModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.AudioModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClothModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClusterInputModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ClusterRendererModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.CoreModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.CrashReportingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.DirectorModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.FileSystemHttpModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.GameCenterModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.GridModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.HotReloadModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.IMGUIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ImageConversionModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.InputModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.JSONSerializeModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.LocalizationModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ParticleSystemModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.PerformanceReportingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.PhysicsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.Physics2DModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ProfilerModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.ScreenCaptureModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SharedInternalsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SpriteMaskModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SpriteShapeModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.StreamingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.StyleSheetsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.SubstanceModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TLSModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TerrainModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TerrainPhysicsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TextCoreModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TextRenderingModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TilemapModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UIModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UIElementsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UNETModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UmbraModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityAnalyticsModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityConnectModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityTestProtocolModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestAssetBundleModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestAudioModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestTextureModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UnityWebRequestWWWModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VFXModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VRModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VehiclesModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.VideoModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.WindModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.XRModule">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Locator">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.UI">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>
+ </Reference>
+ <Reference Include="UnityEngine.TestRunner">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit.framework">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.StandardEvents">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.Editor">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll</HintPath>
+ </Reference>
+ <Reference Include="Unity.Analytics.Tracker">
+ <HintPath>/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll</HintPath>
+ </Reference>
+ <Reference Include="netstandard">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Win32.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.AppContext">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.Concurrent">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.NonGeneric">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections.Specialized">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Collections">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.EventBasedAsync">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.TypeConverter">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Console">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data.Common">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Contracts">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Debug">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.FileVersionInfo">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Process">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.StackTrace">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.TextWriterTraceListener">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Tools">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.TraceSource">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Diagnostics.Tracing">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Drawing.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Dynamic.Runtime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization.Calendars">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Globalization">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Compression.ZipFile">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Compression">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.DriveInfo">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem.Watcher">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.FileSystem">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.IsolatedStorage">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.MemoryMappedFiles">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Pipes">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.UnmanagedMemoryStream">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Expressions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Parallel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq.Queryable">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Linq">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.NameResolution">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.NetworkInformation">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Ping">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Requests">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Security">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Sockets">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebHeaderCollection">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebSockets.Client">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.WebSockets">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ObjectModel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Reflection">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.Reader">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.ResourceManager">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Resources.Writer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.CompilerServices.VisualC">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Handles">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices.RuntimeInformation">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Numerics">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Formatters">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Json">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization.Xml">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Claims">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Algorithms">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Csp">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Encoding">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Primitives">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.X509Certificates">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.Principal">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Security.SecureString">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.Encoding.Extensions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.Encoding">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Text.RegularExpressions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Overlapped">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Tasks.Parallel">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Tasks">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Thread">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.ThreadPool">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading.Timer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Threading">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ValueTuple">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.ReaderWriter">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XPath.XDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XPath">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XmlDocument">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.XmlSerializer">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Numerics.Vectors">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices.WindowsRuntime">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ComponentModel.Composition">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Core">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Drawing">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll</HintPath>
+ </Reference>
+ <Reference Include="System.IO.Compression.FileSystem">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Numerics">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.ServiceModel.Web">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Transactions">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Windows">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.Linq">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.Serialization">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll</HintPath>
+ </Reference>
+ <Reference Include="System">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll</HintPath>
+ </Reference>
+ <Reference Include="mscorlib">
+ <HintPath>/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll</HintPath>
+ </Reference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
diff --git a/Assets/Cinemachine.meta b/Assets/Cinemachine.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1874bf5727abeecce5863d2f6e6182f4b07b1a23
--- /dev/null
+++ b/Assets/Cinemachine.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44e81fca109f0dc5eb73f2f03c64911c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base.meta b/Assets/Cinemachine/Base.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d8bf5a946027a9dc9a2e48aab9d0688df4528582
--- /dev/null
+++ b/Assets/Cinemachine/Base.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8786806e37330e349b5885f2972851b6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor.meta b/Assets/Cinemachine/Base/Editor.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a5680e86edcfd8346e742d91a896db506d6e3c01
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: d8623b6a09cb5ab4ea2c51347a3a074c
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors.meta b/Assets/Cinemachine/Base/Editor/Editors.meta
new file mode 100644
index 0000000000000000000000000000000000000000..de858b6dd26d30cfba04f3ebfa16dd4462a78b73
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 6b46e8ffe448f084ab12938cb774d063
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..411017407e43fe41895ac59ececc6234c8947397
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs
@@ -0,0 +1,156 @@
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineBasicMultiChannelPerlin))]
+    internal sealed class CinemachineBasicMultiChannelPerlinEditor 
+        : BaseEditor<CinemachineBasicMultiChannelPerlin>
+    {
+        List<NoiseSettings> mNoisePresets;
+        string[] mNoisePresetNames;
+        SerializedProperty m_Profile;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_NoiseProfile));
+            return excluded;
+        }
+
+        private void OnEnable()
+        {
+            m_Profile = FindProperty(x => x.m_NoiseProfile);
+            RebuildProfileList();
+        }
+
+        void RebuildProfileList()
+        {
+            mNoisePresets = FindAssetsByType<NoiseSettings>();
+#if UNITY_2018_1_OR_NEWER
+            if (ScriptableObjectUtility.CinemachineIsPackage)
+                AddAssetsFromDirectory(
+                    mNoisePresets, 
+                    ScriptableObjectUtility.CinemachineInstallAssetPath + "/Presets/Noise");
+#endif
+            mNoisePresets.Insert(0, null);
+            List<string> presetNameList = new List<string>();
+            foreach (var n in mNoisePresets)
+                presetNameList.Add((n == null) ? "(none)" : n.name);
+            mNoisePresetNames = presetNameList.ToArray();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+
+            if (m_Profile.objectReferenceValue == null)
+                EditorGUILayout.HelpBox(
+                    "A Noise Profile is required.  You may choose from among the NoiseSettings assets defined in the project.",
+                    MessageType.Warning);
+
+            Rect rect = EditorGUILayout.GetControlRect(true);
+            float iconSize = rect.height + 4;
+            rect.width -= iconSize;
+            int preset = mNoisePresets.IndexOf((NoiseSettings)m_Profile.objectReferenceValue);
+            preset = EditorGUI.Popup(rect, "Noise Profile", preset, mNoisePresetNames);
+            NoiseSettings newProfile = preset < 0 ? null : mNoisePresets[preset];
+            if ((NoiseSettings)m_Profile.objectReferenceValue != newProfile)
+            {
+                m_Profile.objectReferenceValue = newProfile;
+                serializedObject.ApplyModifiedProperties();
+            }
+            rect.x += rect.width; rect.width = iconSize; rect.height = iconSize;
+            if (GUI.Button(rect, EditorGUIUtility.IconContent("_Popup"), GUI.skin.label))
+            {
+                GenericMenu menu = new GenericMenu();
+                if (m_Profile.objectReferenceValue != null)
+                {
+                    menu.AddItem(new GUIContent("Edit"), false, () => Selection.activeObject = m_Profile.objectReferenceValue);
+                    menu.AddItem(new GUIContent("Clone"), false, () => 
+                        {
+                            m_Profile.objectReferenceValue = CreateProfile(
+                                (NoiseSettings)m_Profile.objectReferenceValue);
+                            RebuildProfileList();
+                            serializedObject.ApplyModifiedProperties();
+                        });
+                    menu.AddItem(new GUIContent("Locate"), false, () => EditorGUIUtility.PingObject(m_Profile.objectReferenceValue));
+                }
+                menu.AddItem(new GUIContent("New"), false, () => 
+                    { 
+                        //Undo.RecordObject(Target, "Change Noise Profile");
+                        m_Profile.objectReferenceValue = CreateProfile(null);
+                        RebuildProfileList();
+                        serializedObject.ApplyModifiedProperties();
+                    });
+                menu.ShowAsContext();
+            }
+
+            DrawRemainingPropertiesInInspector();
+        }
+
+        public static List<T> FindAssetsByType<T>() where T : UnityEngine.Object
+        {
+            List<T> assets = new List<T>();
+            string[] guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(T)));
+            for (int i = 0; i < guids.Length; i++)
+            {
+                string assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);
+                T asset = AssetDatabase.LoadAssetAtPath<T>(assetPath);
+                if (asset != null)
+                {
+                    assets.Add(asset);
+                }
+            }
+            return assets;
+        }
+
+        static void AddAssetsFromDirectory<T>(List<T> assets, string path) where T : UnityEngine.Object
+        {
+            try 
+            {
+                var info = new DirectoryInfo(path);
+                var fileInfo = info.GetFiles();
+                foreach (var file in fileInfo)
+                {
+                    string name = path + "/" + file.Name;
+                    T a = AssetDatabase.LoadAssetAtPath(name, typeof(T)) as T;
+                    if (a != null)
+                        assets.Add(a);
+                }
+            }
+            catch 
+            {
+            }
+        }
+
+        NoiseSettings CreateProfile(NoiseSettings copyFrom)
+        {
+            var path = string.Empty;
+            var scene = Target.gameObject.scene;
+            if (string.IsNullOrEmpty(scene.path))
+                path = "Assets/";
+            else
+            {
+                var scenePath = Path.GetDirectoryName(scene.path);
+                var extPath = scene.name + "_Profiles";
+                var profilePath = scenePath + "/" + extPath;
+                if (!AssetDatabase.IsValidFolder(profilePath))
+                    AssetDatabase.CreateFolder(scenePath, extPath);
+                path = profilePath + "/";
+            }
+
+            var profile = ScriptableObject.CreateInstance<NoiseSettings>();
+            if (copyFrom != null)
+                profile.CopyFrom(copyFrom);
+            path += Target.VirtualCamera.Name + " Noise.asset";
+            path = AssetDatabase.GenerateUniqueAssetPath(path);
+            AssetDatabase.CreateAsset(profile, path);
+            AssetDatabase.SaveAssets();
+            AssetDatabase.Refresh();
+            return profile;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c744f95189ed7cad44bd9d55a73dc90289d20111
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ee42f1964a0e8224c90be81905946699
+timeCreated: 1484091313
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6a976ac789241fa4bfe22283fed0c3e3844c4da3
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs
@@ -0,0 +1,206 @@
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineBlendListCamera))]
+    internal sealed class CinemachineBlendListCameraEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineBlendListCamera>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_Instructions));
+            return excluded;
+        }
+
+        private UnityEditorInternal.ReorderableList mChildList;
+        private UnityEditorInternal.ReorderableList mInstructionList;
+
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            mChildList = null;
+            mInstructionList = null;
+        }
+
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mInstructionList == null)
+                SetupInstructionList();
+            if (mChildList == null)
+                SetupChildList();
+
+            // Ordinary properties
+            DrawHeaderInInspector();
+            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
+            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
+            DrawRemainingPropertiesInInspector();
+
+            // Instructions
+            UpdateCameraCandidates();
+            EditorGUI.BeginChangeCheck();
+            EditorGUILayout.Separator();
+            mInstructionList.DoLayoutList();
+
+            // vcam children
+            EditorGUILayout.Separator();
+            mChildList.DoLayoutList();
+            if (EditorGUI.EndChangeCheck())
+            {
+                serializedObject.ApplyModifiedProperties();
+                Target.ValidateInstructions();
+            }
+
+            // Extensions
+            DrawExtensionsWidgetInInspector();
+        }
+
+        private string[] mCameraCandidates;
+        private Dictionary<CinemachineVirtualCameraBase, int> mCameraIndexLookup;
+        private void UpdateCameraCandidates()
+        {
+            List<string> vcams = new List<string>();
+            mCameraIndexLookup = new Dictionary<CinemachineVirtualCameraBase, int>();
+            vcams.Add("(none)");
+            CinemachineVirtualCameraBase[] children = Target.ChildCameras;
+            foreach (var c in children)
+            {
+                mCameraIndexLookup[c] = vcams.Count;
+                vcams.Add(c.Name);
+            }
+            mCameraCandidates = vcams.ToArray();
+        }
+
+        private int GetCameraIndex(Object obj)
+        {
+            if (obj == null || mCameraIndexLookup == null)
+                return 0;
+            CinemachineVirtualCameraBase vcam = obj as CinemachineVirtualCameraBase;
+            if (vcam == null)
+                return 0;
+            if (!mCameraIndexLookup.ContainsKey(vcam))
+                return 0;
+            return mCameraIndexLookup[vcam];
+        }
+
+        void SetupInstructionList()
+        {
+            mInstructionList = new UnityEditorInternal.ReorderableList(serializedObject,
+                    serializedObject.FindProperty(() => Target.m_Instructions),
+                    true, true, true, true);
+
+            // Needed for accessing field names as strings
+            CinemachineBlendListCamera.Instruction def = new CinemachineBlendListCamera.Instruction();
+
+            float vSpace = 2;
+            float hSpace = 3;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+            float hBigSpace = EditorGUIUtility.singleLineHeight * 2 / 3;
+            mInstructionList.drawHeaderCallback = (Rect rect) =>
+                {
+                    float sharedWidth = rect.width - EditorGUIUtility.singleLineHeight 
+                        - floatFieldWidth - hSpace - hBigSpace;
+                    rect.x += EditorGUIUtility.singleLineHeight; rect.width = sharedWidth / 2; 
+                    EditorGUI.LabelField(rect, "Child");
+
+                    rect.x += rect.width + hSpace; 
+                    EditorGUI.LabelField(rect, "Blend in");
+
+                    rect.x += rect.width + hBigSpace; rect.width = floatFieldWidth;
+                    EditorGUI.LabelField(rect, "Hold");
+                };
+
+            mInstructionList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    SerializedProperty instProp = mInstructionList.serializedProperty.GetArrayElementAtIndex(index);
+                    float sharedWidth = rect.width - floatFieldWidth - hSpace - hBigSpace;
+                    rect.y += vSpace; rect.height = EditorGUIUtility.singleLineHeight;
+
+                    rect.width = sharedWidth / 2; 
+                    SerializedProperty vcamSelProp = instProp.FindPropertyRelative(() => def.m_VirtualCamera);
+                    int currentVcam = GetCameraIndex(vcamSelProp.objectReferenceValue);
+                    int vcamSelection = EditorGUI.Popup(rect, currentVcam, mCameraCandidates);
+                    if (currentVcam != vcamSelection)
+                        vcamSelProp.objectReferenceValue = (vcamSelection == 0)
+                            ? null : Target.ChildCameras[vcamSelection - 1];
+
+                    rect.x += rect.width + hSpace; rect.width = sharedWidth / 2;
+                    if (index > 0)
+                        EditorGUI.PropertyField(rect, instProp.FindPropertyRelative(() => def.m_Blend), 
+                            GUIContent.none);
+
+                    if (index < mInstructionList.count - 1)
+                    {
+                        float oldWidth = EditorGUIUtility.labelWidth;
+                        EditorGUIUtility.labelWidth = hBigSpace; 
+
+                        rect.x += rect.width; rect.width = floatFieldWidth + hBigSpace;
+                        SerializedProperty holdProp = instProp.FindPropertyRelative(() => def.m_Hold);
+                        EditorGUI.PropertyField(rect, holdProp, new GUIContent(" ", holdProp.tooltip));
+                        holdProp.floatValue = Mathf.Max(holdProp.floatValue, 0);
+
+                        EditorGUIUtility.labelWidth = oldWidth; 
+                    }
+                };
+        }
+
+        void SetupChildList()
+        {
+            float vSpace = 2;
+            mChildList = new UnityEditorInternal.ReorderableList(serializedObject,
+                    serializedObject.FindProperty(() => Target.m_ChildCameras),
+                    true, true, true, true);
+
+            mChildList.drawHeaderCallback = (Rect rect) =>
+                {
+                    EditorGUI.LabelField(rect, "Virtual Camera Children");
+                };
+            mChildList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    rect.y += vSpace;
+                    Vector2 pos = rect.position;
+                    rect.height = EditorGUIUtility.singleLineHeight;
+                    SerializedProperty element
+                        = mChildList.serializedProperty.GetArrayElementAtIndex(index);
+                    EditorGUI.PropertyField(rect, element, GUIContent.none);
+                };
+            mChildList.onChangedCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    if (l.index < 0 || l.index >= l.serializedProperty.arraySize)
+                        return;
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        vcam.transform.SetSiblingIndex(l.index);
+                };
+            mChildList.onAddCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    var index = l.serializedProperty.arraySize;
+                    var vcam = CinemachineMenu.CreateDefaultVirtualCamera();
+                    Undo.SetTransformParent(vcam.transform, Target.transform, "");
+                    vcam.transform.SetSiblingIndex(index);
+                };
+            mChildList.onRemoveCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        Undo.DestroyObjectImmediate(vcam.gameObject);
+                };
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e00e0fb761616fea1f9328ebcf30bd5890d65b17
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 0181db608628b494d8ae50728e507ce1
+timeCreated: 1509479768
+licenseType: Store
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8eddd12c3216edfc5a79a1599842376c7947e79e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs
@@ -0,0 +1,161 @@
+using UnityEngine;
+using UnityEditor;
+using UnityEditorInternal;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineBlenderSettings))]
+    internal sealed class CinemachineBlenderSettingsEditor : BaseEditor<CinemachineBlenderSettings>
+    {
+        private ReorderableList mBlendList;
+
+        /// <summary>
+        /// Called when building the Camera popup menus, to get the domain of possible
+        /// cameras.  If no delegate is set, will find all top-level (non-slave)
+        /// virtual cameras in the scene.
+        /// </summary>
+        public GetAllVirtualCamerasDelegate GetAllVirtualCameras;
+        public delegate CinemachineVirtualCameraBase[] GetAllVirtualCamerasDelegate();
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_CustomBlends));
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mBlendList == null)
+                SetupBlendList();
+
+            DrawRemainingPropertiesInInspector();
+
+            UpdateCameraCandidates();
+            mBlendList.DoLayoutList();
+            serializedObject.ApplyModifiedProperties();
+        }
+
+        private string[] mCameraCandidates;
+        private Dictionary<string, int> mCameraIndexLookup;
+        private void UpdateCameraCandidates()
+        {
+            List<string> vcams = new List<string>();
+            mCameraIndexLookup = new Dictionary<string, int>();
+
+            CinemachineVirtualCameraBase[] candidates;
+            if (GetAllVirtualCameras != null)
+                candidates = GetAllVirtualCameras();
+            else
+            {
+                // Get all top-level (i.e. non-slave) virtual cameras
+                candidates = Resources.FindObjectsOfTypeAll(
+                        typeof(CinemachineVirtualCameraBase)) as CinemachineVirtualCameraBase[];
+
+                for (int i = 0; i < candidates.Length; ++i)
+                    if (candidates[i].ParentCamera != null)
+                        candidates[i] = null;
+            }
+            vcams.Add("(none)");
+            vcams.Add(CinemachineBlenderSettings.kBlendFromAnyCameraLabel);
+            foreach (CinemachineVirtualCameraBase c in candidates)
+                if (c != null && !vcams.Contains(c.Name))
+                    vcams.Add(c.Name);
+
+            mCameraCandidates = vcams.ToArray();
+            for (int i = 0; i < mCameraCandidates.Length; ++i)
+                mCameraIndexLookup[mCameraCandidates[i]] = i;
+        }
+
+        private int GetCameraIndex(string name)
+        {
+            if (name == null || mCameraIndexLookup == null)
+                return 0;
+            if (!mCameraIndexLookup.ContainsKey(name))
+                return 0;
+            return mCameraIndexLookup[name];
+        }
+
+        void SetupBlendList()
+        {
+            mBlendList = new ReorderableList(serializedObject,
+                    serializedObject.FindProperty(() => Target.m_CustomBlends),
+                    true, true, true, true);
+
+            // Needed for accessing string names of fields
+            CinemachineBlenderSettings.CustomBlend def = new CinemachineBlenderSettings.CustomBlend();
+            CinemachineBlendDefinition def2 = new CinemachineBlendDefinition();
+
+            float vSpace = 2;
+            float hSpace = 3;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+            mBlendList.drawHeaderCallback = (Rect rect) =>
+                {
+                    rect.width -= (EditorGUIUtility.singleLineHeight + 2 * hSpace);
+                    rect.width /= 3;
+                    Vector2 pos = rect.position; pos.x += EditorGUIUtility.singleLineHeight;
+                    rect.position = pos;
+                    EditorGUI.LabelField(rect, "From");
+
+                    pos.x += rect.width + hSpace; rect.position = pos;
+                    EditorGUI.LabelField(rect, "To");
+
+                    pos.x += rect.width + hSpace; rect.width -= floatFieldWidth + hSpace; rect.position = pos;
+                    EditorGUI.LabelField(rect, "Style");
+
+                    pos.x += rect.width + hSpace; rect.width = floatFieldWidth; rect.position = pos;
+                    EditorGUI.LabelField(rect, "Time");
+                };
+
+            mBlendList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    SerializedProperty element
+                        = mBlendList.serializedProperty.GetArrayElementAtIndex(index);
+
+                    rect.y += vSpace;
+                    rect.height = EditorGUIUtility.singleLineHeight;
+                    Vector2 pos = rect.position;
+                    rect.width -= 2 * hSpace; rect.width /= 3;
+                    SerializedProperty fromProp = element.FindPropertyRelative(() => def.m_From);
+                    int current = GetCameraIndex(fromProp.stringValue);
+                    int sel = EditorGUI.Popup(rect, current, mCameraCandidates);
+                    if (current != sel)
+                        fromProp.stringValue = mCameraCandidates[sel];
+
+                    pos.x += rect.width + hSpace; rect.position = pos;
+                    SerializedProperty toProp = element.FindPropertyRelative(() => def.m_To);
+                    current = GetCameraIndex(toProp.stringValue);
+                    sel = EditorGUI.Popup(rect, current, mCameraCandidates);
+                    if (current != sel)
+                        toProp.stringValue = mCameraCandidates[sel];
+
+                    SerializedProperty blendProp = element.FindPropertyRelative(() => def.m_Blend);
+                    pos.x += rect.width + hSpace; rect.width -= floatFieldWidth; rect.position = pos;
+                    SerializedProperty styleProp = blendProp.FindPropertyRelative(() => def2.m_Style);
+                    EditorGUI.PropertyField(rect, styleProp, GUIContent.none);
+
+                    if (styleProp.intValue != (int)CinemachineBlendDefinition.Style.Cut)
+                    {
+                        pos.x += rect.width + hSpace; rect.width = floatFieldWidth; rect.position = pos;
+                        SerializedProperty timeProp = blendProp.FindPropertyRelative(() => def2.m_Time);
+                        EditorGUI.PropertyField(rect, timeProp, GUIContent.none);
+                    }
+                };
+
+            mBlendList.onAddCallback = (ReorderableList l) =>
+                {
+                    var index = l.serializedProperty.arraySize;
+                    ++l.serializedProperty.arraySize;
+                    SerializedProperty blendProp = l.serializedProperty.GetArrayElementAtIndex(
+                            index).FindPropertyRelative(() => def.m_Blend);
+
+                    blendProp.FindPropertyRelative(() => def2.m_Style).enumValueIndex
+                        = (int)CinemachineBlendDefinition.Style.EaseInOut;
+                    blendProp.FindPropertyRelative(() => def2.m_Time).floatValue = 2f;
+                };
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..29cc10570063d4133d995ed6da96d808ef642bba
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1ff9d8296ed1f02419bf4f417ff2265e
+timeCreated: 1486495673
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..20604b624cd95b76bda58937bcbb924c3b0f8511
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs
@@ -0,0 +1,168 @@
+using UnityEngine;
+using UnityEditor;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+using System.IO;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineBrain))]
+    internal sealed class CinemachineBrainEditor : BaseEditor<CinemachineBrain>
+    {
+        EmbeddeAssetEditor<CinemachineBlenderSettings> m_BlendsEditor;
+        bool mEventsExpanded = false;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_CameraCutEvent));
+            excluded.Add(FieldPath(x => x.m_CameraActivatedEvent));
+            excluded.Add(FieldPath(x => x.m_CustomBlends));
+            return excluded;
+        }
+
+        private void OnEnable()
+        {
+            m_BlendsEditor = new EmbeddeAssetEditor<CinemachineBlenderSettings>(
+                    FieldPath(x => x.m_CustomBlends), this);
+            m_BlendsEditor.OnChanged = (CinemachineBlenderSettings b) =>
+                {
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                };
+        }
+
+        private void OnDisable()
+        {
+            if (m_BlendsEditor != null)
+                m_BlendsEditor.OnDisable();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+
+            // Show the active camera and blend
+            GUI.enabled = false;
+            ICinemachineCamera vcam = Target.ActiveVirtualCamera;
+            Transform activeCam = (vcam != null && vcam.VirtualCameraGameObject != null)
+                ? vcam.VirtualCameraGameObject.transform : null;
+            EditorGUILayout.ObjectField("Live Camera", activeCam, typeof(Transform), true);
+            EditorGUILayout.DelayedTextField(
+                "Live Blend", Target.ActiveBlend != null
+                ? Target.ActiveBlend.Description : string.Empty);
+            GUI.enabled = true;
+
+            // Normal properties
+            DrawRemainingPropertiesInInspector();
+
+            // Blender
+            m_BlendsEditor.DrawEditorCombo(
+                "Create New Blender Asset",
+                Target.gameObject.name + " Blends", "asset", string.Empty,
+                "Custom Blends", false);
+
+            mEventsExpanded = EditorGUILayout.Foldout(mEventsExpanded, "Events");
+            if (mEventsExpanded)
+            {
+                EditorGUILayout.PropertyField(FindProperty(x => x.m_CameraCutEvent));
+                EditorGUILayout.PropertyField(FindProperty(x => x.m_CameraActivatedEvent));
+            }
+            serializedObject.ApplyModifiedProperties();
+        }
+
+        [DrawGizmo(GizmoType.Selected | GizmoType.NonSelected, typeof(CinemachineBrain))]
+        private static void DrawBrainGizmos(CinemachineBrain brain, GizmoType drawType)
+        {
+            if (brain.OutputCamera != null && brain.m_ShowCameraFrustum)
+            {
+                DrawCameraFrustumGizmo(
+                    brain, LensSettings.FromCamera(brain.OutputCamera), 
+                    brain.transform.localToWorldMatrix, 
+                    Color.white); // GML why is this color hardcoded?
+            }
+        }
+
+        internal static void DrawCameraFrustumGizmo(
+            CinemachineBrain brain, LensSettings lens, 
+            Matrix4x4 transform, Color color)
+        {
+            float aspect = 1;
+            bool ortho = false;
+            if (brain != null)
+            {
+                aspect = brain.OutputCamera.aspect;
+                ortho = brain.OutputCamera.orthographic;
+            }
+
+            Matrix4x4 originalMatrix = Gizmos.matrix;
+            Color originalGizmoColour = Gizmos.color;
+            Gizmos.color = color;
+            Gizmos.matrix = transform;
+            if (ortho)
+            {
+                Vector3 size = new Vector3(
+                        aspect * lens.OrthographicSize * 2, 
+                        lens.OrthographicSize * 2, 
+                        lens.NearClipPlane + lens.FarClipPlane);
+                Gizmos.DrawWireCube(
+                    new Vector3(0, 0, (size.z / 2) + lens.NearClipPlane), size);
+            }
+            else
+            {
+                Gizmos.DrawFrustum(
+                        Vector3.zero, lens.FieldOfView,
+                        lens.FarClipPlane, lens.NearClipPlane, aspect);
+            }
+            Gizmos.matrix = originalMatrix;
+            Gizmos.color = originalGizmoColour;
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy | GizmoType.Pickable, typeof(CinemachineVirtualCameraBase))]
+        internal static void DrawVirtualCameraBaseGizmos(CinemachineVirtualCameraBase vcam, GizmoType selectionType)
+        {
+            // Don't draw gizmos on hidden stuff
+            if ((vcam.VirtualCameraGameObject.hideFlags & (HideFlags.HideInHierarchy | HideFlags.HideInInspector)) != 0)
+                return;
+
+            if (vcam.ParentCamera != null && (selectionType & GizmoType.Active) == 0)
+                return;
+
+            CameraState state = vcam.State;
+            Gizmos.DrawIcon(state.FinalPosition, kGizmoFileName, true);
+
+            DrawCameraFrustumGizmo(
+                CinemachineCore.Instance.FindPotentialTargetBrain(vcam),
+                state.Lens,
+                Matrix4x4.TRS(
+                    state.FinalPosition,
+                    UnityQuaternionExtensions.Normalized(state.FinalOrientation), Vector3.one),
+                CinemachineCore.Instance.IsLive(vcam)
+                    ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
+                    : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour);
+        }
+
+        static string kGizmoFileName = "Cinemachine/cm_logo_lg.png";
+        [InitializeOnLoad]
+        static class InstallGizmos
+        {
+            static InstallGizmos()
+            {
+                string srcFile = ScriptableObjectUtility.CinemachineInstallPath + "/Gizmos/" + kGizmoFileName;
+                if (File.Exists(srcFile))
+                {
+                    string dstFile = Application.dataPath + "/Gizmos";
+                    if (!Directory.Exists(dstFile))
+                        Directory.CreateDirectory(dstFile);
+                    dstFile += "/" + kGizmoFileName;
+                    if (!File.Exists(dstFile) 
+                        || File.GetCreationTime(dstFile) < File.GetCreationTime(srcFile))
+                    {
+                        if (!Directory.Exists(Path.GetDirectoryName(dstFile)))
+                            Directory.CreateDirectory(Path.GetDirectoryName(dstFile));
+                        File.Copy(srcFile, dstFile, true);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9e73685c4936e782aefaa60bd415a6af3fff474e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 711aad28b4057bd4783120e26ff2ee25
+timeCreated: 1483406727
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0068d165cbcf17e5cd23b1fe486132504787b9be
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs
@@ -0,0 +1,211 @@
+using UnityEditor;
+using UnityEngine;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineClearShot))]
+    internal sealed class CinemachineClearShotEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineClearShot>
+    {
+        EmbeddeAssetEditor<CinemachineBlenderSettings> m_BlendsEditor;
+        ColliderState m_ColliderState;
+
+        private UnityEditorInternal.ReorderableList mChildList;
+
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            m_BlendsEditor = new EmbeddeAssetEditor<CinemachineBlenderSettings>(
+                    FieldPath(x => x.m_CustomBlends), this);
+            m_BlendsEditor.OnChanged = (CinemachineBlenderSettings b) =>
+                {
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                };
+            m_BlendsEditor.OnCreateEditor = (UnityEditor.Editor ed) =>
+                {
+                    CinemachineBlenderSettingsEditor editor = ed as CinemachineBlenderSettingsEditor;
+                    if (editor != null)
+                        editor.GetAllVirtualCameras = () => { return Target.ChildCameras; };
+                };
+            mChildList = null;
+        }
+
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            if (m_BlendsEditor != null)
+                m_BlendsEditor.OnDisable();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mChildList == null)
+                SetupChildList();
+
+            m_ColliderState = GetColliderState();
+            switch (m_ColliderState)
+            {
+                case ColliderState.ColliderOnParent:
+                case ColliderState.ColliderOnAllChildren:
+                    break;
+                case ColliderState.NoCollider:
+                    EditorGUILayout.HelpBox(
+                        "ClearShot requires a Collider extension to rank the shots.  Either add one to the ClearShot itself, or to each of the child cameras.",
+                        MessageType.Warning);
+                    break;
+                case ColliderState.ColliderOnSomeChildren:
+                    EditorGUILayout.HelpBox(
+                        "Some child cameras do not have a Collider extension.  ClearShot requires a Collider on all the child cameras, or alternatively on the ClearShot iself.",
+                        MessageType.Warning);
+                    break;
+                case ColliderState.ColliderOnChildrenAndParent:
+                    EditorGUILayout.HelpBox(
+                        "There is a Collider extention on the ClearShot camera, and also on some of its child cameras.  You can't have both.",
+                        MessageType.Error);
+                    break;
+            }
+
+            DrawHeaderInInspector();
+            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
+            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
+            DrawRemainingPropertiesInInspector();
+
+            // Blends
+            m_BlendsEditor.DrawEditorCombo(
+                "Create New Blender Asset",
+                Target.gameObject.name + " Blends", "asset", string.Empty,
+                "Custom Blends", false);
+
+            // vcam children
+            EditorGUILayout.Separator();
+            EditorGUI.BeginChangeCheck();
+            mChildList.DoLayoutList();
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+
+            // Extensions
+            DrawExtensionsWidgetInInspector();
+        }
+
+        enum ColliderState
+        {
+            NoCollider, 
+            ColliderOnAllChildren, 
+            ColliderOnSomeChildren, 
+            ColliderOnParent, 
+            ColliderOnChildrenAndParent 
+        }
+
+        ColliderState GetColliderState()
+        {
+            int numChildren = 0;
+            int numColliderChildren = 0;
+            bool colliderOnParent = ObjectHasCollider(Target);
+
+            var children = Target.m_ChildCameras;
+            numChildren = children == null ? 0 : children.Length;
+            for (int i = 0; i < numChildren; ++i)
+                if (ObjectHasCollider(children[i]))
+                    ++numColliderChildren;
+            if (colliderOnParent)
+                return (numColliderChildren > 0) 
+                    ? ColliderState.ColliderOnChildrenAndParent : ColliderState.ColliderOnParent;
+            if (numColliderChildren > 0)
+                return (numColliderChildren == numChildren) 
+                    ? ColliderState.ColliderOnAllChildren : ColliderState.ColliderOnSomeChildren;
+            return ColliderState.NoCollider;
+        }
+
+        bool ObjectHasCollider(object obj)
+        {
+            CinemachineVirtualCameraBase vcam = obj as CinemachineVirtualCameraBase;
+            var collider = (vcam == null) ? null : vcam.GetComponent<CinemachineCollider>();
+            return (collider != null && collider.enabled);
+        }
+
+        void SetupChildList()
+        {
+            float vSpace = 2;
+            float hSpace = 3;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+
+            mChildList = new UnityEditorInternal.ReorderableList(
+                    serializedObject, FindProperty(x => x.m_ChildCameras), true, true, true, true);
+
+            mChildList.drawHeaderCallback = (Rect rect) =>
+                {
+                    EditorGUI.LabelField(rect, "Virtual Camera Children");
+                    GUIContent priorityText = new GUIContent("Priority");
+                    var textDimensions = GUI.skin.label.CalcSize(priorityText);
+                    rect.x += rect.width - textDimensions.x;
+                    rect.width = textDimensions.x;
+                    EditorGUI.LabelField(rect, priorityText);
+                };
+            mChildList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    rect.y += vSpace;
+                    rect.width -= floatFieldWidth + hSpace;
+                    rect.height = EditorGUIUtility.singleLineHeight;
+                    SerializedProperty element = mChildList.serializedProperty.GetArrayElementAtIndex(index);
+                    if (m_ColliderState == ColliderState.ColliderOnSomeChildren 
+                        || m_ColliderState == ColliderState.ColliderOnChildrenAndParent)
+                    {
+                        bool hasCollider = ObjectHasCollider(element.objectReferenceValue);
+                        if ((m_ColliderState == ColliderState.ColliderOnSomeChildren && !hasCollider)
+                            || (m_ColliderState == ColliderState.ColliderOnChildrenAndParent && hasCollider))
+                        {
+                            float width = rect.width;
+                            rect.width = rect.height;
+                            GUIContent label = new GUIContent("");
+                            label.image = EditorGUIUtility.IconContent("console.warnicon.sml").image;
+                            EditorGUI.LabelField(rect, label);
+                            width -= rect.width; rect.x += rect.width; rect.width = width;
+                        }
+                    }
+                    EditorGUI.PropertyField(rect, element, GUIContent.none);
+
+                    SerializedObject obj = new SerializedObject(element.objectReferenceValue);
+                    rect.x += rect.width + hSpace; rect.width = floatFieldWidth;
+                    SerializedProperty priorityProp = obj.FindProperty(() => Target.m_Priority);
+                    float oldWidth = EditorGUIUtility.labelWidth;
+                    EditorGUIUtility.labelWidth = hSpace * 2;
+                    EditorGUI.PropertyField(rect, priorityProp, new GUIContent(" "));
+                    EditorGUIUtility.labelWidth = oldWidth;
+                    obj.ApplyModifiedProperties();
+                };
+            mChildList.onChangedCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    if (l.index < 0 || l.index >= l.serializedProperty.arraySize)
+                        return;
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        vcam.transform.SetSiblingIndex(l.index);
+                };
+            mChildList.onAddCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    var index = l.serializedProperty.arraySize;
+                    var vcam = CinemachineMenu.CreateDefaultVirtualCamera();
+                    Undo.SetTransformParent(vcam.transform, Target.transform, "");
+                    var collider = Undo.AddComponent<CinemachineCollider>(vcam.gameObject);
+                    collider.m_AvoidObstacles = false;
+                    Undo.RecordObject(collider, "create ClearShot child");
+                    vcam.transform.SetSiblingIndex(index);
+                };
+            mChildList.onRemoveCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        Undo.DestroyObjectImmediate(vcam.gameObject);
+                };
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..26d971aefdc2dfcc4a1c1807c213420b6762b4a1
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6036af5730313e54699c5a693891fe90
+timeCreated: 1484508430
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..074b15357e8a304d93d830df658a0b8e0d114bb0
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs
@@ -0,0 +1,76 @@
+using UnityEngine;
+using UnityEditor;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineCollider))]
+    public sealed class CinemachineColliderEditor : BaseEditor<CinemachineCollider>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            if (!Target.m_AvoidObstacles)
+            {
+                excluded.Add(FieldPath(x => x.m_DistanceLimit));
+                excluded.Add(FieldPath(x => x.m_CameraRadius));
+                excluded.Add(FieldPath(x => x.m_Strategy));
+                excluded.Add(FieldPath(x => x.m_MaximumEffort));
+                excluded.Add(FieldPath(x => x.m_Damping));
+            }
+            else if (Target.m_Strategy == CinemachineCollider.ResolutionStrategy.PullCameraForward)
+            {
+                excluded.Add(FieldPath(x => x.m_MaximumEffort));
+            }
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+
+            if (Target.m_AvoidObstacles && !Target.VirtualCamera.State.HasLookAt)
+                EditorGUILayout.HelpBox(
+                    "Preserve Line Of Sight requires a LookAt target.", 
+                    MessageType.Warning);
+
+            DrawRemainingPropertiesInInspector();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.Selected, typeof(CinemachineCollider))]
+        private static void DrawColliderGizmos(CinemachineCollider collider, GizmoType type)
+        {
+            CinemachineVirtualCameraBase vcam = (collider != null) ? collider.VirtualCamera : null;
+            if (vcam != null && collider.enabled)
+            {
+                Color oldColor = Gizmos.color;
+                Vector3 pos = vcam.State.FinalPosition;
+                if (collider.m_AvoidObstacles && vcam.State.HasLookAt)
+                {
+                    Gizmos.color = CinemachineColliderPrefs.FeelerColor;
+                    if (collider.m_CameraRadius > 0)
+                        Gizmos.DrawWireSphere(pos, collider.m_CameraRadius);
+
+                    Vector3 forwardFeelerVector = (vcam.State.ReferenceLookAt - pos).normalized;
+                    float distance = collider.m_DistanceLimit;
+                    Gizmos.DrawLine(pos, pos + forwardFeelerVector * distance);
+
+                    // Show the avoidance path, for debugging
+                    List<List<Vector3>> debugPaths = collider.DebugPaths;
+                    foreach (var path in debugPaths)
+                    {
+                        Gizmos.color = CinemachineColliderPrefs.FeelerHitColor;
+                        Vector3 p0 = vcam.State.ReferenceLookAt;
+                        foreach (var p in path)
+                        {
+                            Gizmos.DrawLine(p0, p);
+                            p0 = p;
+                        }
+                        Gizmos.DrawLine(p0, pos);
+                    }
+                }
+                Gizmos.color = oldColor;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..61eebf66dd126dd2b57d5f3c498d1e1cfe848375
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: bf34fbe7a6e71634493d770ed0031f9d
+timeCreated: 1486652356
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e0029b94702d37b0719656138c128eeef6505c31
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs
@@ -0,0 +1,89 @@
+using UnityEngine;
+using UnityEditor;
+using Cinemachine.Utility;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineComposer))]
+    internal class CinemachineComposerEditor : BaseEditor<CinemachineComposer>
+    {
+        CinemachineScreenComposerGuides mScreenGuideEditor;
+
+        protected virtual void OnEnable()
+        {
+            mScreenGuideEditor = new CinemachineScreenComposerGuides();
+            mScreenGuideEditor.GetHardGuide = () => { return Target.HardGuideRect; };
+            mScreenGuideEditor.GetSoftGuide = () => { return Target.SoftGuideRect; };
+            mScreenGuideEditor.SetHardGuide = (Rect r) => { Target.HardGuideRect = r; };
+            mScreenGuideEditor.SetSoftGuide = (Rect r) => { Target.SoftGuideRect = r; };
+            mScreenGuideEditor.Target = () => { return serializedObject; };
+
+            Target.OnGUICallback += OnGUI;
+            UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+        }
+
+        protected virtual void OnDisable()
+        {
+            if (Target != null)
+                Target.OnGUICallback -= OnGUI;
+            UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.LookAtTarget == null)
+                EditorGUILayout.HelpBox(
+                    "A LookAt target is required.  Change Aim to Do Nothing if you don't want a LookAt target.", 
+                    MessageType.Warning);
+
+            // First snapshot some settings
+            Rect oldHard = Target.HardGuideRect;
+            Rect oldSoft = Target.SoftGuideRect;
+
+            // Draw the properties
+            DrawRemainingPropertiesInInspector();
+            mScreenGuideEditor.SetNewBounds(oldHard, oldSoft, Target.HardGuideRect, Target.SoftGuideRect);
+        }
+
+        protected virtual void OnGUI()
+        {
+            // Draw the camera guides
+            if (!Target.IsValid || !CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides)
+                return;
+
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(Target.VirtualCamera);
+            if (brain == null || brain.OutputCamera.activeTexture != null)
+                return;
+
+            bool isLive = CinemachineCore.Instance.IsLive(Target.VirtualCamera);
+
+            // Screen guides
+            mScreenGuideEditor.OnGUI_DrawGuides(isLive, brain.OutputCamera, Target.VcamState.Lens, true);
+
+            // Draw an on-screen gizmo for the target
+            if (Target.LookAtTarget != null && isLive)
+            {
+                Vector3 targetScreenPosition = brain.OutputCamera.WorldToScreenPoint(Target.TrackedPoint);
+                if (targetScreenPosition.z > 0)
+                {
+                    targetScreenPosition.y = Screen.height - targetScreenPosition.y;
+
+                    GUI.color = CinemachineSettings.ComposerSettings.TargetColour;
+                    Rect r = new Rect(targetScreenPosition, Vector2.zero);
+                    float size = (CinemachineSettings.ComposerSettings.TargetSize 
+                        + CinemachineScreenComposerGuides.kGuideBarWidthPx) / 2;
+                    GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture);
+                    size -= CinemachineScreenComposerGuides.kGuideBarWidthPx;
+                    if (size > 0)
+                    {
+                        Vector4 overlayOpacityScalar 
+                            = new Vector4(1f, 1f, 1f, CinemachineSettings.ComposerSettings.OverlayOpacity);
+                        GUI.color = Color.black * overlayOpacityScalar;
+                        GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..cfe04050aa39a92eb484a7fe0cbc3a4866705318
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2bb09c3bc24a82648a2e4fc008a28d8b
+timeCreated: 1484088329
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8fac565382c516669b16154387c7b91c9820164b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs
@@ -0,0 +1,161 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineConfiner))]
+    public sealed class CinemachineConfinerEditor : BaseEditor<CinemachineConfiner>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(Target.VirtualCamera);
+            bool ortho = brain != null ? brain.OutputCamera.orthographic : false;
+            if (!ortho)
+                excluded.Add(FieldPath(x => x.m_ConfineScreenEdges));
+            if (Target.m_ConfineMode == CinemachineConfiner.Mode.Confine2D)
+                excluded.Add(FieldPath(x => x.m_BoundingVolume));
+            else
+                excluded.Add(FieldPath(x => x.m_BoundingShape2D));
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.m_ConfineMode == CinemachineConfiner.Mode.Confine2D)
+            {
+                if (Target.m_BoundingShape2D == null)
+                    EditorGUILayout.HelpBox("A Bounding Shape is required.", MessageType.Warning);
+                else if (Target.m_BoundingShape2D.GetType() != typeof(PolygonCollider2D)
+                    && Target.m_BoundingShape2D.GetType() != typeof(CompositeCollider2D))
+                {
+                    EditorGUILayout.HelpBox(
+                        "Must be a PolygonCollider2D or CompositeCollider2D.", 
+                        MessageType.Warning);
+                }
+                else if (Target.m_BoundingShape2D.GetType() == typeof(CompositeCollider2D))
+                {
+                    CompositeCollider2D poly = Target.m_BoundingShape2D as CompositeCollider2D;
+                    if (poly.geometryType != CompositeCollider2D.GeometryType.Polygons)
+                    {
+                        EditorGUILayout.HelpBox(
+                            "CompositeCollider2D geometry type must be Polygons", 
+                            MessageType.Warning);
+                    }
+                }
+            }
+            else
+            {
+                if (Target.m_BoundingVolume == null)
+                    EditorGUILayout.HelpBox("A Bounding Volume is required.", MessageType.Warning);
+                else if (Target.m_BoundingVolume.GetType() != typeof(BoxCollider)
+                    && Target.m_BoundingVolume.GetType() != typeof(SphereCollider)
+                    && Target.m_BoundingVolume.GetType() != typeof(CapsuleCollider))
+                {
+                    EditorGUILayout.HelpBox(
+                        "Must be a BoxCollider, SphereCollider, or CapsuleCollider.", 
+                        MessageType.Warning);
+                }
+            }
+            DrawRemainingPropertiesInInspector();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.Selected, typeof(CinemachineConfiner))]
+        private static void DrawColliderGizmos(CinemachineConfiner confiner, GizmoType type)
+        {
+            CinemachineVirtualCameraBase vcam = (confiner != null) ? confiner.VirtualCamera : null;
+            if (vcam != null && confiner.IsValid)
+            {
+                Matrix4x4 oldMatrix = Gizmos.matrix;
+                Color oldColor = Gizmos.color;
+                Gizmos.color = Color.yellow;
+
+                if (confiner.m_ConfineMode == CinemachineConfiner.Mode.Confine3D)
+                {
+                    Transform t = confiner.m_BoundingVolume.transform;
+                    Gizmos.matrix = Matrix4x4.TRS(t.position, t.rotation, t.lossyScale);
+
+                    Type colliderType = confiner.m_BoundingVolume.GetType();
+                    if (colliderType == typeof(BoxCollider))
+                    {
+                        BoxCollider c = confiner.m_BoundingVolume as BoxCollider;
+                        Gizmos.DrawWireCube(c.center, c.size);
+                    }
+                    else if (colliderType == typeof(SphereCollider))
+                    {
+                        SphereCollider c = confiner.m_BoundingVolume as SphereCollider;
+                        Gizmos.DrawWireSphere(c.center, c.radius);
+                    }
+                    else if (colliderType == typeof(CapsuleCollider))
+                    {
+                        CapsuleCollider c = confiner.m_BoundingVolume as CapsuleCollider;
+                        Vector3 size = Vector3.one * c.radius * 2;
+                        switch (c.direction)
+                        {
+                            case 0: size.x = c.height; break;
+                            case 1: size.y = c.height; break;
+                            case 2: size.z = c.height; break;
+                        }
+                        Gizmos.DrawWireCube(c.center, size);
+                    }
+                    else if (colliderType == typeof(MeshCollider))
+                    {
+                        MeshCollider c = confiner.m_BoundingVolume as MeshCollider;
+                        Gizmos.DrawWireMesh(c.sharedMesh);
+                    }
+                    else
+                    {
+                        // Just draw an AABB - not very nice!
+                        Gizmos.matrix = oldMatrix;
+                        Bounds bounds = confiner.m_BoundingVolume.bounds;
+                        Gizmos.DrawWireCube(t.position, bounds.extents * 2);
+                    }
+                }
+                else 
+                {
+                    Transform t = confiner.m_BoundingShape2D.transform;
+                    Gizmos.matrix = Matrix4x4.TRS(t.position, t.rotation, t.lossyScale);
+
+                    Type colliderType = confiner.m_BoundingShape2D.GetType();
+                    if (colliderType == typeof(PolygonCollider2D))
+                    {
+                        PolygonCollider2D poly = confiner.m_BoundingShape2D as PolygonCollider2D;
+                        for (int i = 0; i < poly.pathCount; ++i)
+                            DrawPath(poly.GetPath(i), -1);
+                    }
+                    else if (colliderType == typeof(CompositeCollider2D))
+                    {
+                        CompositeCollider2D poly = confiner.m_BoundingShape2D as CompositeCollider2D;
+                        Vector2[] path = new Vector2[poly.pointCount];
+                        for (int i = 0; i < poly.pathCount; ++i)
+                        {
+                            int numPoints = poly.GetPath(i, path);
+                            DrawPath(path, numPoints);
+                        }
+                    }
+                }
+                Gizmos.color = oldColor;
+                Gizmos.matrix = oldMatrix;
+            }
+        }
+
+        static void DrawPath(Vector2[] path, int numPoints)
+        {
+            if (numPoints < 0)
+                numPoints = path.Length;
+            if (numPoints > 0)
+            {
+                Vector2 v0 = path[numPoints-1];
+                for (int j = 0; j < numPoints; ++j)
+                {
+                    Vector2 v = path[j];
+                    Gizmos.DrawLine(v0, v);
+                    v0 = v;
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a25f82fff8bfad6ddd00be9f8329f2a4bdf8f720
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3f7c779802a73d5448e38af7c39fbaa5
+timeCreated: 1503423096
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..083badb9c625ba95b5c10b72080329b71829cf2e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs
@@ -0,0 +1,17 @@
+using System.Collections.Generic;
+using UnityEditor;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineExternalCamera))]
+    internal class CinemachineExternalCameraEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineExternalCamera>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add("Extensions");
+            return excluded;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0d0d6f6ec59448ec9a98d78ea6cc0c3b6fcdf6ff
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3226d9f88577be74197693bd17cff8c3
+timeCreated: 1506455627
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8f635ddf91bd60a1fb00b4dcb6292d3bcd2914cb
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs
@@ -0,0 +1,174 @@
+using UnityEngine;
+using UnityEditor;
+using Cinemachine.Utility;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineFramingTransposer))]
+    internal class CinemachineFramingTransposerEditor : BaseEditor<CinemachineFramingTransposer>
+    {
+        CinemachineScreenComposerGuides mScreenGuideEditor;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            if (Target.m_UnlimitedSoftZone)
+            {
+                excluded.Add(FieldPath(x => x.m_SoftZoneWidth));
+                excluded.Add(FieldPath(x => x.m_SoftZoneHeight));
+                excluded.Add(FieldPath(x => x.m_BiasX));
+                excluded.Add(FieldPath(x => x.m_BiasY));
+            }
+            CinemachineTargetGroup group = Target.TargetGroup;
+            if (group == null || Target.m_GroupFramingMode == CinemachineFramingTransposer.FramingMode.None)
+            {
+                excluded.Add(FieldPath(x => x.m_GroupFramingSize));
+                excluded.Add(FieldPath(x => x.m_AdjustmentMode));
+                excluded.Add(FieldPath(x => x.m_MaxDollyIn));
+                excluded.Add(FieldPath(x => x.m_MaxDollyOut));
+                excluded.Add(FieldPath(x => x.m_MinimumDistance));
+                excluded.Add(FieldPath(x => x.m_MaximumDistance));
+                excluded.Add(FieldPath(x => x.m_MinimumFOV));
+                excluded.Add(FieldPath(x => x.m_MaximumFOV));
+                excluded.Add(FieldPath(x => x.m_MinimumOrthoSize));
+                excluded.Add(FieldPath(x => x.m_MaximumOrthoSize));
+                if (group == null)
+                    excluded.Add(FieldPath(x => x.m_GroupFramingMode));
+            }
+            else 
+            {
+                CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(Target.VirtualCamera);
+                bool ortho = brain != null ? brain.OutputCamera.orthographic : false;
+                if (ortho)
+                {
+                    excluded.Add(FieldPath(x => x.m_AdjustmentMode));
+                    excluded.Add(FieldPath(x => x.m_MaxDollyIn));
+                    excluded.Add(FieldPath(x => x.m_MaxDollyOut));
+                    excluded.Add(FieldPath(x => x.m_MinimumDistance));
+                    excluded.Add(FieldPath(x => x.m_MaximumDistance));
+                    excluded.Add(FieldPath(x => x.m_MinimumFOV));
+                    excluded.Add(FieldPath(x => x.m_MaximumFOV));
+                }
+                else 
+                {
+                    excluded.Add(FieldPath(x => x.m_MinimumOrthoSize));
+                    excluded.Add(FieldPath(x => x.m_MaximumOrthoSize));
+                    switch (Target.m_AdjustmentMode)
+                    {
+                    case CinemachineFramingTransposer.AdjustmentMode.DollyOnly:
+                        excluded.Add(FieldPath(x => x.m_MinimumFOV));
+                        excluded.Add(FieldPath(x => x.m_MaximumFOV));
+                        break;
+                    case CinemachineFramingTransposer.AdjustmentMode.ZoomOnly:
+                        excluded.Add(FieldPath(x => x.m_MaxDollyIn));
+                        excluded.Add(FieldPath(x => x.m_MaxDollyOut));
+                        excluded.Add(FieldPath(x => x.m_MinimumDistance));
+                        excluded.Add(FieldPath(x => x.m_MaximumDistance));
+                        break;
+                    default:
+                        break;
+                    }
+                }
+            }
+            return excluded;
+        }
+
+        protected virtual void OnEnable()
+        {
+            mScreenGuideEditor = new CinemachineScreenComposerGuides();
+            mScreenGuideEditor.GetHardGuide = () => { return Target.HardGuideRect; };
+            mScreenGuideEditor.GetSoftGuide = () => { return Target.SoftGuideRect; };
+            mScreenGuideEditor.SetHardGuide = (Rect r) => { Target.HardGuideRect = r; };
+            mScreenGuideEditor.SetSoftGuide = (Rect r) => { Target.SoftGuideRect = r; };
+            mScreenGuideEditor.Target = () => { return serializedObject; };
+
+            Target.OnGUICallback += OnGUI;
+            UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+        }
+
+        protected virtual void OnDisable()
+        {
+            if (Target != null)
+                Target.OnGUICallback -= OnGUI;
+            UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.FollowTarget == null)
+                EditorGUILayout.HelpBox(
+                    "Framing Transposer requires a Follow target.  Change Body to Do Nothing if you don't want a Follow target.", 
+                    MessageType.Warning);
+            if (Target.LookAtTarget != null)
+                EditorGUILayout.HelpBox(
+                    "The LookAt target must be null.  The Follow target will be used in place of the LookAt target.",
+                    MessageType.Warning);
+
+            // First snapshot some settings
+            Rect oldHard = Target.HardGuideRect;
+            Rect oldSoft = Target.SoftGuideRect;
+
+            // Draw the properties
+            DrawRemainingPropertiesInInspector();
+            mScreenGuideEditor.SetNewBounds(oldHard, oldSoft, Target.HardGuideRect, Target.SoftGuideRect);
+        }
+
+        protected virtual void OnGUI()
+        {
+            // Draw the camera guides
+            if (!Target.IsValid || !CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides)
+                return;
+
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(Target.VirtualCamera);
+            if (brain == null || brain.OutputCamera.activeTexture != null)
+                return;
+
+            bool isLive = CinemachineCore.Instance.IsLive(Target.VirtualCamera);
+
+            // Screen guides
+            mScreenGuideEditor.OnGUI_DrawGuides(isLive, brain.OutputCamera, Target.VcamState.Lens, !Target.m_UnlimitedSoftZone);
+
+            // Draw an on-screen gizmo for the target
+            if (Target.FollowTarget != null && isLive)
+            {
+                Vector3 targetScreenPosition = brain.OutputCamera.WorldToScreenPoint(Target.TrackedPoint);
+                if (targetScreenPosition.z > 0)
+                {
+                    targetScreenPosition.y = Screen.height - targetScreenPosition.y;
+
+                    GUI.color = CinemachineSettings.ComposerSettings.TargetColour;
+                    Rect r = new Rect(targetScreenPosition, Vector2.zero);
+                    float size = (CinemachineSettings.ComposerSettings.TargetSize 
+                        + CinemachineScreenComposerGuides.kGuideBarWidthPx) / 2;
+                    GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture);
+                    size -= CinemachineScreenComposerGuides.kGuideBarWidthPx;
+                    if (size > 0)
+                    {
+                        Vector4 overlayOpacityScalar 
+                            = new Vector4(1f, 1f, 1f, CinemachineSettings.ComposerSettings.OverlayOpacity);
+                        GUI.color = Color.black * overlayOpacityScalar;
+                        GUI.DrawTexture(r.Inflated(new Vector2(size, size)), Texture2D.whiteTexture);
+                    }
+                }
+            }
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy, typeof(CinemachineFramingTransposer))]
+        private static void DrawGroupComposerGizmos(CinemachineFramingTransposer target, GizmoType selectionType)
+        {
+            // Show the group bounding box, as viewed from the camera position
+            CinemachineTargetGroup group = target.TargetGroup;
+            if (group != null)
+            {
+                Matrix4x4 m = Gizmos.matrix;
+                Bounds b = target.m_LastBounds;
+                Gizmos.matrix = target.m_lastBoundsMatrix;
+                Gizmos.color = Color.yellow;
+                Gizmos.DrawWireCube(b.center, b.size);
+                Gizmos.matrix = m;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d843e036b8f55acbbd31244d53adaab61523243c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 620aee1bd928b2a4981896c6b4e1bf0d
+timeCreated: 1502046367
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bb9f6d48b670fa2ed87ff45471c9c69dce71c657
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs
@@ -0,0 +1,206 @@
+using UnityEngine;
+using UnityEditor;
+using Cinemachine.Editor;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    [CustomEditor(typeof(CinemachineFreeLook))]
+    internal sealed class CinemachineFreeLookEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineFreeLook>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_Orbits));
+            if (!Target.m_CommonLens)
+                excluded.Add(FieldPath(x => x.m_Lens));
+            if (Target.m_BindingMode == CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp)
+            {
+                excluded.Add(FieldPath(x => x.m_Heading));
+                excluded.Add(FieldPath(x => x.m_RecenterToTargetHeading));
+            }
+            return excluded;
+        }
+
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+
+            // Must destroy child editors or we get exceptions
+            if (m_editors != null)
+                foreach (UnityEditor.Editor e in m_editors)
+                    if (e != null)
+                        UnityEngine.Object.DestroyImmediate(e);
+        }
+
+        public override void OnInspectorGUI()
+        {
+            // Ordinary properties
+            BeginInspector();
+            DrawHeaderInInspector();
+            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
+            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
+            DrawRemainingPropertiesInInspector();
+
+            // Orbits
+            EditorGUI.BeginChangeCheck();
+            SerializedProperty orbits = FindProperty(x => x.m_Orbits);
+            for (int i = 0; i < CinemachineFreeLook.RigNames.Length; ++i)
+            {
+                float hSpace = 3;
+                SerializedProperty orbit = orbits.GetArrayElementAtIndex(i);
+                Rect rect = EditorGUILayout.GetControlRect(true);
+                rect = EditorGUI.PrefixLabel(rect, new GUIContent(CinemachineFreeLook.RigNames[i]));
+                rect.height = EditorGUIUtility.singleLineHeight;
+                rect.width = rect.width / 2 - hSpace;
+
+                float oldWidth = EditorGUIUtility.labelWidth;
+                EditorGUIUtility.labelWidth = rect.width / 2; 
+                SerializedProperty heightProp = orbit.FindPropertyRelative(() => Target.m_Orbits[i].m_Height);
+                EditorGUI.PropertyField(rect, heightProp, new GUIContent("Height"));
+                rect.x += rect.width + hSpace;
+                SerializedProperty radiusProp = orbit.FindPropertyRelative(() => Target.m_Orbits[i].m_Radius);
+                EditorGUI.PropertyField(rect, radiusProp, new GUIContent("Radius"));
+                EditorGUIUtility.labelWidth = oldWidth; 
+            }
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+
+            // Rigs
+            UpdateRigEditors();
+            for (int i = 0; i < m_editors.Length; ++i)
+            {
+                if (m_editors[i] == null)
+                    continue;
+                EditorGUILayout.Separator();
+                EditorGUILayout.BeginVertical(GUI.skin.box);
+                EditorGUILayout.LabelField(RigNames[i], EditorStyles.boldLabel);
+                ++EditorGUI.indentLevel;
+                m_editors[i].OnInspectorGUI();
+                --EditorGUI.indentLevel;
+                EditorGUILayout.EndVertical();
+            }
+
+            // Extensions
+            DrawExtensionsWidgetInInspector();
+        }
+
+        string[] RigNames;
+        CinemachineVirtualCameraBase[] m_rigs;
+        UnityEditor.Editor[] m_editors;
+        void UpdateRigEditors()
+        {
+            RigNames = CinemachineFreeLook.RigNames;
+            if (m_rigs == null)
+                m_rigs = new CinemachineVirtualCameraBase[RigNames.Length];
+            if (m_editors == null)
+                m_editors = new UnityEditor.Editor[RigNames.Length];
+            for (int i = 0; i < RigNames.Length; ++i)
+            {
+                CinemachineVirtualCamera rig = Target.GetRig(i);
+                if (rig == null || rig != m_rigs[i])
+                {
+                    m_rigs[i] = rig;
+                    if (m_editors[i] != null)
+                        UnityEngine.Object.DestroyImmediate(m_editors[i]);
+                    m_editors[i] = null;
+                    if (rig != null)
+                        CreateCachedEditor(rig, null, ref m_editors[i]);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Register with CinemachineFreeLook to create the pipeline in an undo-friendly manner
+        /// </summary>
+        [InitializeOnLoad]
+        class CreateRigWithUndo
+        {
+            static CreateRigWithUndo()
+            {
+                CinemachineFreeLook.CreateRigOverride
+                    = (CinemachineFreeLook vcam, string name, CinemachineVirtualCamera copyFrom) =>
+                    {
+                        // Create a new rig with default components
+                        GameObject go = new GameObject(name);
+                        Undo.RegisterCreatedObjectUndo(go, "created rig");
+                        Undo.SetTransformParent(go.transform, vcam.transform, "parenting rig");
+                        CinemachineVirtualCamera rig = Undo.AddComponent<CinemachineVirtualCamera>(go);
+                        Undo.RecordObject(rig, "creating rig");
+                        if (copyFrom != null)
+                            ReflectionHelpers.CopyFields(copyFrom, rig);
+                        else
+                        {
+                            go = rig.GetComponentOwner().gameObject;
+                            Undo.RecordObject(Undo.AddComponent<CinemachineOrbitalTransposer>(go), "creating rig");
+                            Undo.RecordObject(Undo.AddComponent<CinemachineComposer>(go), "creating rig");
+                        }
+                        return rig;
+                    };
+                CinemachineFreeLook.DestroyRigOverride = (GameObject rig) =>
+                    {
+                        Undo.DestroyObjectImmediate(rig);
+                    };
+            }
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.Selected, typeof(CinemachineFreeLook))]
+        private static void DrawFreeLookGizmos(CinemachineFreeLook vcam, GizmoType selectionType)
+        {
+            // Standard frustum and logo
+            CinemachineBrainEditor.DrawVirtualCameraBaseGizmos(vcam, selectionType);
+
+            Color originalGizmoColour = Gizmos.color;
+            bool isActiveVirtualCam = CinemachineCore.Instance.IsLive(vcam);
+            Gizmos.color = isActiveVirtualCam
+                ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
+                : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;
+
+            if (vcam.Follow != null)
+            {
+                Vector3 pos = vcam.Follow.position;
+                Vector3 up = Vector3.up;
+                CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(vcam);
+                if (brain != null)
+                    up = brain.DefaultWorldUp;
+
+                var MiddleRig = vcam.GetRig(1).GetCinemachineComponent<CinemachineOrbitalTransposer>();
+                Quaternion orient = MiddleRig.GetReferenceOrientation(up);
+                up = orient * Vector3.up;
+                float rotation = vcam.m_XAxis.Value + vcam.m_Heading.m_HeadingBias;
+                orient = Quaternion.AngleAxis(rotation, up) * orient;
+
+                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
+                    pos + up * vcam.m_Orbits[0].m_Height, orient, vcam.m_Orbits[0].m_Radius);
+                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
+                    pos + up * vcam.m_Orbits[1].m_Height, orient, vcam.m_Orbits[1].m_Radius);
+                CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius(
+                    pos + up * vcam.m_Orbits[2].m_Height, orient, vcam.m_Orbits[2].m_Radius);
+
+                DrawCameraPath(pos, orient, vcam);
+            }
+
+            Gizmos.color = originalGizmoColour;
+        }
+
+        private static void DrawCameraPath(Vector3 atPos, Quaternion orient, CinemachineFreeLook vcam)
+        {
+            Matrix4x4 prevMatrix = Gizmos.matrix;
+            Gizmos.matrix = Matrix4x4.TRS(atPos, orient, Vector3.one);
+
+            const int kNumStepsPerPair = 30;
+            Vector3 currPos = vcam.GetLocalPositionForCameraFromInput(0f);
+            for (int i = 1; i < kNumStepsPerPair + 1; ++i)
+            {
+                float t = (float)i / (float)kNumStepsPerPair;
+                Vector3 nextPos = vcam.GetLocalPositionForCameraFromInput(t);
+                Gizmos.DrawLine(currPos, nextPos);
+                Gizmos.DrawWireSphere(nextPos, 0.02f);
+                currPos = nextPos;
+            }
+            Gizmos.matrix = prevMatrix;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f66b71a3377b125198d6d47fc9335c61bfba2db9
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 04e6f1d86089cda409e925cd975436d9
+timeCreated: 1485281953
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..42f551be47f69c463326820a40c676b3ba07c8d2
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using UnityEditor;
+using UnityEngine;
+using Cinemachine.Utility;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineGroupComposer))]
+    internal class CinemachineGroupComposerEditor : CinemachineComposerEditor
+    {
+        // Specialization
+        private CinemachineGroupComposer MyTarget { get { return target as CinemachineGroupComposer; } }
+        protected string FieldPath<TValue>(Expression<Func<CinemachineGroupComposer, TValue>> expr)
+        {
+            return ReflectionHelpers.GetFieldPath(expr);
+        }
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(MyTarget.VirtualCamera);
+            bool ortho = brain != null ? brain.OutputCamera.orthographic : false;
+            if (ortho)
+            {
+                excluded.Add(FieldPath(x => x.m_AdjustmentMode));
+                excluded.Add(FieldPath(x => x.m_MinimumFOV));
+                excluded.Add(FieldPath(x => x.m_MaximumFOV));
+                excluded.Add(FieldPath(x => x.m_MaxDollyIn));
+                excluded.Add(FieldPath(x => x.m_MaxDollyOut));
+                excluded.Add(FieldPath(x => x.m_MinimumDistance));
+                excluded.Add(FieldPath(x => x.m_MaximumDistance));
+            }
+            else
+            {
+                excluded.Add(FieldPath(x => x.m_MinimumOrthoSize));
+                excluded.Add(FieldPath(x => x.m_MaximumOrthoSize));
+                switch (MyTarget.m_AdjustmentMode)
+                {
+                    case CinemachineGroupComposer.AdjustmentMode.DollyOnly:
+                        excluded.Add(FieldPath(x => x.m_MinimumFOV));
+                        excluded.Add(FieldPath(x => x.m_MaximumFOV));
+                        break;
+                    case CinemachineGroupComposer.AdjustmentMode.ZoomOnly:
+                        excluded.Add(FieldPath(x => x.m_MaxDollyIn));
+                        excluded.Add(FieldPath(x => x.m_MaxDollyOut));
+                        excluded.Add(FieldPath(x => x.m_MinimumDistance));
+                        excluded.Add(FieldPath(x => x.m_MaximumDistance));
+                        break;
+                    default:
+                        break;
+                }
+            }
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            if (MyTarget.IsValid && MyTarget.TargetGroup == null)
+                EditorGUILayout.HelpBox(
+                    "The Framing settings will be ignored because the LookAt target is not a kind of CinemachineTargetGroup", 
+                    MessageType.Info);
+
+            base.OnInspectorGUI();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy, typeof(CinemachineGroupComposer))]
+        private static void DrawGroupComposerGizmos(CinemachineGroupComposer target, GizmoType selectionType)
+        {
+            // Show the group bounding box, as viewed from the camera position
+            if (target.TargetGroup != null)
+            {
+                Matrix4x4 m = Gizmos.matrix;
+                Bounds b = target.m_LastBounds;
+                Gizmos.matrix = target.m_lastBoundsMatrix;
+                Gizmos.color = Color.yellow;
+                Gizmos.DrawWireCube(b.center, b.size);
+                Gizmos.matrix = m;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..28056ef6b16850486fab24ed1b141bd7bb59e260
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c5da6ce9225f948438f7d6a072499ecd
+timeCreated: 1496702989
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d80c8286dc6240a394ad8456e1b6e79d33034dc5
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs
@@ -0,0 +1,23 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineHardLockToTarget))]
+    public sealed class CinemachineHardLockToTargetEditor : BaseEditor<CinemachineHardLockToTarget>
+    {
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.FollowTarget == null)
+                EditorGUILayout.HelpBox(
+                    "Hard Lock requires a Follow Target.  Change Body to Do Nothing if you don't want a Follow target.",
+                    MessageType.Warning);
+            EditorGUI.BeginChangeCheck();
+            GUI.enabled = false;
+            EditorGUILayout.LabelField(" ", "Hard Lock has no settings", EditorStyles.miniLabel);
+            GUI.enabled = true;
+            DrawRemainingPropertiesInInspector();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4a383aa38765ddf030ace7df8e603d603f491082
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e44b92e217bfdf24d99acb4344918eeb
+timeCreated: 1506541599
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c3c1df897f66744333242e91f45b3132b0bf4a03
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs
@@ -0,0 +1,23 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineHardLookAt))]
+    public sealed class CinemachineHardLookAtEditor : BaseEditor<CinemachineHardLookAt>
+    {
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.LookAtTarget == null)
+                EditorGUILayout.HelpBox(
+                    "Hard Look At requires a LookAt target.  Change Aim to Do Nothing if you don't want a LookAt target.", 
+                    MessageType.Warning);
+            EditorGUI.BeginChangeCheck();
+            GUI.enabled = false;
+            EditorGUILayout.LabelField(" ", "Hard Look At has no settings", EditorStyles.miniLabel);
+            GUI.enabled = true;
+            DrawRemainingPropertiesInInspector();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..17945605aebab9e2ef08b7589c1c604616160fac
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9ce16cd7e31794b48b2843381cd87d31
+timeCreated: 1506541599
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0f99c95425a716df8e289d36ad1a7da1fc37d4c3
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs
@@ -0,0 +1,104 @@
+using UnityEditor;
+using UnityEngine;
+using Cinemachine.Utility;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineMixingCamera))]
+    internal sealed class CinemachineMixingCameraEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineMixingCamera>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            for (int i = 0; i < CinemachineMixingCamera.MaxCameras; ++i)
+                excluded.Add(WeightPropertyName(i));
+            return excluded;
+        }
+
+        static string WeightPropertyName(int i) { return "m_Weight" + i; }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            DrawHeaderInInspector();
+            DrawRemainingPropertiesInInspector();
+
+            float totalWeight = 0;
+            CinemachineVirtualCameraBase[] children = Target.ChildCameras;
+            int numCameras = Mathf.Min(CinemachineMixingCamera.MaxCameras, children.Length);
+            for (int i = 0; i < numCameras; ++i)
+                if (children[i].isActiveAndEnabled)
+                    totalWeight += Target.GetWeight(i);
+
+            if (numCameras == 0)
+                EditorGUILayout.HelpBox("There are no Virtual Camera children", MessageType.Warning);
+            else 
+            {
+                EditorGUILayout.Separator();
+                EditorGUILayout.LabelField("Child Camera Weights", EditorStyles.boldLabel);
+                for (int i = 0; i < numCameras; ++i)
+                {
+                    SerializedProperty prop = serializedObject.FindProperty(WeightPropertyName(i));
+                    if (prop != null)
+                        EditorGUILayout.PropertyField(prop, new GUIContent(children[i].Name));
+                }
+                serializedObject.ApplyModifiedProperties();
+
+                if (totalWeight <= UnityVectorExtensions.Epsilon)
+                    EditorGUILayout.HelpBox("No input channels are active", MessageType.Warning);
+
+                if (children.Length > numCameras)
+                    EditorGUILayout.HelpBox(
+                        "There are " + children.Length 
+                        + " child cameras.  A maximum of " + numCameras + " is supported.", 
+                        MessageType.Warning);
+
+                // Camera proportion indicator
+                EditorGUILayout.Separator();
+                EditorGUILayout.LabelField("Mix Result", EditorStyles.boldLabel);
+                DrawProportionIndicator(children, numCameras, totalWeight);
+            }
+
+            // Extensions
+            DrawExtensionsWidgetInInspector();
+        }
+
+        void DrawProportionIndicator(
+            CinemachineVirtualCameraBase[] children, int numCameras, float totalWeight)
+        {
+            GUIStyle style = EditorStyles.centeredGreyMiniLabel;
+            Color bkg = new Color(0.27f, 0.27f, 0.27f); // ack! no better way than this?
+            Color fg = Color.Lerp(CinemachineBrain.GetSoloGUIColor(), bkg, 0.8f);
+            float totalHeight = (style.lineHeight + style.margin.vertical) * numCameras;
+            Rect r = EditorGUILayout.GetControlRect(true, totalHeight);
+            r.height /= numCameras; r.height -= 1;
+            float fullWidth = r.width;
+            for (int i = 0; i < numCameras; ++i)
+            {
+                float p = 0;
+                string label = children[i].Name;
+                if (totalWeight > UnityVectorExtensions.Epsilon)
+                {
+                    if (children[i].isActiveAndEnabled)
+                        p = Target.GetWeight(i) / totalWeight;
+                    else
+                        label += " (disabled)";
+                }
+                r.width = fullWidth * p;
+                EditorGUI.DrawRect(r, fg);
+
+                Rect r2 = r;
+                r2.x += r.width;
+                r2.width = fullWidth - r.width;
+                EditorGUI.DrawRect(r2, bkg);
+
+                r.width = fullWidth;
+                EditorGUI.LabelField(r, label, style);
+
+                r.y += r.height + 1;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1d7c354e70b18b68db9c1f6b9f407f01feb09226
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8ad60cb17f7694c43a8190c617281753
+timeCreated: 1502201539
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0064730b6b893784ac82ac7c27b355ad21c716a2
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs
@@ -0,0 +1,103 @@
+using UnityEngine;
+using UnityEditor;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineOrbitalTransposer))]
+    internal class CinemachineOrbitalTransposerEditor : BaseEditor<CinemachineOrbitalTransposer>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            if (Target.m_HeadingIsSlave)
+            {
+                excluded.Add(FieldPath(x => x.m_FollowOffset));
+                excluded.Add(FieldPath(x => x.m_BindingMode));
+                excluded.Add(FieldPath(x => x.m_Heading));
+                excluded.Add(FieldPath(x => x.m_XAxis));
+                excluded.Add(FieldPath(x => x.m_RecenterToTargetHeading));
+            }
+            switch (Target.m_BindingMode)
+            {
+                default:
+                case CinemachineTransposer.BindingMode.LockToTarget:
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetNoRoll:
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetWithWorldUp:
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetOnAssign:
+                case CinemachineTransposer.BindingMode.WorldSpace:
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_YawDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp:
+                    excluded.Add(FieldPath(x => x.m_XDamping));
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_YawDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    excluded.Add(FieldPath(x => x.m_Heading));
+                    excluded.Add(FieldPath(x => x.m_RecenterToTargetHeading));
+                    break;
+            }
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.FollowTarget == null)
+                EditorGUILayout.HelpBox(
+                    "Orbital Transposer requires a Follow target.", 
+                    MessageType.Warning);
+            DrawRemainingPropertiesInInspector();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.Selected, typeof(CinemachineOrbitalTransposer))]
+        static void DrawTransposerGizmos(CinemachineOrbitalTransposer target, GizmoType selectionType)
+        {
+            if (target.IsValid)
+            {
+                Color originalGizmoColour = Gizmos.color;
+                Gizmos.color = CinemachineCore.Instance.IsLive(target.VirtualCamera)
+                    ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
+                    : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;
+
+                Vector3 up = Vector3.up;
+                CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(target.VirtualCamera);
+                if (brain != null)
+                    up = brain.DefaultWorldUp;
+                Vector3 pos = target.FollowTarget.position;
+
+                Quaternion orient = target.GetReferenceOrientation(up);
+                up = orient * Vector3.up;
+                DrawCircleAtPointWithRadius
+                    (pos + up * target.m_FollowOffset.y, orient, target.m_FollowOffset.z);
+
+                Gizmos.color = originalGizmoColour;
+            }
+        }
+
+        internal static void DrawCircleAtPointWithRadius(Vector3 point, Quaternion orient, float radius)
+        {
+            Matrix4x4 prevMatrix = Gizmos.matrix;
+            Gizmos.matrix = Matrix4x4.TRS(point, orient, radius * Vector3.one);
+
+            const int kNumPoints = 25;
+            Vector3 currPoint = Vector3.forward;
+            Quaternion rot = Quaternion.AngleAxis(360f / (float)kNumPoints, Vector3.up);
+            for (int i = 0; i < kNumPoints + 1; ++i)
+            {
+                Vector3 nextPoint = rot * currPoint;
+                Gizmos.DrawLine(currPoint, nextPoint);
+                currPoint = nextPoint;
+            }
+            Gizmos.matrix = prevMatrix;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d7f01a400ef0413f9dcbdca20709557e9e9ba42c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 247be52eadac5044e9f8b7b4d8d0ada9
+timeCreated: 1485443456
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..195a5222e05cc844b4464d9ba3a51cd3f71fae67
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs
@@ -0,0 +1,9 @@
+using UnityEditor;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachinePOV))]
+    public sealed class CinemachinePOVEditor : BaseEditor<CinemachinePOV>
+    {
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..80582f552b515969a414d144e976081dc853392a
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1186b8795dc3fc84e8ec53bd314d8e91
+timeCreated: 1504801965
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b6af44d7bcfe8e2eb0c6384c8bab9a81b0859563
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs
@@ -0,0 +1,387 @@
+using UnityEditor;
+using UnityEngine;
+using System.Collections.Generic;
+using UnityEditorInternal;
+using Cinemachine.Utility;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachinePath))]
+    internal sealed class CinemachinePathEditor : BaseEditor<CinemachinePath>
+    {
+        private ReorderableList mWaypointList;
+        static bool mWaypointsExpanded;
+        static bool mPreferHandleSelection = true;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_Waypoints));
+            return excluded;
+        }
+
+        void OnEnable()
+        {
+            mWaypointList = null;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mWaypointList == null)
+                SetupWaypointList();
+            if (mWaypointList.index >= mWaypointList.count)
+                mWaypointList.index = mWaypointList.count - 1;
+
+            // Ordinary properties
+            DrawRemainingPropertiesInInspector();
+
+            GUILayout.Label(new GUIContent("Selected Waypoint:"));
+            EditorGUILayout.BeginVertical(GUI.skin.box);
+            Rect rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 3 + 10);
+            if (mWaypointList.index >= 0)
+            {
+                DrawWaypointEditor(rect, mWaypointList.index);
+                serializedObject.ApplyModifiedProperties();
+            }
+            else
+            {
+                if (Target.m_Waypoints.Length > 0)
+                {
+                    EditorGUI.HelpBox(rect,
+                        "Click on a waypoint in the scene view\nor in the Path Details list",
+                        MessageType.Info);
+                }
+                else if (GUI.Button(rect, new GUIContent("Add a waypoint to the path")))
+                {
+                    InsertWaypointAtIndex(mWaypointList.index);
+                    mWaypointList.index = 0;
+                }
+            }
+            EditorGUILayout.EndVertical();
+
+            mPreferHandleSelection = EditorGUILayout.Toggle(
+                    new GUIContent("Prefer Tangent Drag",
+                        "When editing the path, if waypoint position and tangent coincide, dragging will apply preferentially to the tangent"),
+                    mPreferHandleSelection);
+
+            mWaypointsExpanded = EditorGUILayout.Foldout(mWaypointsExpanded, "Path Details");
+            if (mWaypointsExpanded)
+            {
+                EditorGUI.BeginChangeCheck();
+                mWaypointList.DoLayoutList();
+                if (EditorGUI.EndChangeCheck())
+                    serializedObject.ApplyModifiedProperties();
+            }
+        }
+
+        void SetupWaypointList()
+        {
+            mWaypointList = new ReorderableList(
+                    serializedObject, FindProperty(x => x.m_Waypoints),
+                    true, true, true, true);
+            mWaypointList.elementHeight *= 3;
+
+            mWaypointList.drawHeaderCallback = (Rect rect) =>
+                {
+                    EditorGUI.LabelField(rect, "Waypoints");
+                };
+
+            mWaypointList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    DrawWaypointEditor(rect, index);
+                };
+
+            mWaypointList.onAddCallback = (ReorderableList l) =>
+                {
+                    InsertWaypointAtIndex(l.index);
+                };
+        }
+
+        void DrawWaypointEditor(Rect rect, int index)
+        {
+            // Needed for accessing string names of fields
+            CinemachinePath.Waypoint def = new CinemachinePath.Waypoint();
+
+            Vector2 numberDimension = GUI.skin.button.CalcSize(new GUIContent("999"));
+            Vector2 labelDimension = GUI.skin.label.CalcSize(new GUIContent("Position"));
+            Vector2 addButtonDimension = new Vector2(labelDimension.y + 5, labelDimension.y + 1);
+            float vSpace = 2;
+            float hSpace = 3;
+
+            SerializedProperty element = mWaypointList.serializedProperty.GetArrayElementAtIndex(index);
+            rect.y += vSpace / 2;
+
+            Rect r = new Rect(rect.position, numberDimension);
+            Color color = GUI.color;
+            // GUI.color = Target.m_Appearance.pathColor;
+            if (GUI.Button(r, new GUIContent(index.ToString(), "Go to the waypoint in the scene view")))
+            {
+                mWaypointList.index = index;
+                SceneView.lastActiveSceneView.pivot = Target.EvaluatePosition(index);
+                SceneView.lastActiveSceneView.size = 3;
+                SceneView.lastActiveSceneView.Repaint();
+            }
+            GUI.color = color;
+
+            r = new Rect(rect.position, labelDimension);
+            r.x += hSpace + numberDimension.x;
+            EditorGUI.LabelField(r, "Position");
+            r.x += hSpace + r.width;
+            r.width = rect.width - (numberDimension.x + hSpace + r.width + hSpace + addButtonDimension.x + hSpace);
+            EditorGUI.PropertyField(r, element.FindPropertyRelative(() => def.position), GUIContent.none);
+            r.x += r.width + hSpace;
+            r.size = addButtonDimension;
+            GUIContent buttonContent = EditorGUIUtility.IconContent("d_RectTransform Icon");
+            buttonContent.tooltip = "Set to scene-view camera position";
+            GUIStyle style = new GUIStyle(GUI.skin.label);
+            style.alignment = TextAnchor.MiddleCenter;
+            if (GUI.Button(r, buttonContent, style))
+            {
+                Undo.RecordObject(Target, "Set waypoint");
+                CinemachinePath.Waypoint wp = Target.m_Waypoints[index];
+                Vector3 pos = SceneView.lastActiveSceneView.camera.transform.position;
+                wp.position = Target.transform.InverseTransformPoint(pos);
+                Target.m_Waypoints[index] = wp;
+            }
+
+            r = new Rect(rect.position, labelDimension);
+            r.y += numberDimension.y + vSpace;
+            r.x += hSpace + numberDimension.x; r.width = labelDimension.x;
+            EditorGUI.LabelField(r, "Tangent");
+            r.x += hSpace + r.width;
+            r.width = rect.width - (numberDimension.x + hSpace + r.width + hSpace + addButtonDimension.x + hSpace);
+            EditorGUI.PropertyField(r, element.FindPropertyRelative(() => def.tangent), GUIContent.none);
+            r.x += r.width + hSpace;
+            r.size = addButtonDimension;
+            buttonContent = EditorGUIUtility.IconContent("ol minus@2x");
+            buttonContent.tooltip = "Remove this waypoint";
+            if (GUI.Button(r, buttonContent, style))
+            {
+                Undo.RecordObject(Target, "Delete waypoint");
+                var list = new List<CinemachinePath.Waypoint>(Target.m_Waypoints);
+                list.RemoveAt(index);
+                Target.m_Waypoints = list.ToArray();
+                if (index == Target.m_Waypoints.Length)
+                    mWaypointList.index = index - 1;
+            }
+
+            r = new Rect(rect.position, labelDimension);
+            r.y += 2 * (numberDimension.y + vSpace);
+            r.x += hSpace + numberDimension.x; r.width = labelDimension.x;
+            EditorGUI.LabelField(r, "Roll");
+            r.x += hSpace + labelDimension.x;
+            r.width = rect.width
+                - (numberDimension.x + hSpace)
+                - (labelDimension.x + hSpace)
+                - (addButtonDimension.x + hSpace);
+            r.width /= 3;
+            EditorGUI.MultiPropertyField(r, new GUIContent[] { new GUIContent(" ") },
+                element.FindPropertyRelative(() => def.roll));
+
+            r.x = rect.x + rect.width - addButtonDimension.x;
+            r.size = addButtonDimension;
+            buttonContent = EditorGUIUtility.IconContent("ol plus@2x");
+            buttonContent.tooltip = "Add a new waypoint after this one";
+            if (GUI.Button(r, buttonContent, style))
+            {
+                mWaypointList.index = index;
+                InsertWaypointAtIndex(index);
+            }
+        }
+
+        void InsertWaypointAtIndex(int indexA)
+        {
+            Vector3 pos = Vector3.forward;
+            Vector3 tangent = Vector3.right;
+            float roll = 0;
+
+            // Get new values from the current indexA (if any)
+            int numWaypoints = Target.m_Waypoints.Length;
+            if (indexA < 0)
+                indexA = numWaypoints - 1;
+            if (indexA >= 0)
+            {
+                int indexB = indexA + 1;
+                if (Target.m_Looped && indexB >= numWaypoints)
+                    indexB = 0;
+                if (indexB >= numWaypoints)
+                {
+                    // Extrapolate the end
+                    if (!Target.m_Waypoints[indexA].tangent.AlmostZero())
+                        tangent = Target.m_Waypoints[indexA].tangent;
+                    pos = Target.m_Waypoints[indexA].position + tangent;
+                    roll = Target.m_Waypoints[indexA].roll;
+                }
+                else
+                {
+                    // Interpolate
+                    pos = Target.transform.InverseTransformPoint(
+                            Target.EvaluatePosition(0.5f + indexA));
+                    tangent = Target.transform.InverseTransformDirection(
+                            Target.EvaluateTangent(0.5f + indexA).normalized);
+                    roll = Mathf.Lerp(
+                            Target.m_Waypoints[indexA].roll, Target.m_Waypoints[indexB].roll, 0.5f);
+                }
+            }
+            Undo.RecordObject(Target, "Add waypoint");
+            var wp = new CinemachinePath.Waypoint();
+            wp.position = pos;
+            wp.tangent = tangent;
+            wp.roll = roll;
+            var list = new List<CinemachinePath.Waypoint>(Target.m_Waypoints);
+            list.Insert(indexA + 1, wp);
+            Target.m_Waypoints = list.ToArray();
+            mWaypointList.index = indexA + 1; // select it
+        }
+
+        void OnSceneGUI()
+        {
+            if (mWaypointList == null)
+                SetupWaypointList();
+
+            if (Tools.current == Tool.Move)
+            {
+                Matrix4x4 mOld = Handles.matrix;
+                Color colorOld = Handles.color;
+
+                Handles.matrix = Target.transform.localToWorldMatrix;
+                for (int i = 0; i < Target.m_Waypoints.Length; ++i)
+                {
+                    DrawSelectionHandle(i);
+                    if (mWaypointList.index == i)
+                    {
+                        // Waypoint is selected
+                        if (mPreferHandleSelection)
+                        {
+                            DrawPositionControl(i);
+                            DrawTangentControl(i);
+                        }
+                        else
+                        {
+                            DrawTangentControl(i);
+                            DrawPositionControl(i);
+                        }
+                    }
+                }
+                Handles.color = colorOld;
+                Handles.matrix = mOld;
+            }
+        }
+
+        void DrawSelectionHandle(int i)
+        {
+            if (Event.current.button != 1)
+            {
+                Vector3 pos = Target.m_Waypoints[i].position;
+                float size = HandleUtility.GetHandleSize(pos) * 0.2f;
+                Handles.color = Color.white;
+                if (Handles.Button(pos, Quaternion.identity, size, size, Handles.SphereHandleCap)
+                    && mWaypointList.index != i)
+                {
+                    mWaypointList.index = i;
+                    InternalEditorUtility.RepaintAllViews();
+                }
+                // Label it
+                Handles.BeginGUI();
+                Vector2 labelSize = new Vector2(
+                        EditorGUIUtility.singleLineHeight * 2, EditorGUIUtility.singleLineHeight);
+                Vector2 labelPos = HandleUtility.WorldToGUIPoint(pos);
+                labelPos.y -= labelSize.y / 2;
+                labelPos.x -= labelSize.x / 2;
+                GUILayout.BeginArea(new Rect(labelPos, labelSize));
+                GUIStyle style = new GUIStyle();
+                style.normal.textColor = Color.black;
+                style.alignment = TextAnchor.MiddleCenter;
+                GUILayout.Label(new GUIContent(i.ToString(), "Waypoint " + i), style);
+                GUILayout.EndArea();
+                Handles.EndGUI();
+            }
+        }
+
+        void DrawTangentControl(int i)
+        {
+            CinemachinePath.Waypoint wp = Target.m_Waypoints[i];
+            Vector3 hPos = wp.position + wp.tangent;
+
+            Handles.color = Color.yellow;
+            Handles.DrawLine(wp.position, hPos);
+
+            EditorGUI.BeginChangeCheck();
+            Quaternion rotation = (Tools.pivotRotation == PivotRotation.Local)
+                ? Quaternion.identity : Quaternion.Inverse(Target.transform.rotation);
+            float size = HandleUtility.GetHandleSize(hPos) * 0.1f;
+            Handles.SphereHandleCap(0, hPos, rotation, size, EventType.Repaint);
+            Vector3 newPos = Handles.PositionHandle(hPos, rotation);
+            if (EditorGUI.EndChangeCheck())
+            {
+                Undo.RecordObject(target, "Change Waypoint Tangent");
+                wp.tangent = newPos - wp.position;
+                Target.m_Waypoints[i] = wp;
+                Target.InvalidateDistanceCache();
+            }
+        }
+
+        void DrawPositionControl(int i)
+        {
+            CinemachinePath.Waypoint wp = Target.m_Waypoints[i];
+            EditorGUI.BeginChangeCheck();
+            Handles.color = Target.m_Appearance.pathColor;
+            Quaternion rotation = (Tools.pivotRotation == PivotRotation.Local)
+                ? Quaternion.identity : Quaternion.Inverse(Target.transform.rotation);
+            float size = HandleUtility.GetHandleSize(wp.position) * 0.1f;
+            Handles.SphereHandleCap(0, wp.position, rotation, size, EventType.Repaint);
+            Vector3 pos = Handles.PositionHandle(wp.position, rotation);
+            if (EditorGUI.EndChangeCheck())
+            {
+                Undo.RecordObject(target, "Move Waypoint");
+                wp.position = pos;
+                Target.m_Waypoints[i] = wp;
+                Target.InvalidateDistanceCache();
+            }
+        }
+
+        internal static void DrawPathGizmo(CinemachinePathBase path, Color pathColor)
+        {
+            // Draw the path
+            Color colorOld = Gizmos.color;
+            Gizmos.color = pathColor;
+            float step = 1f / path.m_Resolution;
+            Vector3 lastPos = path.EvaluatePosition(path.MinPos);
+            Vector3 lastW = (path.EvaluateOrientation(path.MinPos)
+                             * Vector3.right) * path.m_Appearance.width / 2;
+            for (float t = path.MinPos + step; t <= path.MaxPos + step / 2; t += step)
+            {
+                Vector3 p = path.EvaluatePosition(t);
+                Quaternion q = path.EvaluateOrientation(t);
+                Vector3 w = (q * Vector3.right) * path.m_Appearance.width / 2;
+                Vector3 w2 = w * 1.2f;
+                Vector3 p0 = p - w2;
+                Vector3 p1 = p + w2;
+                Gizmos.DrawLine(p0, p1);
+                Gizmos.DrawLine(lastPos - lastW, p - w);
+                Gizmos.DrawLine(lastPos + lastW, p + w);
+#if false
+                // Show the normals, for debugging
+                Gizmos.color = Color.red;
+                Vector3 y = (q * Vector3.up) * width / 2;
+                Gizmos.DrawLine(p, p + y);
+                Gizmos.color = pathColor;
+#endif
+                lastPos = p;
+                lastW = w;
+            }
+            Gizmos.color = colorOld;
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.NotInSelectionHierarchy
+             | GizmoType.InSelectionHierarchy | GizmoType.Pickable, typeof(CinemachinePath))]
+        static void DrawGizmos(CinemachinePath path, GizmoType selectionType)
+        {
+            DrawPathGizmo(path, 
+                (Selection.activeGameObject == path.gameObject)
+                ? path.m_Appearance.pathColor : path.m_Appearance.inactivePathColor);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..893e16bb9a7f1d5dd1eb9b4c5d7cd5bab9ca370a
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c88d2a04cc828c044b0fcc133fd481e6
+timeCreated: 1493316676
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs
new file mode 100644
index 0000000000000000000000000000000000000000..92fb23ca004de94bf20cb738dd8745496c5fa624
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs
@@ -0,0 +1,191 @@
+using UnityEngine;
+using UnityEditor;
+using Cinemachine.Utility;
+
+namespace Cinemachine.Editor
+{
+    internal class CinemachineScreenComposerGuides
+    {
+        public delegate Rect RectGetter();
+        public delegate void RectSetter(Rect r);
+        public delegate SerializedObject ObjectGetter();
+
+        // Clients MUST implement all of these
+        public RectGetter GetHardGuide;
+        public RectGetter GetSoftGuide;
+        public RectSetter SetHardGuide;
+        public RectSetter SetSoftGuide;
+        public ObjectGetter Target;
+
+        public const float kGuideBarWidthPx = 3f;
+
+        public void SetNewBounds(Rect oldHard, Rect oldSoft, Rect newHard, Rect newSoft)
+        {
+            if ((oldSoft != newSoft) || (oldHard != newHard))
+            {
+                Undo.RecordObject(Target().targetObject, "Composer Bounds");
+                if (oldSoft != newSoft)
+                    SetSoftGuide(newSoft);
+                if (oldHard != newHard)
+                    SetHardGuide(newHard);
+                Target().ApplyModifiedProperties();
+            }
+        }
+
+        public void OnGUI_DrawGuides(bool isLive, Camera outputCamera, LensSettings lens, bool showHardGuides)
+        {
+            Rect cameraRect = outputCamera.pixelRect;
+            float screenWidth = cameraRect.width;
+            float screenHeight = cameraRect.height;
+            cameraRect.yMax = Screen.height - cameraRect.yMin;
+            cameraRect.yMin = cameraRect.yMax - screenHeight;
+
+            // Rotate the guides along with the dutch
+            Matrix4x4 oldMatrix = GUI.matrix;
+            GUI.matrix = Matrix4x4.Translate(cameraRect.min);
+            GUIUtility.RotateAroundPivot(lens.Dutch, cameraRect.center);
+
+            Color hardBarsColour = CinemachineSettings.ComposerSettings.HardBoundsOverlayColour;
+            Color softBarsColour = CinemachineSettings.ComposerSettings.SoftBoundsOverlayColour;
+            float overlayOpacity = CinemachineSettings.ComposerSettings.OverlayOpacity;
+            if (!isLive)
+            {
+                softBarsColour = CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;
+                hardBarsColour = Color.Lerp(softBarsColour, Color.black, 0.5f);
+                overlayOpacity /= 2;
+            }
+            hardBarsColour.a *= overlayOpacity;
+            softBarsColour.a *= overlayOpacity;
+
+            Rect r = showHardGuides ? GetHardGuide() : new Rect(-2, -2, 4, 4);
+            float hardEdgeLeft = r.xMin * screenWidth;
+            float hardEdgeTop = r.yMin * screenHeight;
+            float hardEdgeRight = r.xMax * screenWidth;
+            float hardEdgeBottom = r.yMax * screenHeight;
+
+            mDragBars[(int)DragBar.HardBarLineLeft] = new Rect(hardEdgeLeft - kGuideBarWidthPx / 2f, 0f, kGuideBarWidthPx, screenHeight);
+            mDragBars[(int)DragBar.HardBarLineTop] = new Rect(0f, hardEdgeTop - kGuideBarWidthPx / 2f, screenWidth, kGuideBarWidthPx);
+            mDragBars[(int)DragBar.HardBarLineRight] = new Rect(hardEdgeRight - kGuideBarWidthPx / 2f, 0f, kGuideBarWidthPx, screenHeight);
+            mDragBars[(int)DragBar.HardBarLineBottom] = new Rect(0f, hardEdgeBottom - kGuideBarWidthPx / 2f, screenWidth, kGuideBarWidthPx);
+
+            r = GetSoftGuide();
+            float softEdgeLeft = r.xMin * screenWidth;
+            float softEdgeTop = r.yMin * screenHeight;
+            float softEdgeRight = r.xMax * screenWidth;
+            float softEdgeBottom = r.yMax * screenHeight;
+
+            mDragBars[(int)DragBar.SoftBarLineLeft] = new Rect(softEdgeLeft - kGuideBarWidthPx / 2f, 0f, kGuideBarWidthPx, screenHeight);
+            mDragBars[(int)DragBar.SoftBarLineTop] = new Rect(0f, softEdgeTop - kGuideBarWidthPx / 2f, screenWidth, kGuideBarWidthPx);
+            mDragBars[(int)DragBar.SoftBarLineRight] = new Rect(softEdgeRight - kGuideBarWidthPx / 2f, 0f, kGuideBarWidthPx, screenHeight);
+            mDragBars[(int)DragBar.SoftBarLineBottom] = new Rect(0f, softEdgeBottom - kGuideBarWidthPx / 2f, screenWidth, kGuideBarWidthPx);
+
+            mDragBars[(int)DragBar.Center] = new Rect(softEdgeLeft, softEdgeTop, softEdgeRight - softEdgeLeft, softEdgeBottom - softEdgeTop);
+
+            // Handle dragging bars
+            if (isLive)
+                OnGuiHandleBarDragging(screenWidth, screenHeight);
+
+            // Draw the masks
+            GUI.color = hardBarsColour;
+            Rect hardBarLeft = new Rect(0, hardEdgeTop, Mathf.Max(0, hardEdgeLeft), hardEdgeBottom - hardEdgeTop);
+            Rect hardBarRight = new Rect(hardEdgeRight, hardEdgeTop,
+                    Mathf.Max(0, screenWidth - hardEdgeRight), hardEdgeBottom - hardEdgeTop);
+            Rect hardBarTop = new Rect(Mathf.Min(0, hardEdgeLeft), 0,
+                    Mathf.Max(screenWidth, hardEdgeRight) - Mathf.Min(0, hardEdgeLeft), Mathf.Max(0, hardEdgeTop));
+            Rect hardBarBottom = new Rect(Mathf.Min(0, hardEdgeLeft), hardEdgeBottom,
+                    Mathf.Max(screenWidth, hardEdgeRight) - Mathf.Min(0, hardEdgeLeft),
+                    Mathf.Max(0, screenHeight - hardEdgeBottom));
+            GUI.DrawTexture(hardBarLeft, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(hardBarTop, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(hardBarRight, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(hardBarBottom, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+
+            GUI.color = softBarsColour;
+            Rect softBarLeft = new Rect(hardEdgeLeft, softEdgeTop, softEdgeLeft - hardEdgeLeft, softEdgeBottom - softEdgeTop);
+            Rect softBarTop = new Rect(hardEdgeLeft, hardEdgeTop, hardEdgeRight - hardEdgeLeft, softEdgeTop - hardEdgeTop);
+            Rect softBarRight = new Rect(softEdgeRight, softEdgeTop, hardEdgeRight - softEdgeRight, softEdgeBottom - softEdgeTop);
+            Rect softBarBottom = new Rect(hardEdgeLeft, softEdgeBottom, hardEdgeRight - hardEdgeLeft, hardEdgeBottom - softEdgeBottom);
+            GUI.DrawTexture(softBarLeft, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(softBarTop, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(softBarRight, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(softBarBottom, Texture2D.whiteTexture, ScaleMode.StretchToFill);
+
+            // Draw the drag bars
+            GUI.DrawTexture(mDragBars[(int)DragBar.SoftBarLineLeft], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.SoftBarLineTop], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.SoftBarLineRight], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.SoftBarLineBottom], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+
+            GUI.color = hardBarsColour;
+            GUI.DrawTexture(mDragBars[(int)DragBar.HardBarLineLeft], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.HardBarLineTop], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.HardBarLineRight], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+            GUI.DrawTexture(mDragBars[(int)DragBar.HardBarLineBottom], Texture2D.whiteTexture, ScaleMode.StretchToFill);
+
+            GUI.matrix = oldMatrix;
+        }
+
+        // For dragging the bars - order defines precedence
+        private enum DragBar
+        {
+            Center,
+            SoftBarLineLeft, SoftBarLineTop, SoftBarLineRight, SoftBarLineBottom,
+            HardBarLineLeft, HardBarLineTop, HardBarLineRight, HardBarLineBottom,
+            NONE
+        };
+        private DragBar mDragging = DragBar.NONE;
+        private Rect[] mDragBars = new Rect[9];
+
+        private void OnGuiHandleBarDragging(float screenWidth, float screenHeight)
+        {
+            if (Event.current.type == EventType.MouseUp)
+                mDragging = DragBar.NONE;
+            if (Event.current.type == EventType.MouseDown)
+            {
+                mDragging = DragBar.NONE;
+                for (DragBar i = DragBar.Center; i < DragBar.NONE && mDragging == DragBar.NONE; ++i)
+                {
+                    Vector2 slop = new Vector2(5f, 5f);
+                    if (i == DragBar.Center)
+                    {
+                        if (mDragBars[(int)i].width > 3f * slop.x)
+                            slop.x = -slop.x;
+                        if (mDragBars[(int)i].height > 3f * slop.y)
+                            slop.y = -slop.y;
+                    }
+                    Rect r = mDragBars[(int)i].Inflated(slop);
+                    if (r.Contains(Event.current.mousePosition))
+                        mDragging = i;
+                }
+            }
+
+            if (mDragging != DragBar.NONE && Event.current.type == EventType.MouseDrag)
+            {
+                Vector2 d = new Vector2(
+                        Event.current.delta.x / screenWidth,
+                        Event.current.delta.y / screenHeight);
+
+                // First snapshot some settings
+                Rect newHard = GetHardGuide();
+                Rect newSoft = GetSoftGuide();
+                Vector2 changed = Vector2.zero;
+                switch (mDragging)
+                {
+                    case DragBar.Center: newSoft.position += d; break;
+                    case DragBar.SoftBarLineLeft: newSoft = newSoft.Inflated(new Vector2(-d.x, 0)); break;
+                    case DragBar.SoftBarLineRight: newSoft = newSoft.Inflated(new Vector2(d.x, 0)); break;
+                    case DragBar.SoftBarLineTop: newSoft = newSoft.Inflated(new Vector2(0, -d.y)); break;
+                    case DragBar.SoftBarLineBottom: newSoft = newSoft.Inflated(new Vector2(0, d.y)); break;
+                    case DragBar.HardBarLineLeft: newHard = newHard.Inflated(new Vector2(-d.x, 0)); break;
+                    case DragBar.HardBarLineRight: newHard = newHard.Inflated(new Vector2(d.x, 0)); break;
+                    case DragBar.HardBarLineBottom: newHard = newHard.Inflated(new Vector2(0, d.y)); break;
+                    case DragBar.HardBarLineTop: newHard = newHard.Inflated(new Vector2(0, -d.y)); break;
+                }
+
+                // Apply the changes, enforcing the bounds
+                SetNewBounds(GetHardGuide(), GetSoftGuide(), newHard, newSoft);
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1eb4addeb79d0e902815c2a0f9e8cb0293667d2d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2a15a1e455bcc7543872f50762449739
+timeCreated: 1502028239
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b4d4e1227f01eca5d495f3a70343690e244bbc6e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs
@@ -0,0 +1,225 @@
+using UnityEditor;
+using UnityEngine;
+using System.Collections.Generic;
+using UnityEditorInternal;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineSmoothPath))]
+    internal sealed class CinemachineSmoothPathEditor : BaseEditor<CinemachineSmoothPath>
+    {
+        private ReorderableList mWaypointList;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_Waypoints));
+            return excluded;
+        }
+
+        void OnEnable()
+        {
+            mWaypointList = null;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mWaypointList == null)
+                SetupWaypointList();
+
+            if (mWaypointList.index >= mWaypointList.count)
+                mWaypointList.index = mWaypointList.count - 1;
+
+            // Ordinary properties
+            DrawRemainingPropertiesInInspector();
+
+            // Waypoints
+            EditorGUI.BeginChangeCheck();
+            mWaypointList.DoLayoutList();
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+        }
+
+        void SetupWaypointList()
+        {
+            mWaypointList = new ReorderableList(
+                    serializedObject, FindProperty(x => x.m_Waypoints),
+                    true, true, true, true);
+
+            mWaypointList.drawHeaderCallback = (Rect rect) =>
+                { EditorGUI.LabelField(rect, "Waypoints"); };
+
+            mWaypointList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                { DrawWaypointEditor(rect, index); };
+
+            mWaypointList.onAddCallback = (ReorderableList l) =>
+                { InsertWaypointAtIndex(l.index); };
+        }
+
+        void DrawWaypointEditor(Rect rect, int index)
+        {
+            // Needed for accessing string names of fields
+            CinemachineSmoothPath.Waypoint def = new CinemachineSmoothPath.Waypoint();
+            SerializedProperty element = mWaypointList.serializedProperty.GetArrayElementAtIndex(index);
+
+            float hSpace = 3;
+            rect.width -= hSpace; rect.y += 1;
+            Vector2 numberDimension = GUI.skin.label.CalcSize(new GUIContent("999"));
+            Rect r = new Rect(rect.position, numberDimension);
+            if (GUI.Button(r, new GUIContent(index.ToString(), "Go to the waypoint in the scene view")))
+            {
+                mWaypointList.index = index;
+                SceneView.lastActiveSceneView.pivot = Target.EvaluatePosition(index);
+                SceneView.lastActiveSceneView.size = 4;
+                SceneView.lastActiveSceneView.Repaint();
+            }
+
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2f;
+            GUIContent rollLabel = new GUIContent("Roll");
+            Vector2 labelDimension = GUI.skin.label.CalcSize(rollLabel);
+            float rollWidth = labelDimension.x + floatFieldWidth;
+            r.x += r.width + hSpace; r.width = rect.width - (r.width + hSpace + rollWidth) - (r.height + hSpace);
+            EditorGUI.PropertyField(r, element.FindPropertyRelative(() => def.position), GUIContent.none);
+
+            r.x += r.width + hSpace; r.width = rollWidth;
+            float oldWidth = EditorGUIUtility.labelWidth;
+            EditorGUIUtility.labelWidth = labelDimension.x;
+            EditorGUI.PropertyField(r, element.FindPropertyRelative(() => def.roll), rollLabel);
+            EditorGUIUtility.labelWidth = oldWidth;
+
+            r.x += r.width + hSpace; r.height += 1; r.width = r.height; 
+            GUIContent setButtonContent = EditorGUIUtility.IconContent("d_RectTransform Icon");
+            setButtonContent.tooltip = "Set to scene-view camera position";
+            if (GUI.Button(r, setButtonContent, GUI.skin.label))
+            {
+                Undo.RecordObject(Target, "Set waypoint");
+                CinemachineSmoothPath.Waypoint wp = Target.m_Waypoints[index];
+                Vector3 pos = SceneView.lastActiveSceneView.camera.transform.position;
+                wp.position = Target.transform.InverseTransformPoint(pos);
+                Target.m_Waypoints[index] = wp;
+            }
+        }
+
+        void InsertWaypointAtIndex(int indexA)
+        {
+            Vector3 pos = Vector3.right;
+            float roll = 0;
+
+            // Get new values from the current indexA (if any)
+            int numWaypoints = Target.m_Waypoints.Length;
+            if (indexA < 0)
+                indexA = numWaypoints - 1;
+            if (indexA >= 0)
+            {
+                int indexB = indexA + 1;
+                if (Target.m_Looped && indexB >= numWaypoints)
+                    indexB = 0;
+                if (indexB >= numWaypoints)
+                {
+                    Vector3 delta = Vector3.right;
+                    if (indexA > 0)
+                        delta = Target.m_Waypoints[indexA].position - Target.m_Waypoints[indexA-1].position;
+                    pos = Target.m_Waypoints[indexA].position + delta;
+                    roll = Target.m_Waypoints[indexA].roll;
+                }
+                else
+                {
+                    // Interpolate
+                    pos = Target.transform.InverseTransformPoint(Target.EvaluatePosition(0.5f + indexA));
+                    roll = Mathf.Lerp(Target.m_Waypoints[indexA].roll, Target.m_Waypoints[indexB].roll, 0.5f);
+                }
+            }
+            Undo.RecordObject(Target, "Add waypoint");
+            var wp = new CinemachineSmoothPath.Waypoint();
+            wp.position = pos;
+            wp.roll = roll;
+            var list = new List<CinemachineSmoothPath.Waypoint>(Target.m_Waypoints);
+            list.Insert(indexA + 1, wp);
+            Target.m_Waypoints = list.ToArray();
+            InternalEditorUtility.RepaintAllViews();
+            mWaypointList.index = indexA + 1; // select it
+        }
+
+        void OnSceneGUI()
+        {
+            if (mWaypointList == null)
+                SetupWaypointList();
+
+            if (Tools.current == Tool.Move)
+            {
+                Matrix4x4 mOld = Handles.matrix;
+                Color colorOld = Handles.color;
+
+                Handles.matrix = Target.transform.localToWorldMatrix;
+                for (int i = 0; i < Target.m_Waypoints.Length; ++i)
+                {
+                    DrawSelectionHandle(i);
+                    if (mWaypointList.index == i)
+                        DrawPositionControl(i); // Waypoint is selected
+                }
+                Handles.color = colorOld;
+                Handles.matrix = mOld;
+            }
+        }
+
+        void DrawSelectionHandle(int i)
+        {
+            if (Event.current.button != 1)
+            {
+                Vector3 pos = Target.m_Waypoints[i].position;
+                float size = HandleUtility.GetHandleSize(pos) * 0.2f;
+                Handles.color = Color.white;
+                if (Handles.Button(pos, Quaternion.identity, size, size, Handles.SphereHandleCap)
+                    && mWaypointList.index != i)
+                {
+                    mWaypointList.index = i;
+                    InternalEditorUtility.RepaintAllViews();
+                }
+                // Label it
+                Handles.BeginGUI();
+                Vector2 labelSize = new Vector2(
+                        EditorGUIUtility.singleLineHeight * 2, EditorGUIUtility.singleLineHeight);
+                Vector2 labelPos = HandleUtility.WorldToGUIPoint(pos);
+                labelPos.y -= labelSize.y / 2;
+                labelPos.x -= labelSize.x / 2;
+                GUILayout.BeginArea(new Rect(labelPos, labelSize));
+                GUIStyle style = new GUIStyle();
+                style.normal.textColor = Color.black;
+                style.alignment = TextAnchor.MiddleCenter;
+                GUILayout.Label(new GUIContent(i.ToString(), "Waypoint " + i), style);
+                GUILayout.EndArea();
+                Handles.EndGUI();
+            }
+        }
+
+        void DrawPositionControl(int i)
+        {
+            CinemachineSmoothPath.Waypoint wp = Target.m_Waypoints[i];
+            EditorGUI.BeginChangeCheck();
+            Handles.color = Target.m_Appearance.pathColor;
+            Quaternion rotation = (Tools.pivotRotation == PivotRotation.Local)
+                ? Quaternion.identity : Quaternion.Inverse(Target.transform.rotation);
+            float size = HandleUtility.GetHandleSize(wp.position) * 0.1f;
+            Handles.SphereHandleCap(0, wp.position, rotation, size, EventType.Repaint);
+            Vector3 pos = Handles.PositionHandle(wp.position, rotation);
+            if (EditorGUI.EndChangeCheck())
+            {
+                Undo.RecordObject(target, "Move Waypoint");
+                wp.position = pos;
+                Target.m_Waypoints[i] = wp;
+                Target.InvalidateDistanceCache();
+            }
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.NotInSelectionHierarchy
+             | GizmoType.InSelectionHierarchy | GizmoType.Pickable, typeof(CinemachineSmoothPath))]
+        static void DrawGizmos(CinemachineSmoothPath path, GizmoType selectionType)
+        {
+            CinemachinePathEditor.DrawPathGizmo(path, 
+                (Selection.activeGameObject == path.gameObject)
+                ? path.m_Appearance.pathColor : path.m_Appearance.inactivePathColor);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..550b31ca66b387543de0ae54a5f3f1a54b2763da
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1123a444101eb774ba7490990b50736a
+timeCreated: 1505831686
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cab39bb155c3875b2c769c8e6fb46afcf6684943
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs
@@ -0,0 +1,444 @@
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using UnityEditor.Animations;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineStateDrivenCamera))]
+    internal sealed class CinemachineStateDrivenCameraEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineStateDrivenCamera>
+    {
+        EmbeddeAssetEditor<CinemachineBlenderSettings> m_BlendsEditor;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_CustomBlends));
+            excluded.Add(FieldPath(x => x.m_Instructions));
+            return excluded;
+        }
+
+        private UnityEditorInternal.ReorderableList mChildList;
+        private UnityEditorInternal.ReorderableList mInstructionList;
+
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            m_BlendsEditor = new EmbeddeAssetEditor<CinemachineBlenderSettings>(
+                    FieldPath(x => x.m_CustomBlends), this);
+            m_BlendsEditor.OnChanged = (CinemachineBlenderSettings b) =>
+                {
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                };
+            m_BlendsEditor.OnCreateEditor = (UnityEditor.Editor ed) =>
+                {
+                    CinemachineBlenderSettingsEditor editor = ed as CinemachineBlenderSettingsEditor;
+                    if (editor != null)
+                        editor.GetAllVirtualCameras = () => { return Target.ChildCameras; };
+                };
+            mChildList = null;
+            mInstructionList = null;
+        }
+
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            if (m_BlendsEditor != null)
+                m_BlendsEditor.OnDisable();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (mInstructionList == null)
+                SetupInstructionList();
+            if (mChildList == null)
+                SetupChildList();
+
+            if (Target.m_AnimatedTarget == null)
+                EditorGUILayout.HelpBox("An Animated Target is required", MessageType.Warning);
+
+            // Ordinary properties
+            DrawHeaderInInspector();
+            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
+            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
+            DrawPropertyInInspector(FindProperty(x => x.m_AnimatedTarget));
+
+            // Layer index
+            EditorGUI.BeginChangeCheck();
+            UpdateTargetStates();
+            UpdateCameraCandidates();
+            SerializedProperty layerProp = FindAndExcludeProperty(x => x.m_LayerIndex);
+            int currentLayer = layerProp.intValue;
+            int layerSelection = EditorGUILayout.Popup("Layer", currentLayer, mLayerNames);
+            if (currentLayer != layerSelection)
+                layerProp.intValue = layerSelection;
+            if (EditorGUI.EndChangeCheck())
+            {
+                serializedObject.ApplyModifiedProperties();
+                Target.ValidateInstructions();
+            }
+
+            DrawRemainingPropertiesInInspector();
+
+            // Blends
+            m_BlendsEditor.DrawEditorCombo(
+                "Create New Blender Asset",
+                Target.gameObject.name + " Blends", "asset", string.Empty,
+                "Custom Blends", false);
+
+            // Instructions
+            EditorGUI.BeginChangeCheck();
+            EditorGUILayout.Separator();
+            mInstructionList.DoLayoutList();
+
+            // vcam children
+            EditorGUILayout.Separator();
+            mChildList.DoLayoutList();
+            if (EditorGUI.EndChangeCheck())
+            {
+                serializedObject.ApplyModifiedProperties();
+                Target.ValidateInstructions();
+            }
+
+            // Extensions
+            DrawExtensionsWidgetInInspector();
+        }
+
+        private string[] mLayerNames;
+        private int[] mTargetStates;
+        private string[] mTargetStateNames;
+        private Dictionary<int, int> mStateIndexLookup;
+        private void UpdateTargetStates()
+        {
+            // Scrape the Animator Controller for states
+            AnimatorController ac = (Target.m_AnimatedTarget == null)
+                ? null : Target.m_AnimatedTarget.runtimeAnimatorController as AnimatorController;
+            StateCollector collector = new StateCollector();
+            collector.CollectStates(ac, Target.m_LayerIndex);
+            mTargetStates = collector.mStates.ToArray();
+            mTargetStateNames = collector.mStateNames.ToArray();
+            mStateIndexLookup = collector.mStateIndexLookup;
+
+            if (ac == null)
+                mLayerNames = new string[0];
+            else
+            {
+                mLayerNames = new string[ac.layers.Length];
+                for (int i = 0; i < ac.layers.Length; ++i)
+                    mLayerNames[i] = ac.layers[i].name;
+            }
+
+            // Create the parent map in the target
+            List<CinemachineStateDrivenCamera.ParentHash> parents
+                = new List<CinemachineStateDrivenCamera.ParentHash>();
+            foreach (var i in collector.mStateParentLookup)
+                parents.Add(new CinemachineStateDrivenCamera.ParentHash(i.Key, i.Value));
+            Target.m_ParentHash = parents.ToArray();
+        }
+
+        class StateCollector
+        {
+            public List<int> mStates;
+            public List<string> mStateNames;
+            public Dictionary<int, int> mStateIndexLookup;
+            public Dictionary<int, int> mStateParentLookup;
+
+            public void CollectStates(AnimatorController ac, int layerIndex)
+            {
+                mStates = new List<int>();
+                mStateNames = new List<string>();
+                mStateIndexLookup = new Dictionary<int, int>();
+                mStateParentLookup = new Dictionary<int, int>();
+
+                mStateIndexLookup[0] = mStates.Count;
+                mStateNames.Add("(default)");
+                mStates.Add(0);
+
+                if (ac != null && layerIndex >= 0 && layerIndex < ac.layers.Length)
+                {
+                    AnimatorStateMachine fsm = ac.layers[layerIndex].stateMachine;
+                    string name = fsm.name;
+                    int hash = Animator.StringToHash(name);
+                    CollectStatesFromFSM(fsm, name + ".", hash, string.Empty);
+                }
+            }
+
+            void CollectStatesFromFSM(
+                AnimatorStateMachine fsm, string hashPrefix, int parentHash, string displayPrefix)
+            {
+                ChildAnimatorState[] states = fsm.states;
+                for (int i = 0; i < states.Length; i++)
+                {
+                    AnimatorState state = states[i].state;
+                    int hash = AddState(hashPrefix + state.name, parentHash, displayPrefix + state.name);
+
+                    // Also process clips as pseudo-states, if more than 1 is present.
+                    // Since they don't have hashes, we can manufacture some.
+                    List<string> clips = CollectClipNames(state.motion);
+                    if (clips.Count > 1)
+                    {
+                        string substatePrefix = displayPrefix + state.name + ".";
+                        foreach (string name in clips)
+                            AddState(
+                                CinemachineStateDrivenCamera.CreateFakeHashName(hash, name),
+                                hash, substatePrefix + name);
+                    }
+                }
+
+                ChildAnimatorStateMachine[] fsmChildren = fsm.stateMachines;
+                foreach (var child in fsmChildren)
+                {
+                    string name = hashPrefix + child.stateMachine.name;
+                    string displayName = displayPrefix + child.stateMachine.name;
+                    int hash = AddState(name, parentHash, displayName);
+                    CollectStatesFromFSM(child.stateMachine, name + ".", hash, displayName + ".");
+                }
+            }
+
+            List<string> CollectClipNames(Motion motion)
+            {
+                List<string> names = new List<string>();
+                AnimationClip clip = motion as AnimationClip;
+                if (clip != null)
+                    names.Add(clip.name);
+                BlendTree tree = motion as BlendTree;
+                if (tree != null)
+                {
+                    ChildMotion[] children = tree.children;
+                    foreach (var child in children)
+                        names.AddRange(CollectClipNames(child.motion));
+                }
+                return names;
+            }
+
+            int AddState(string hashName, int parentHash, string displayName)
+            {
+                int hash = Animator.StringToHash(hashName);
+                if (parentHash != 0)
+                    mStateParentLookup[hash] = parentHash;
+                mStateIndexLookup[hash] = mStates.Count;
+                mStateNames.Add(displayName);
+                mStates.Add(hash);
+                return hash;
+            }
+        }
+
+        private int GetStateHashIndex(int stateHash)
+        {
+            if (stateHash == 0)
+                return 0;
+            if (!mStateIndexLookup.ContainsKey(stateHash))
+                return 0;
+            return mStateIndexLookup[stateHash];
+        }
+
+        private string[] mCameraCandidates;
+        private Dictionary<CinemachineVirtualCameraBase, int> mCameraIndexLookup;
+        private void UpdateCameraCandidates()
+        {
+            List<string> vcams = new List<string>();
+            mCameraIndexLookup = new Dictionary<CinemachineVirtualCameraBase, int>();
+            vcams.Add("(none)");
+            CinemachineVirtualCameraBase[] children = Target.ChildCameras;
+            foreach (var c in children)
+            {
+                mCameraIndexLookup[c] = vcams.Count;
+                vcams.Add(c.Name);
+            }
+            mCameraCandidates = vcams.ToArray();
+        }
+
+        private int GetCameraIndex(Object obj)
+        {
+            if (obj == null || mCameraIndexLookup == null)
+                return 0;
+            CinemachineVirtualCameraBase vcam = obj as CinemachineVirtualCameraBase;
+            if (vcam == null)
+                return 0;
+            if (!mCameraIndexLookup.ContainsKey(vcam))
+                return 0;
+            return mCameraIndexLookup[vcam];
+        }
+
+        void SetupInstructionList()
+        {
+            mInstructionList = new UnityEditorInternal.ReorderableList(serializedObject,
+                    serializedObject.FindProperty(() => Target.m_Instructions),
+                    true, true, true, true);
+
+            // Needed for accessing field names as strings
+            CinemachineStateDrivenCamera.Instruction def = new CinemachineStateDrivenCamera.Instruction();
+
+            float vSpace = 2;
+            float hSpace = 3;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+            float hBigSpace = EditorGUIUtility.singleLineHeight * 2 / 3;
+            mInstructionList.drawHeaderCallback = (Rect rect) =>
+                {
+                    float sharedWidth = rect.width - EditorGUIUtility.singleLineHeight 
+                        - 2 * (hBigSpace + floatFieldWidth) - hSpace;
+                    rect.x += EditorGUIUtility.singleLineHeight; rect.width = sharedWidth / 2; 
+                    EditorGUI.LabelField(rect, "State");
+
+                    rect.x += rect.width + hSpace; 
+                    EditorGUI.LabelField(rect, "Camera");
+
+                    rect.x += rect.width + hBigSpace; rect.width = floatFieldWidth;
+                    EditorGUI.LabelField(rect, "Wait");
+
+                    rect.x += rect.width + hBigSpace;
+                    EditorGUI.LabelField(rect, "Min");
+                };
+
+            mInstructionList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    SerializedProperty instProp
+                        = mInstructionList.serializedProperty.GetArrayElementAtIndex(index);
+                    float sharedWidth = rect.width - 2 * (hBigSpace + floatFieldWidth) - hSpace;
+                    rect.y += vSpace; rect.height = EditorGUIUtility.singleLineHeight;
+
+                    rect.width = sharedWidth / 2; 
+                    SerializedProperty stateSelProp = instProp.FindPropertyRelative(() => def.m_FullHash);
+                    int currentState = GetStateHashIndex(stateSelProp.intValue);
+                    int stateSelection = EditorGUI.Popup(rect, currentState, mTargetStateNames);
+                    if (currentState != stateSelection)
+                        stateSelProp.intValue = mTargetStates[stateSelection];
+
+                    rect.x += rect.width + hSpace;
+                    SerializedProperty vcamSelProp = instProp.FindPropertyRelative(() => def.m_VirtualCamera);
+                    int currentVcam = GetCameraIndex(vcamSelProp.objectReferenceValue);
+                    int vcamSelection = EditorGUI.Popup(rect, currentVcam, mCameraCandidates);
+                    if (currentVcam != vcamSelection)
+                        vcamSelProp.objectReferenceValue = (vcamSelection == 0)
+                            ? null : Target.ChildCameras[vcamSelection - 1];
+
+                    float oldWidth = EditorGUIUtility.labelWidth;
+                    EditorGUIUtility.labelWidth = hBigSpace; 
+                    
+                    rect.x += rect.width; rect.width = floatFieldWidth + hBigSpace;
+                    SerializedProperty activeAfterProp = instProp.FindPropertyRelative(() => def.m_ActivateAfter);
+                    EditorGUI.PropertyField(rect, activeAfterProp, new GUIContent(" ", activeAfterProp.tooltip));
+
+                    rect.x += rect.width;
+                    SerializedProperty minDurationProp = instProp.FindPropertyRelative(() => def.m_MinDuration);
+                    EditorGUI.PropertyField(rect, minDurationProp, new GUIContent(" ", minDurationProp.tooltip));
+    
+                    EditorGUIUtility.labelWidth = oldWidth; 
+                };
+
+            mInstructionList.onAddDropdownCallback = (Rect buttonRect, UnityEditorInternal.ReorderableList l) =>
+                {
+                    var menu = new GenericMenu();
+                    menu.AddItem(new GUIContent("New State"),
+                        false, (object data) =>
+                    {
+                        ++mInstructionList.serializedProperty.arraySize;
+                        serializedObject.ApplyModifiedProperties();
+                        Target.ValidateInstructions();
+                    },
+                        null);
+                    menu.AddItem(new GUIContent("All Unhandled States"),
+                        false, (object data) =>
+                    {
+                        CinemachineStateDrivenCamera target = Target;
+                        int len = mInstructionList.serializedProperty.arraySize;
+                        for (int i = 0; i < mTargetStates.Length; ++i)
+                        {
+                            int hash = mTargetStates[i];
+                            if (hash == 0)
+                                continue;
+                            bool alreadyThere = false;
+                            for (int j = 0; j < len; ++j)
+                            {
+                                if (target.m_Instructions[j].m_FullHash == hash)
+                                {
+                                    alreadyThere = true;
+                                    break;
+                                }
+                            }
+                            if (!alreadyThere)
+                            {
+                                int index = mInstructionList.serializedProperty.arraySize;
+                                ++mInstructionList.serializedProperty.arraySize;
+                                SerializedProperty p = mInstructionList.serializedProperty.GetArrayElementAtIndex(index);
+                                p.FindPropertyRelative(() => def.m_FullHash).intValue = hash;
+                            }
+                        }
+                        serializedObject.ApplyModifiedProperties();
+                        Target.ValidateInstructions();
+                    },
+                        null);
+                    menu.ShowAsContext();
+                };
+        }
+
+        void SetupChildList()
+        {
+            float vSpace = 2;
+            float hSpace = 3;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+            float hBigSpace = EditorGUIUtility.singleLineHeight * 2 / 3;
+
+            mChildList = new UnityEditorInternal.ReorderableList(serializedObject,
+                    serializedObject.FindProperty(() => Target.m_ChildCameras),
+                    true, true, true, true);
+
+            mChildList.drawHeaderCallback = (Rect rect) =>
+                {
+                    EditorGUI.LabelField(rect, "Virtual Camera Children");
+                    GUIContent priorityText = new GUIContent("Priority");
+                    var textDimensions = GUI.skin.label.CalcSize(priorityText);
+                    rect.x += rect.width - textDimensions.x;
+                    rect.width = textDimensions.x;
+                    EditorGUI.LabelField(rect, priorityText);
+                };
+            mChildList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    rect.y += vSpace; rect.height = EditorGUIUtility.singleLineHeight;
+                    rect.width -= floatFieldWidth + hBigSpace;
+                    SerializedProperty element = mChildList.serializedProperty.GetArrayElementAtIndex(index);
+                    EditorGUI.PropertyField(rect, element, GUIContent.none);
+
+                    float oldWidth = EditorGUIUtility.labelWidth;
+                    EditorGUIUtility.labelWidth = hBigSpace; 
+                    SerializedObject obj = new SerializedObject(element.objectReferenceValue);
+                    rect.x += rect.width + hSpace; rect.width = floatFieldWidth + hBigSpace;
+                    SerializedProperty priorityProp = obj.FindProperty(() => Target.m_Priority);
+                    EditorGUI.PropertyField(rect, priorityProp, new GUIContent(" ", priorityProp.tooltip));
+                    EditorGUIUtility.labelWidth = oldWidth; 
+                    obj.ApplyModifiedProperties();
+                };
+            mChildList.onChangedCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    if (l.index < 0 || l.index >= l.serializedProperty.arraySize)
+                        return;
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        vcam.transform.SetSiblingIndex(l.index);
+                };
+            mChildList.onAddCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    var index = l.serializedProperty.arraySize;
+                    var vcam = CinemachineMenu.CreateDefaultVirtualCamera();
+                    Undo.SetTransformParent(vcam.transform, Target.transform, "");
+                    vcam.transform.SetSiblingIndex(index);
+                };
+            mChildList.onRemoveCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    Object o = l.serializedProperty.GetArrayElementAtIndex(
+                            l.index).objectReferenceValue;
+                    CinemachineVirtualCameraBase vcam = (o != null)
+                        ? (o as CinemachineVirtualCameraBase) : null;
+                    if (vcam != null)
+                        Undo.DestroyObjectImmediate(vcam.gameObject);
+                };
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..7342b270aa9fb8638f38b7bd91f2d5c57ac4e70b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 0eb9f23cde3a1734da334cfa0831dd25
+timeCreated: 1486062933
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a10aa726d2e91c086c6f02f31499867162cf7e22
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs
@@ -0,0 +1,94 @@
+using UnityEditor;
+using UnityEngine;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineTargetGroup))]
+    internal sealed class CinemachineTargetGroupEditor : BaseEditor<CinemachineTargetGroup>
+    {
+        private UnityEditorInternal.ReorderableList mTargetList;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            excluded.Add(FieldPath(x => x.m_Targets));
+            return excluded;
+        }
+
+        void OnEnable()
+        {
+            mTargetList = null;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            DrawRemainingPropertiesInInspector();
+
+            if (mTargetList == null)
+                SetupTargetList();
+            EditorGUI.BeginChangeCheck();
+            mTargetList.DoLayoutList();
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+        }
+
+        void SetupTargetList()
+        {
+            float vSpace = 2;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 3f;
+            float hBigSpace = EditorGUIUtility.singleLineHeight * 2 / 3;
+
+            mTargetList = new UnityEditorInternal.ReorderableList(
+                    serializedObject, FindProperty(x => x.m_Targets),
+                    true, true, true, true);
+
+            // Needed for accessing field names as strings
+            CinemachineTargetGroup.Target def = new CinemachineTargetGroup.Target();
+
+            mTargetList.drawHeaderCallback = (Rect rect) =>
+                {
+                    rect.width -= EditorGUIUtility.singleLineHeight + 2 * (floatFieldWidth + hBigSpace);
+                    Vector2 pos = rect.position; pos.x += EditorGUIUtility.singleLineHeight;
+                    rect.position = pos;
+                    EditorGUI.LabelField(rect, "Target");
+
+                    pos.x += rect.width + hBigSpace; rect.width = floatFieldWidth; rect.position = pos;
+                    EditorGUI.LabelField(rect, "Weight");
+
+                    pos.x += rect.width + hBigSpace; rect.position = pos;
+                    EditorGUI.LabelField(rect, "Radius");
+                };
+
+            mTargetList.drawElementCallback
+                = (Rect rect, int index, bool isActive, bool isFocused) =>
+                {
+                    SerializedProperty elemProp = mTargetList.serializedProperty.GetArrayElementAtIndex(index);
+
+                    rect.y += vSpace;
+                    rect.height = EditorGUIUtility.singleLineHeight;
+                    Vector2 pos = rect.position;
+                    //rect.width -= hSpace + 2 * EditorGUIUtility.singleLineHeight;
+                    rect.width -= 2 * (floatFieldWidth + hBigSpace);
+                    EditorGUI.PropertyField(rect, elemProp.FindPropertyRelative(() => def.target), GUIContent.none);
+
+                    float oldWidth = EditorGUIUtility.labelWidth;
+                    EditorGUIUtility.labelWidth = EditorGUIUtility.singleLineHeight; 
+                    pos.x += rect.width; rect.width = floatFieldWidth + hBigSpace; rect.position = pos;
+                    EditorGUI.PropertyField(rect, elemProp.FindPropertyRelative(() => def.weight), new GUIContent(" "));
+                    pos.x += rect.width; rect.position = pos;
+                    EditorGUI.PropertyField(rect, elemProp.FindPropertyRelative(() => def.radius), new GUIContent(" "));
+                    EditorGUIUtility.labelWidth = oldWidth; 
+                };
+
+            mTargetList.onAddCallback = (UnityEditorInternal.ReorderableList l) =>
+                {
+                    var index = l.serializedProperty.arraySize;
+                    ++l.serializedProperty.arraySize;
+                    SerializedProperty elemProp = mTargetList.serializedProperty.GetArrayElementAtIndex(index);
+                    elemProp.FindPropertyRelative(() => def.weight).floatValue = 1;
+                };
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5c0e49bcc11d8289c61a939e0abaf2efb7e82a1e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: eb8e037cb3f873743a725427c8c22342
+timeCreated: 1496424406
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6d5738f386ea1bdd1ecf6d194930e886dcca61bf
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs
@@ -0,0 +1,60 @@
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineTrackedDolly))]
+    internal sealed class CinemachineTrackedDollyEditor : BaseEditor<CinemachineTrackedDolly>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            switch (Target.m_CameraUp)
+            {
+                default:
+                    break;
+                case CinemachineTrackedDolly.CameraUpMode.PathNoRoll:
+                case CinemachineTrackedDolly.CameraUpMode.FollowTargetNoRoll:
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTrackedDolly.CameraUpMode.Default:
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_YawDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+            }
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.m_Path == null)
+                EditorGUILayout.HelpBox("A Path is required", MessageType.Warning);
+            if (Target.m_AutoDolly.m_Enabled && Target.FollowTarget == null)
+                EditorGUILayout.HelpBox("AutoDolly requires a Follow Target", MessageType.Warning);
+            DrawRemainingPropertiesInInspector();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy, typeof(CinemachineTrackedDolly))]
+        private static void DrawTrackeDollyGizmos(CinemachineTrackedDolly target, GizmoType selectionType)
+        {
+            if (target.IsValid)
+            {
+                CinemachinePathBase path = target.m_Path;
+                if (path != null)
+                {
+                    CinemachinePathEditor.DrawPathGizmo(path, path.m_Appearance.pathColor);
+                    Vector3 pos = path.EvaluatePositionAtUnit(target.m_PathPosition, target.m_PositionUnits);
+                    Color oldColor = Gizmos.color;
+                    Gizmos.color = CinemachineCore.Instance.IsLive(target.VirtualCamera)
+                        ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
+                        : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;
+                    Gizmos.DrawLine(pos, target.transform.position);
+                    Gizmos.color = oldColor;
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4d0f07e00fcea6dbfaff9e31ab2216b3ef5ced58
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d4a408a1b506d0046875061c677944d8
+timeCreated: 1493318518
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..37dce4f249f1e5dff9553ebc8d6b4051e6025362
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs
@@ -0,0 +1,73 @@
+using UnityEngine;
+using UnityEditor;
+using System.Collections.Generic;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineTransposer))]
+    internal sealed class CinemachineTransposerEditor : BaseEditor<CinemachineTransposer>
+    {
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            List<string> excluded = base.GetExcludedPropertiesInInspector();
+            switch (Target.m_BindingMode)
+            {
+                default:
+                case CinemachineTransposer.BindingMode.LockToTarget:
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetNoRoll:
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetWithWorldUp:
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.LockToTargetOnAssign:
+                case CinemachineTransposer.BindingMode.WorldSpace:
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_YawDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+                case CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp:
+                    excluded.Add(FieldPath(x => x.m_XDamping));
+                    excluded.Add(FieldPath(x => x.m_PitchDamping));
+                    excluded.Add(FieldPath(x => x.m_YawDamping));
+                    excluded.Add(FieldPath(x => x.m_RollDamping));
+                    break;
+            }
+            return excluded;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            if (Target.FollowTarget == null)
+                EditorGUILayout.HelpBox(
+                    "Transposer requires a Follow Target.  Change Body to Do Nothing if you don't want a Follow target.",
+                    MessageType.Warning);
+            DrawRemainingPropertiesInInspector();
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.Selected, typeof(CinemachineTransposer))]
+        static void DrawTransposerGizmos(CinemachineTransposer target, GizmoType selectionType)
+        {
+            if (target.IsValid)
+            {
+                Color originalGizmoColour = Gizmos.color;
+                Gizmos.color = CinemachineCore.Instance.IsLive(target.VirtualCamera)
+                    ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour
+                    : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour;
+
+                Vector3 up = Vector3.up;
+                CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(target.VirtualCamera);
+                if (brain != null)
+                    up = brain.DefaultWorldUp;
+                Vector3 targetPos = target.FollowTarget.position;
+                Vector3 desiredPos = target.GeTargetCameraPosition(up);
+                Gizmos.DrawLine(targetPos, desiredPos);
+                Gizmos.DrawWireSphere(desiredPos, HandleUtility.GetHandleSize(desiredPos) / 20);
+                Gizmos.color = originalGizmoColour;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f057c6a29f77734234e4891cd1d69ee7eedb1d00
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f34e35dc1dc67c54c841b728548d69cc
+timeCreated: 1484088330
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e76a0add0ce7617ff9befe0f22722b78a9ac02d1
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs
@@ -0,0 +1,202 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+
+namespace Cinemachine.Editor
+{
+    /// <summary>
+    /// Base class for virtual camera editors.
+    /// Handles drawing the header and the basic properties.
+    /// </summary>
+    public class CinemachineVirtualCameraBaseEditor<T> : BaseEditor<T> where T : CinemachineVirtualCameraBase
+    {
+        static Type[] sExtensionTypes;  // First entry is null
+        static string[] sExtensionNames;
+
+        protected override List<string> GetExcludedPropertiesInInspector()
+        {
+            var excluded = base.GetExcludedPropertiesInInspector();
+            if (Target.m_ExcludedPropertiesInInspector != null)
+                excluded.AddRange(Target.m_ExcludedPropertiesInInspector);
+            return excluded;
+        }
+
+        protected virtual void OnEnable()
+        {
+            if (sExtensionTypes == null)
+            {
+                // Populate the extension list
+                List<Type> exts = new List<Type>();
+                List<string> names = new List<string>();
+                exts.Add(null);
+                names.Add("(select)");
+                var allExtensions
+                    = ReflectionHelpers.GetTypesInAllLoadedAssemblies(
+                            (Type t) => t.IsSubclassOf(typeof(CinemachineExtension)));
+                foreach (Type t in allExtensions)
+                {
+                    exts.Add(t);
+                    names.Add(t.Name);
+                }
+                sExtensionTypes = exts.ToArray();
+                sExtensionNames = names.ToArray();
+            }
+        }
+
+        protected virtual void OnDisable()
+        {
+            if (CinemachineBrain.SoloCamera == (ICinemachineCamera)Target)
+            {
+                CinemachineBrain.SoloCamera = null;
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+            }
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            DrawHeaderInInspector();
+            DrawRemainingPropertiesInInspector();
+            DrawExtensionsWidgetInInspector();
+        }
+
+        protected void DrawHeaderInInspector()
+        {
+            List<string> excluded = GetExcludedPropertiesInInspector();
+            if (!excluded.Contains("Header"))
+            {
+                DrawCameraStatusInInspector();
+                DrawGlobalControlsInInspector();
+            }
+            ExcludeProperty("Header");
+        }
+
+        protected void DrawTargetsInInspector(
+            SerializedProperty followTarget, SerializedProperty lookAtTarget)
+        {
+            List<string> excluded = GetExcludedPropertiesInInspector();
+            EditorGUI.BeginChangeCheck();
+            if (!excluded.Contains(followTarget.name))
+            {
+                if (Target.ParentCamera == null || Target.ParentCamera.Follow == null)
+                    EditorGUILayout.PropertyField(followTarget);
+                else
+                    EditorGUILayout.PropertyField(followTarget, 
+                        new GUIContent(followTarget.displayName + " Override"));
+                ExcludeProperty(followTarget.name);
+            }
+            if (!excluded.Contains(lookAtTarget.name))
+            {
+                if (Target.ParentCamera == null || Target.ParentCamera.LookAt == null)
+                    EditorGUILayout.PropertyField(lookAtTarget);
+                else
+                    EditorGUILayout.PropertyField(lookAtTarget, 
+                        new GUIContent(lookAtTarget.displayName + " Override"));
+                ExcludeProperty(lookAtTarget.name);
+            }
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+        }
+
+        protected void DrawExtensionsWidgetInInspector()
+        {
+            List<string> excluded = GetExcludedPropertiesInInspector();
+            if (!excluded.Contains("Extensions"))
+            {
+                EditorGUILayout.Space();
+                EditorGUILayout.LabelField("Extensions", EditorStyles.boldLabel);
+                Rect rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight);
+                rect = EditorGUI.PrefixLabel(rect, new GUIContent("Add Extension"));
+
+                int selection = EditorGUI.Popup(rect, 0, sExtensionNames);
+                if (selection > 0)
+                {
+                    Type extType = sExtensionTypes[selection];
+                    if (Target.GetComponent(extType) == null)
+                        Undo.AddComponent(Target.gameObject, extType);
+                }
+                ExcludeProperty("Extensions");
+            }
+        }
+
+        protected void DrawCameraStatusInInspector()
+        {
+            // Is the camera navel-gazing?
+            CameraState state = Target.State;
+            if (state.HasLookAt && (state.ReferenceLookAt - state.CorrectedPosition).AlmostZero())
+                EditorGUILayout.HelpBox(
+                    "The camera is positioned on the same point at which it is trying to look.", 
+                    MessageType.Warning);
+
+            // Active status and Solo button
+            Rect rect = EditorGUILayout.GetControlRect(true);
+            Rect rectLabel = new Rect(rect.x, rect.y, EditorGUIUtility.labelWidth, rect.height);
+            rect.width -= rectLabel.width;
+            rect.x += rectLabel.width;
+
+            Color color = GUI.color;
+            bool isSolo = (CinemachineBrain.SoloCamera == (ICinemachineCamera)Target);
+            if (isSolo)
+                GUI.color = CinemachineBrain.GetSoloGUIColor();
+
+            bool isLive = CinemachineCore.Instance.IsLive(Target);
+            GUI.enabled = isLive;
+            GUI.Label(rectLabel, isLive ? "Status: Live"
+                : (Target.isActiveAndEnabled ? "Status: Standby" : "Status: Disabled"));
+            GUI.enabled = true;
+
+            float labelWidth = 0;
+            GUIContent updateText = GUIContent.none;
+            CinemachineCore.UpdateFilter updateMode = CinemachineCore.Instance.GetVcamUpdateStatus(Target);
+            if (Application.isPlaying)
+            {
+                updateText = new GUIContent(
+                    updateMode < CinemachineCore.UpdateFilter.Late ? " Fixed Update" : " Late Update");
+                var textDimensions = GUI.skin.label.CalcSize(updateText);
+                labelWidth = textDimensions.x;
+            }
+            rect.width -= labelWidth;
+            if (GUI.Button(rect, "Solo", "Button"))
+            {
+                isSolo = !isSolo;
+                CinemachineBrain.SoloCamera = isSolo ? Target : null;
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+            }
+            GUI.color = color;
+            if (isSolo)
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+
+            if (labelWidth > 0)
+            {
+                GUI.enabled = false;
+                rect.x += rect.width; rect.width = labelWidth;
+                GUI.Label(rect, updateText);
+                GUI.enabled = true;
+            }
+        }
+
+        protected void DrawGlobalControlsInInspector()
+        {
+            CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides 
+                = EditorGUILayout.Toggle(
+                    new GUIContent(
+                        "Game Window Guides", 
+                        "Enable the display of overlays in the Game window.  You can adjust colours and opacity in Edit/Preferences/Cinemachine."), 
+                    CinemachineSettings.CinemachineCoreSettings.ShowInGameGuides);
+
+            SaveDuringPlay.SaveDuringPlay.Enabled 
+                = EditorGUILayout.Toggle(
+                    new GUIContent(
+                        "Save During Play", 
+                        "If checked, Virtual Camera settings changes made during Play Mode will be propagated back to the scene when Play Mode is exited."), 
+                    SaveDuringPlay.SaveDuringPlay.Enabled);
+
+            if (Application.isPlaying && SaveDuringPlay.SaveDuringPlay.Enabled)
+                EditorGUILayout.HelpBox(
+                    " Virtual Camera settings changes made during Play Mode will be propagated back to the scene when Play Mode is exited.", 
+                    MessageType.Info);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b7912b78cf81febc63f3cc6fd8e2fcc2d4568a98
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 211d719bb25901043833928f50e9d0ea
+timeCreated: 1506603196
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b9f6385c3dc6c30f31eff9665c3e20a40809833f
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs
@@ -0,0 +1,432 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+using System.Reflection;
+
+namespace Cinemachine.Editor
+{
+    [CustomEditor(typeof(CinemachineVirtualCamera))]
+    internal class CinemachineVirtualCameraEditor 
+        : CinemachineVirtualCameraBaseEditor<CinemachineVirtualCamera>
+    {
+        // Static state and caches - Call UpdateStaticData() to refresh this
+        struct StageData
+        {
+            string ExpandedKey { get { return "CNMCN_Core_Vcam_Expanded_" + Name; } }
+            public bool IsExpanded 
+            {
+                get { return EditorPrefs.GetBool(ExpandedKey, false); }
+                set { EditorPrefs.SetBool(ExpandedKey, value); }
+            }
+            public string Name;
+            public Type[] types;   // first entry is null
+            public GUIContent[] PopupOptions;
+        }
+        static StageData[] sStageData = null;
+
+        // Instance data - call UpdateInstanceData() to refresh this
+        int[] m_stageState = null;
+        bool[] m_stageError = null;
+        CinemachineComponentBase[] m_components;
+        UnityEditor.Editor[] m_componentEditors;
+
+        protected override void OnEnable()
+        {
+            // Build static menu arrays via reflection
+            base.OnEnable();
+            UpdateStaticData();
+        }
+
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            // Must destroy editors or we get exceptions
+            if (m_componentEditors != null)
+                foreach (UnityEditor.Editor e in m_componentEditors)
+                    if (e != null)
+                        UnityEngine.Object.DestroyImmediate(e);
+        }
+
+        Vector3 mPreviousPosition;
+        private void OnSceneGUI()
+        {
+            if (!Target.UserIsDragging)
+                mPreviousPosition = Target.transform.position;
+            if (Selection.Contains(Target.gameObject) && Tools.current == Tool.Move
+                && Event.current.type == EventType.MouseDrag)
+            {
+                // User might be dragging our position handle
+                Target.UserIsDragging = true;
+                Vector3 delta = Target.transform.position - mPreviousPosition;
+                if (!delta.AlmostZero())
+                {
+                    Undo.RegisterFullObjectHierarchyUndo(Target.gameObject, "Camera drag");
+                    Target.OnPositionDragged(delta);
+                    mPreviousPosition = Target.transform.position;
+                }
+            }
+            else if (GUIUtility.hotControl == 0 && Target.UserIsDragging)
+            {
+                // We're not dragging anything now, but we were
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                Target.UserIsDragging = false;
+            }
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            DrawHeaderInInspector();
+            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
+            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
+            DrawRemainingPropertiesInInspector();
+            DrawPipelineInInspector();
+            DrawExtensionsWidgetInInspector();
+        }
+
+        protected void DrawPipelineInInspector()
+        {
+            UpdateInstanceData();
+            foreach (CinemachineCore.Stage stage in Enum.GetValues(typeof(CinemachineCore.Stage)))
+            {
+                int index = (int)stage;
+
+                // Skip pipeline stages that have no implementations
+                if (sStageData[index].PopupOptions.Length <= 1)
+                    continue;
+
+                const float indentOffset = 6;
+
+                GUIStyle stageBoxStyle = GUI.skin.box;
+                EditorGUILayout.BeginVertical(stageBoxStyle);
+                Rect rect = EditorGUILayout.GetControlRect(true);
+
+                // Don't use PrefixLabel() because it will link the enabled status of field and label
+                GUIContent label = new GUIContent(NicifyName(stage.ToString()));
+                if (m_stageError[index])
+                    label.image = EditorGUIUtility.IconContent("console.warnicon.sml").image;
+                float labelWidth = EditorGUIUtility.labelWidth - (indentOffset + EditorGUI.indentLevel * 15);
+                Rect r = rect; r.width = labelWidth;
+                EditorGUI.LabelField(r, label);
+                r = rect; r.width -= labelWidth; r.x += labelWidth;
+                GUI.enabled = !StageIsLocked(stage);
+                int newSelection = EditorGUI.Popup(r, m_stageState[index], sStageData[index].PopupOptions);
+                GUI.enabled = true;
+
+                Type type = sStageData[index].types[newSelection];
+                if (newSelection != m_stageState[index])
+                {
+                    SetPipelineStage(stage, type);
+                    if (newSelection != 0)
+                        sStageData[index].IsExpanded = true;
+                    UpdateInstanceData(); // because we changed it
+                    return;
+                }
+                if (type != null)
+                {
+                    Rect stageRect = new Rect(
+                        rect.x - indentOffset, rect.y, rect.width + indentOffset, rect.height);
+                    sStageData[index].IsExpanded = EditorGUI.Foldout(
+                            stageRect, sStageData[index].IsExpanded, GUIContent.none);
+                    if (sStageData[index].IsExpanded)
+                    {
+                        // Make the editor for that stage
+                        UnityEditor.Editor e = GetEditorForPipelineStage(stage);
+                        if (e != null)
+                        {
+                            ++EditorGUI.indentLevel;
+                            EditorGUILayout.Separator();
+                            e.OnInspectorGUI();
+                            EditorGUILayout.Separator();
+                            --EditorGUI.indentLevel;
+                        }
+                    }
+                }
+                EditorGUILayout.EndVertical();
+            }
+        }
+
+        bool StageIsLocked(CinemachineCore.Stage stage)
+        {
+            CinemachineCore.Stage[] locked = Target.m_LockStageInInspector;
+            if (locked != null)
+                for (int i = 0; i < locked.Length; ++i)
+                    if (locked[i] == stage)
+                        return true;
+            return false;
+        }
+
+        UnityEditor.Editor GetEditorForPipelineStage(CinemachineCore.Stage stage)
+        {
+            foreach (UnityEditor.Editor e in m_componentEditors)
+            {
+                if (e != null)
+                {
+                    CinemachineComponentBase c = e.target as CinemachineComponentBase;
+                    if (c != null && c.Stage == stage)
+                        return e;
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Register with CinemachineVirtualCamera to create the pipeline in an undo-friendly manner
+        /// </summary>
+        [InitializeOnLoad]
+        class CreatePipelineWithUndo
+        {
+            static CreatePipelineWithUndo()
+            {
+                CinemachineVirtualCamera.CreatePipelineOverride =
+                    (CinemachineVirtualCamera vcam, string name, CinemachineComponentBase[] copyFrom) =>
+                    {
+                        // Create a new pipeline
+                        GameObject go =  new GameObject(name);
+                        Undo.RegisterCreatedObjectUndo(go, "created pipeline");
+                        Undo.SetTransformParent(go.transform, vcam.transform, "parenting pipeline");
+                        Undo.AddComponent<CinemachinePipeline>(go);
+
+                        // If copying, transfer the components
+                        if (copyFrom != null)
+                        {
+                            foreach (Component c in copyFrom)
+                            {
+                                Component copy = Undo.AddComponent(go, c.GetType());
+                                Undo.RecordObject(copy, "copying pipeline");
+                                ReflectionHelpers.CopyFields(c, copy);
+                            }
+                        }
+                        return go.transform;
+                    };
+                CinemachineVirtualCamera.DestroyPipelineOverride = (GameObject pipeline) =>
+                    {
+                        Undo.DestroyObjectImmediate(pipeline);
+                    };
+            }
+        }
+
+        void SetPipelineStage(CinemachineCore.Stage stage, Type type)
+        {
+            Undo.SetCurrentGroupName("Cinemachine pipeline change");
+
+            // Get the existing components
+            Transform owner = Target.GetComponentOwner();
+
+            CinemachineComponentBase[] components = owner.GetComponents<CinemachineComponentBase>();
+            if (components == null)
+                components = new CinemachineComponentBase[0];
+
+            // Find an appropriate insertion point
+            int numComponents = components.Length;
+            int insertPoint = 0;
+            for (insertPoint = 0; insertPoint < numComponents; ++insertPoint)
+                if (components[insertPoint].Stage >= stage)
+                    break;
+
+            // Remove the existing components at that stage
+            for (int i = numComponents - 1; i >= 0; --i)
+            {
+                if (components[i].Stage == stage)
+                {
+                    Undo.DestroyObjectImmediate(components[i]);
+                    components[i] = null;
+                    --numComponents;
+                    if (i < insertPoint)
+                        --insertPoint;
+                }
+            }
+
+            // Add the new stage
+            if (type != null)
+            {
+                MonoBehaviour b = Undo.AddComponent(owner.gameObject, type) as MonoBehaviour;
+                while (numComponents-- > insertPoint)
+                    UnityEditorInternal.ComponentUtility.MoveComponentDown(b);
+            }
+        }
+
+        // This code dynamically discovers eligible classes and builds the menu
+        // data for the various component pipeline stages.
+        void UpdateStaticData()
+        {
+            if (sStageData != null)
+                return;
+            sStageData = new StageData[Enum.GetValues(typeof(CinemachineCore.Stage)).Length];
+
+            var stageTypes = new List<Type>[Enum.GetValues(typeof(CinemachineCore.Stage)).Length];
+            for (int i = 0; i < stageTypes.Length; ++i)
+            {
+                sStageData[i].Name = ((CinemachineCore.Stage)i).ToString();
+                stageTypes[i] = new List<Type>();
+            }
+
+            // Get all ICinemachineComponents
+            var allTypes
+                = ReflectionHelpers.GetTypesInAllLoadedAssemblies(
+                        (Type t) => t.IsSubclassOf(typeof(CinemachineComponentBase)));
+
+            // Create a temp game object so we can instance behaviours
+            GameObject go = new GameObject("Cinemachine Temp Object");
+            go.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor;
+            foreach (Type t in allTypes)
+            {
+                MonoBehaviour b = go.AddComponent(t) as MonoBehaviour;
+                CinemachineComponentBase c = b != null ? (CinemachineComponentBase)b : null;
+                if (c != null)
+                {
+                    CinemachineCore.Stage stage = c.Stage;
+                    stageTypes[(int)stage].Add(t);
+                }
+            }
+            GameObject.DestroyImmediate(go);
+
+            // Create the static lists
+            for (int i = 0; i < stageTypes.Length; ++i)
+            {
+                stageTypes[i].Insert(0, null);  // first item is "none"
+                sStageData[i].types = stageTypes[i].ToArray();
+                GUIContent[] names = new GUIContent[sStageData[i].types.Length];
+                for (int n = 0; n < names.Length; ++n)
+                {
+                    if (n == 0)
+                    {
+                        bool useSimple
+                            = (i == (int)CinemachineCore.Stage.Aim)
+                                || (i == (int)CinemachineCore.Stage.Body);
+                        names[n] = new GUIContent((useSimple) ? "Do nothing" : "none");
+                    }
+                    else
+                        names[n] = new GUIContent(NicifyName(sStageData[i].types[n].Name));
+                }
+                sStageData[i].PopupOptions = names;
+            }
+        }
+
+        string NicifyName(string name)
+        {
+            if (name.StartsWith("Cinemachine"))
+                name = name.Substring(11); // Trim the prefix
+            return ObjectNames.NicifyVariableName(name);
+        }
+
+        void UpdateInstanceData()
+        {
+            // Invalidate the target's cache - this is to support Undo
+            Target.InvalidateComponentPipeline();
+            UpdateComponentEditors();
+            UpdateStageState(m_components);
+        }
+
+        // This code dynamically builds editors for the pipeline components.
+        // Expansion state is cached statically to preserve foldout state.
+        void UpdateComponentEditors()
+        {
+            CinemachineComponentBase[] components = Target.GetComponentPipeline();
+            int numComponents = components != null ? components.Length : 0;
+            if (m_components == null || m_components.Length != numComponents)
+                m_components = new CinemachineComponentBase[numComponents];
+            bool dirty = (numComponents == 0);
+            for (int i = 0; i < numComponents; ++i)
+            {
+                if (components[i] != m_components[i])
+                {
+                    dirty = true;
+                    m_components[i] = components[i];
+                }
+            }
+            if (dirty)
+            {
+                // Destroy the subeditors
+                if (m_componentEditors != null)
+                    foreach (UnityEditor.Editor e in m_componentEditors)
+                        if (e != null)
+                            UnityEngine.Object.DestroyImmediate(e);
+
+                // Create new editors
+                m_componentEditors = new UnityEditor.Editor[numComponents];
+                for (int i = 0; i < numComponents; ++i)
+                {
+                    MonoBehaviour b = components[i] as MonoBehaviour;
+                    if (b != null)
+                        CreateCachedEditor(b, null, ref m_componentEditors[i]);
+                }
+            }
+        }
+
+        void UpdateStageState(CinemachineComponentBase[] components)
+        {
+            m_stageState = new int[Enum.GetValues(typeof(CinemachineCore.Stage)).Length];
+            m_stageError = new bool[Enum.GetValues(typeof(CinemachineCore.Stage)).Length];
+            foreach (var c in components)
+            {
+                CinemachineCore.Stage stage = c.Stage;
+                int index = 0;
+                for (index = sStageData[(int)stage].types.Length - 1; index > 0; --index)
+                    if (sStageData[(int)stage].types[index] == c.GetType())
+                        break;
+                m_stageState[(int)stage] = index;
+                m_stageError[(int)stage] = !c.IsValid;
+            }
+        }
+
+        // Because the cinemachine components are attached to hidden objects, their
+        // gizmos don't get drawn by default.  We have to do it explicitly.
+        [InitializeOnLoad]
+        static class CollectGizmoDrawers
+        {
+            static CollectGizmoDrawers()
+            {
+                m_GizmoDrawers = new Dictionary<Type, MethodInfo>();
+                Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
+                foreach (Assembly assembly in assemblies)
+                {
+                    foreach (var type in assembly.GetTypes())
+                    {
+                        try 
+                        {
+                            bool added = false;
+                            foreach (var method in type.GetMethods(
+                                         BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
+                            {
+                                if (added)
+                                    break;
+                                if (!method.IsStatic)
+                                    continue;
+                                var attributes = method.GetCustomAttributes(typeof(DrawGizmo), true) as DrawGizmo[];
+                                foreach (var a in attributes)
+                                {
+                                    if (typeof(CinemachineComponentBase).IsAssignableFrom(a.drawnType))
+                                    {
+                                        m_GizmoDrawers.Add(a.drawnType, method);
+                                        added = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        catch (System.Exception)
+                        {
+                            // screw it
+                        }
+                    }
+                }
+            }
+            public static Dictionary<Type, MethodInfo> m_GizmoDrawers;
+        }
+
+        [DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy, typeof(CinemachineVirtualCamera))]
+        internal static void DrawVirtualCameraGizmos(CinemachineVirtualCamera vcam, GizmoType selectionType)
+        {
+            var pipeline = vcam.GetComponentPipeline();
+            foreach (var c in pipeline)
+            {
+                MethodInfo method;
+                if (CollectGizmoDrawers.m_GizmoDrawers.TryGetValue(c.GetType(), out method))
+                    method.Invoke(null, new object[] { c, selectionType });
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..397e74ced9a9fbdc9dcc704c961a20ef11061210
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a63f9f2267c36684e855add13ad5499f
+timeCreated: 1483391371
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Menus.meta b/Assets/Cinemachine/Base/Editor/Menus.meta
new file mode 100644
index 0000000000000000000000000000000000000000..18cb970651f1c83539b48a63c9e27ad4d2a21181
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Menus.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: d093acf2bada69e4bbbcf0a8b4534919
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs b/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b44faa82487dc8f2b612709f4b79887b02924a65
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs
@@ -0,0 +1,248 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.IO;
+
+namespace Cinemachine.Editor
+{
+    public static class CinemachineMenu
+    {
+        public const string kCinemachineRootMenu = "Assets/Create/Cinemachine/";
+        [MenuItem(kCinemachineRootMenu + "Blender/Settings")]
+        private static void CreateBlenderSettingAsset()
+        {
+            ScriptableObjectUtility.Create<CinemachineBlenderSettings>();
+        }
+
+        [MenuItem(kCinemachineRootMenu + "Noise/Settings")]
+        private static void CreateNoiseSettingAsset()
+        {
+            ScriptableObjectUtility.Create<NoiseSettings>();
+        }
+
+        [MenuItem("Cinemachine/Create Virtual Camera", false, 1)]
+        public static CinemachineVirtualCamera CreateVirtualCamera()
+        {
+            return InternalCreateVirtualCamera(
+                "CM vcam", true, typeof(CinemachineComposer), typeof(CinemachineTransposer));
+        }
+
+        [MenuItem("Cinemachine/Create FreeLook Camera", false, 1)]
+        private static void CreateFreeLookCamera()
+        {
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineFreeLook), "CM FreeLook"));
+            Undo.RegisterCreatedObjectUndo(go, "create FreeLook");
+            Undo.AddComponent<CinemachineFreeLook>(go);
+            Selection.activeGameObject = go;
+        }
+
+        [MenuItem("Cinemachine/Create Blend List Camera", false, 1)]
+        private static void CreateBlendListCamera()
+        {
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineBlendListCamera), "CM BlendListCamera"));
+            Undo.RegisterCreatedObjectUndo(go, "create Blend List camera");
+            var vcam = Undo.AddComponent<CinemachineBlendListCamera>(go);
+            Selection.activeGameObject = go;
+
+            // Give it a couple of children
+            var child1 = CreateDefaultVirtualCamera();
+            Undo.SetTransformParent(child1.transform, go.transform, "create BlendListCam child");
+            var child2 = CreateDefaultVirtualCamera();
+            child2.m_Lens.FieldOfView = 10;
+            Undo.SetTransformParent(child2.transform, go.transform, "create BlendListCam child");
+
+            // Set up initial instruction set
+            vcam.m_Instructions = new CinemachineBlendListCamera.Instruction[2];
+            vcam.m_Instructions[0].m_VirtualCamera = child1;
+            vcam.m_Instructions[0].m_Hold = 1f;
+            vcam.m_Instructions[1].m_VirtualCamera = child2;
+            vcam.m_Instructions[1].m_Blend.m_Style = CinemachineBlendDefinition.Style.EaseInOut;
+            vcam.m_Instructions[1].m_Blend.m_Time = 2f;
+        }
+
+        [MenuItem("Cinemachine/Create State-Driven Camera", false, 1)]
+        private static void CreateStateDivenCamera()
+        {
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineStateDrivenCamera), "CM StateDrivenCamera"));
+            Undo.RegisterCreatedObjectUndo(go, "create state driven camera");
+            Undo.AddComponent<CinemachineStateDrivenCamera>(go);
+            Selection.activeGameObject = go;
+
+            // Give it a child
+            Undo.SetTransformParent(CreateDefaultVirtualCamera().transform, go.transform, "create state driven camera");
+        }
+
+        [MenuItem("Cinemachine/Create ClearShot Camera", false, 1)]
+        private static void CreateClearShotVirtualCamera()
+        {
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineClearShot), "CM ClearShot"));
+            Undo.RegisterCreatedObjectUndo(go, "create ClearShot camera");
+            Undo.AddComponent<CinemachineClearShot>(go);
+            Selection.activeGameObject = go;
+
+            // Give it a child
+            var child = CreateDefaultVirtualCamera();
+            Undo.SetTransformParent(child.transform, go.transform, "create ClearShot camera");
+            var collider = Undo.AddComponent<CinemachineCollider>(child.gameObject);
+            collider.m_AvoidObstacles = false;
+            Undo.RecordObject(collider, "create ClearShot camera");
+        }
+
+        [MenuItem("Cinemachine/Create Dolly Camera with Track", false, 1)]
+        private static void CreateDollyCameraWithPath()
+        {
+            CinemachineVirtualCamera vcam = InternalCreateVirtualCamera(
+                    "CM vcam", true, typeof(CinemachineComposer), typeof(CinemachineTrackedDolly));
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineSmoothPath), "DollyTrack"));
+            Undo.RegisterCreatedObjectUndo(go, "create track");
+            CinemachineSmoothPath path = Undo.AddComponent<CinemachineSmoothPath>(go);
+            var dolly = vcam.GetCinemachineComponent<CinemachineTrackedDolly>();
+            Undo.RecordObject(dolly, "create track");
+            dolly.m_Path = path;
+        }
+
+        [MenuItem("Cinemachine/Create Target Group Camera", false, 1)]
+        private static void CreateTargetGroupCamera()
+        {
+            CinemachineVirtualCamera vcam = InternalCreateVirtualCamera(
+                    "CM vcam", true, typeof(CinemachineGroupComposer), typeof(CinemachineTransposer));
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineTargetGroup), "TargetGroup"),
+                    typeof(CinemachineTargetGroup));
+            Undo.RegisterCreatedObjectUndo(go, "create target group");
+            vcam.LookAt = go.transform;
+            vcam.Follow = go.transform;
+        }
+
+        [MenuItem("Cinemachine/Create Mixing Camera", false, 1)]
+        private static void CreateMixingCamera()
+        {
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineMixingCamera), "CM MixingCamera"));
+            Undo.RegisterCreatedObjectUndo(go, "create MixingCamera camera");
+            Undo.AddComponent<CinemachineMixingCamera>(go);
+            Selection.activeGameObject = go;
+
+            // Give it a couple of children
+            Undo.SetTransformParent(CreateDefaultVirtualCamera().transform, go.transform, "create MixedCamera child");
+            Undo.SetTransformParent(CreateDefaultVirtualCamera().transform, go.transform, "create MixingCamera child");
+        }
+
+        [MenuItem("Cinemachine/Create 2D Camera", false, 1)]
+        private static void Create2DCamera()
+        {
+            InternalCreateVirtualCamera("CM vcam", true, typeof(CinemachineFramingTransposer));
+        }
+
+        [MenuItem("Cinemachine/Create Dolly Track with Cart", false, 1)]
+        private static void CreateDollyTrackWithCart()
+        {
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineSmoothPath), "DollyTrack"));
+            Undo.RegisterCreatedObjectUndo(go, "create track");
+            CinemachineSmoothPath path = Undo.AddComponent<CinemachineSmoothPath>(go);
+            Selection.activeGameObject = go;
+
+            go = new GameObject(GenerateUniqueObjectName(typeof(CinemachineDollyCart), "DollyCart"));
+            Undo.RegisterCreatedObjectUndo(go, "create cart");
+            CinemachineDollyCart cart = Undo.AddComponent<CinemachineDollyCart>(go);
+            Undo.RecordObject(cart, "create track");
+            cart.m_Path = path;
+        }
+
+        [MenuItem("Cinemachine/Import Example Asset Package")]
+        private static void ImportExamplePackage()
+        {
+            string pkgFile = ScriptableObjectUtility.CinemachineInstallPath 
+                + "/CinemachineExamples.unitypackage";
+            if (!File.Exists(pkgFile))
+                Debug.LogError("Missing file " + pkgFile);
+            else
+                AssetDatabase.ImportPackage(pkgFile, true);
+        }
+
+        /// <summary>
+        /// Create a default Virtual Camera, with standard components
+        /// </summary>
+        public static CinemachineVirtualCamera CreateDefaultVirtualCamera()
+        {
+            return InternalCreateVirtualCamera(
+                "CM vcam", false, typeof(CinemachineComposer), typeof(CinemachineTransposer));
+        }
+
+        /// <summary>
+        /// Create a Virtual Camera, with components
+        /// </summary>
+        static CinemachineVirtualCamera InternalCreateVirtualCamera(
+            string name, bool selectIt, params Type[] components)
+        {
+            // Create a new virtual camera
+            CreateCameraBrainIfAbsent();
+            GameObject go = new GameObject(
+                    GenerateUniqueObjectName(typeof(CinemachineVirtualCamera), name));
+            Undo.RegisterCreatedObjectUndo(go, "create " + name);
+            CinemachineVirtualCamera vcam = Undo.AddComponent<CinemachineVirtualCamera>(go);
+            GameObject componentOwner = vcam.GetComponentOwner().gameObject;
+            foreach (Type t in components)
+                Undo.AddComponent(componentOwner, t);
+            vcam.InvalidateComponentPipeline();
+            if (selectIt)
+                Selection.activeObject = go;
+            return vcam;
+        }
+
+        /// <summary>
+        /// If there is no CinemachineBrain in the scene, try to create one on the main camera
+        /// </summary>
+        public static void CreateCameraBrainIfAbsent()
+        {
+            CinemachineBrain[] brains = UnityEngine.Object.FindObjectsOfType(
+                    typeof(CinemachineBrain)) as CinemachineBrain[];
+            if (brains == null || brains.Length == 0)
+            {
+                Camera cam = Camera.main;
+                if (cam == null)
+                {
+                    Camera[] cams = UnityEngine.Object.FindObjectsOfType(
+                            typeof(Camera)) as Camera[];
+                    if (cams != null && cams.Length > 0)
+                        cam = cams[0];
+                }
+                if (cam != null)
+                {
+                    Undo.AddComponent<CinemachineBrain>(cam.gameObject);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Generate a unique name with the given prefix by adding a suffix to it
+        /// </summary>
+        public static string GenerateUniqueObjectName(Type type, string prefix)
+        {
+            int count = 0;
+            UnityEngine.Object[] all = Resources.FindObjectsOfTypeAll(type);
+            foreach (UnityEngine.Object o in all)
+            {
+                if (o != null && o.name.StartsWith(prefix))
+                {
+                    string suffix = o.name.Substring(prefix.Length);
+                    int i;
+                    if (Int32.TryParse(suffix, out i) && i > count)
+                        count = i;
+                }
+            }
+            return prefix + (count + 1);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs.meta b/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c0ad6a70cd252eaaa71f0d6fb387c8fc1a1212f1
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 54b24e51e2a9fa242b38d80ee11f3b2d
+timeCreated: 1481654955
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers.meta
new file mode 100644
index 0000000000000000000000000000000000000000..52ced09a0786cafe39ef338094c23d351e505bf1
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 31c3ab7d86d07034eb528155d40c016b
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..17ac49de8db486c7025881330e0fc81de51701a4
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs
@@ -0,0 +1,38 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Cinemachine.Editor
+{
+    [CustomPropertyDrawer(typeof(CinemachineBlendDefinitionPropertyAttribute))]
+    public sealed  class CinemachineBlendDefinitionPropertyDrawer : PropertyDrawer
+    {
+        CinemachineBlendDefinition myClass = new CinemachineBlendDefinition(); // to access name strings
+        public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label)
+        {
+            float vSpace = 0;
+            float floatFieldWidth = EditorGUIUtility.singleLineHeight * 2.5f;
+
+            SerializedProperty timeProp = property.FindPropertyRelative(() => myClass.m_Time);
+            GUIContent timeText = new GUIContent(" sec ", timeProp.tooltip);
+            var textDimensions = GUI.skin.label.CalcSize(timeText);
+
+            rect = EditorGUI.PrefixLabel(rect, label);
+
+            rect.y += vSpace; rect.height = EditorGUIUtility.singleLineHeight;
+            rect.width -= floatFieldWidth + textDimensions.x;
+
+            SerializedProperty styleProp = property.FindPropertyRelative(() => myClass.m_Style);
+            EditorGUI.PropertyField(rect, styleProp, GUIContent.none);
+
+            if (styleProp.intValue != (int)CinemachineBlendDefinition.Style.Cut)
+            {
+                float oldWidth = EditorGUIUtility.labelWidth;
+                EditorGUIUtility.labelWidth = textDimensions.x; 
+                rect.x += rect.width; rect.width = floatFieldWidth + EditorGUIUtility.labelWidth;
+                EditorGUI.PropertyField(rect, timeProp, timeText);
+                timeProp.floatValue = Mathf.Max(timeProp.floatValue, 0);
+                EditorGUIUtility.labelWidth = oldWidth; 
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..6a00445033e15ffa4575bfcb9cdb589478d27ed2
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4a9c464b0191f7d4da1d129d97d8240b
+timeCreated: 1486510400
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5fba835d7edb4f842fb71445007f362a55502536
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs
@@ -0,0 +1,28 @@
+using UnityEngine;
+using UnityEditor;
+
+namespace Cinemachine.Editor
+{
+    [CustomPropertyDrawer(typeof(TagFieldAttribute))]
+    public sealed  class CinemachineTagFieldPropertyDrawer : PropertyDrawer
+    {
+        public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label)
+        {
+            const float hSpace = 2;
+            GUIContent clearText = new GUIContent("Clear", "Set the tag to empty");
+            var textDimensions = GUI.skin.button.CalcSize(clearText);
+
+            rect.width -= textDimensions.x + hSpace;
+            string oldValue = property.stringValue;
+            string newValue = EditorGUI.TagField(rect, label, oldValue);
+
+            rect.x += rect.width; rect.width = textDimensions.x;
+            GUI.enabled = oldValue.Length > 0;
+            if (GUI.Button(rect, clearText))
+                newValue = string.Empty;
+            GUI.enabled = true;
+            if (oldValue != newValue)
+                property.stringValue = newValue;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b2a73ab80768dc6d06016244343975953d291e0d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ed3efd28525441947b55ec9b5d68ba31
+timeCreated: 1510677929
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs b/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8893a810bcd5c96e690239a216ea0c1dae2e9dad
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs
@@ -0,0 +1 @@
+// This file is intentionally blank.
\ No newline at end of file
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..420a003e3680207681f84a862258c6791a61c3b8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e54b95371574a3144b851b0ca93ceb39
+timeCreated: 1493651850
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs b/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d1a51652d1aed9d442009d1fda4ff002b001a2be
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs
@@ -0,0 +1,61 @@
+using UnityEngine;
+using UnityEditor;
+using System.Reflection;
+
+namespace Cinemachine.Editor
+{
+    [CustomPropertyDrawer(typeof(LensSettingsPropertyAttribute))]
+    public sealed  class LensSettingsPropertyDrawer : PropertyDrawer
+    {
+        const int vSpace = 2;
+        bool mExpanded = true;
+        LensSettings def = new LensSettings(); // to access name strings
+
+        public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label)
+        {
+            float height = EditorGUIUtility.singleLineHeight;
+            rect.height = height;
+            mExpanded = EditorGUI.Foldout(rect, mExpanded, label);
+            if (mExpanded)
+            {
+                bool ortho = false;
+                PropertyInfo pi = typeof(LensSettings).GetProperty(
+                    "Orthographic", BindingFlags.NonPublic | BindingFlags.Instance);
+                if (pi != null)
+                    ortho = bool.Equals(true, pi.GetValue(GetPropertyValue(property), null));
+
+                ++EditorGUI.indentLevel;
+                rect.y += height + vSpace;
+                if (ortho)
+                    EditorGUI.PropertyField(rect, property.FindPropertyRelative(() => def.OrthographicSize));
+                else
+                    EditorGUI.PropertyField(rect, property.FindPropertyRelative(() => def.FieldOfView));
+                rect.y += height + vSpace;
+                EditorGUI.PropertyField(rect, property.FindPropertyRelative(() => def.NearClipPlane));
+                rect.y += height + vSpace;
+                EditorGUI.PropertyField(rect, property.FindPropertyRelative(() => def.FarClipPlane));
+                rect.y += height + vSpace;
+                EditorGUI.PropertyField(rect, property.FindPropertyRelative(() => def.Dutch));
+                --EditorGUI.indentLevel;
+            }
+        }
+
+        object GetPropertyValue(SerializedProperty property)
+        {
+            var targetObject = property.serializedObject.targetObject;
+            var targetObjectClassType = targetObject.GetType();
+            var field = targetObjectClassType.GetField(property.propertyPath);
+            if (field != null)
+                return field.GetValue(targetObject);
+            return null;
+        }
+
+        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+        {
+            float height = EditorGUIUtility.singleLineHeight + vSpace;
+            if (mExpanded)
+                height *= 5;
+            return height;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b57c7468902e71d91ee81e5c7148bb0b70d0623d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2449eb616c871d044adce04ac98030a6
+timeCreated: 1496951835
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs b/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8893a810bcd5c96e690239a216ea0c1dae2e9dad
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs
@@ -0,0 +1 @@
+// This file is intentionally blank.
\ No newline at end of file
diff --git a/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs.meta b/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d7747bdfea1126aa16936c94ee5007d793e02453
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9d5b46a4a3526d14080bfc4bb247664c
+timeCreated: 1493651850
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Resources.meta b/Assets/Cinemachine/Base/Editor/Resources.meta
new file mode 100644
index 0000000000000000000000000000000000000000..064aa2892a2a5fe211ad43592bbe8ac9fab7f4ea
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Resources.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 99ab3e8b62cb69145b760fc81e2d18d6
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif b/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif
new file mode 100644
index 0000000000000000000000000000000000000000..30b5272d1a4e058c4ed5d74b5ee9184d943fcd7b
Binary files /dev/null and b/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif differ
diff --git a/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif.meta b/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif.meta
new file mode 100644
index 0000000000000000000000000000000000000000..bedafe7b5c47a7600f8bc0ab61f00152727a52fe
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Resources/Cinemachine_header.tif.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 372fe04232d5ed94d8d71524616c1543
+timeCreated: 1503608963
+licenseType: Store
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png b/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png
new file mode 100644
index 0000000000000000000000000000000000000000..47f19039cdb9255631ae9ed10359e035ff08aa3a
Binary files /dev/null and b/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png differ
diff --git a/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png.meta b/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..54084a647d35856b81693d926a5265380bd2ef85
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Resources/cm_logo_sm.png.meta
@@ -0,0 +1,82 @@
+fileFormatVersion: 2
+guid: 5f2a108eb023faf43a809979fd3d38f2
+timeCreated: 1481660562
+licenseType: Store
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 1
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  - buildTarget: Standalone
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility.meta b/Assets/Cinemachine/Base/Editor/Utility.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ed020a89ea06bdc10010b928702b41303d2876b8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 29d58ccb958d24942bf23fafcec87c0b
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs b/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..88d37ff8c35ccde7f92cefd36b072b8873df2974
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs
@@ -0,0 +1,79 @@
+using UnityEditor;
+using System;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+using System.Linq.Expressions;
+
+namespace Cinemachine.Editor
+{
+    public class BaseEditor<T> : UnityEditor.Editor where T : class
+    {
+        protected T Target { get { return target as T; } }
+
+        protected SerializedProperty FindAndExcludeProperty<TValue>(Expression<Func<T, TValue>> expr)
+        {
+            SerializedProperty p = FindProperty(expr);
+            ExcludeProperty(p.name);
+            return p;
+        }
+
+        protected SerializedProperty FindProperty<TValue>(Expression<Func<T, TValue>> expr)
+        {
+            return serializedObject.FindProperty(FieldPath(expr));
+        }
+
+        protected string FieldPath<TValue>(Expression<Func<T, TValue>> expr)
+        {
+            return ReflectionHelpers.GetFieldPath(expr);
+        }
+
+        protected virtual List<string> GetExcludedPropertiesInInspector()
+        {
+            var excluded = new List<string>() { "m_Script" }; 
+            if (mAdditionalExcluded != null)
+                excluded.AddRange(mAdditionalExcluded);
+            return excluded;
+        }
+
+        List<string> mAdditionalExcluded;
+        protected void ExcludeProperty(string propertyName)
+        {
+            if (mAdditionalExcluded == null)
+                mAdditionalExcluded = new List<string>();
+            mAdditionalExcluded.Add(propertyName);
+        }
+
+        public override void OnInspectorGUI()
+        {
+            BeginInspector();
+            DrawRemainingPropertiesInInspector();
+        }
+
+        protected virtual void BeginInspector()
+        {
+            mAdditionalExcluded = null;
+            serializedObject.Update();
+        }
+
+        protected virtual void DrawPropertyInInspector(SerializedProperty p)
+        {
+            List<string> excluded = GetExcludedPropertiesInInspector();
+            if (!excluded.Contains(p.name))
+            {
+                EditorGUI.BeginChangeCheck();
+                EditorGUILayout.PropertyField(p);
+                if (EditorGUI.EndChangeCheck())
+                    serializedObject.ApplyModifiedProperties();
+                ExcludeProperty(p.name);
+            }
+        }
+
+        protected void DrawRemainingPropertiesInInspector()
+        {
+            EditorGUI.BeginChangeCheck();
+            DrawPropertiesExcluding(serializedObject, GetExcludedPropertiesInInspector().ToArray());
+            if (EditorGUI.EndChangeCheck())
+                serializedObject.ApplyModifiedProperties();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs.meta b/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2878dd7b9dacf83482173d94ba2273b9ad282505
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 15ef94834d9e4aa44ac8fe619843346b
+timeCreated: 1506620939
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs b/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ee99023cd446e70b160b20920d8747dd32346421
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs
@@ -0,0 +1,177 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+
+namespace Cinemachine.Editor
+{
+    /// <summary>
+    /// Helper for drawing embedded asset editors
+    /// </summary>
+    public class EmbeddeAssetEditor<T> where T : ScriptableObject
+    {
+        /// <summary>
+        /// Create in OnEnable()
+        /// </summary>
+        public EmbeddeAssetEditor(string propertyName, UnityEditor.Editor owner)
+        {
+            m_PropertyName = propertyName;
+            m_Owner = owner;
+            m_DoVersionControlChecks = UnityEditor.VersionControl.Provider.isActive;
+            m_CreateButtonGUIContent = new GUIContent(
+                    "Create Asset", "Create a new shared settings asset");
+        }
+
+        /// <summary>
+        /// Called after the asset editor is created, in case it needs
+        /// to be customized
+        /// </summary>
+        public OnCreateEditorDelegate OnCreateEditor;
+        public delegate void OnCreateEditorDelegate(UnityEditor.Editor editor);
+
+        /// <summary>
+        /// Called when the asset being edited was changed by the user.
+        /// </summary>
+        public OnChangedDelegate OnChanged;
+        public delegate void OnChangedDelegate(T obj);
+
+        /// <summary>
+        /// Free the resources in OnDisable()
+        /// </summary>
+        public void OnDisable()
+        {
+            DestroyEditor();
+            m_Owner = null;
+        }
+
+        /// <summary>
+        /// Customize this after creation if you want
+        /// </summary>
+        public GUIContent m_CreateButtonGUIContent;
+
+        private string m_PropertyName;
+        private UnityEditor.Editor m_Editor = null;
+        private UnityEditor.Editor m_Owner = null;
+        private bool m_DoVersionControlChecks = false;
+
+        const int kIndentOffset = 6;
+
+        /// <summary>
+        /// Call this from OnInspectorGUI.  Will draw the asset reference field, and
+        /// the embedded editor, or a Create Asset button, if no asset is set.
+        /// </summary>
+        public void DrawEditorCombo(
+            string title, string defaultName, string extension, string message,
+            string showLabel, bool indent)
+        {
+            SerializedProperty property = m_Owner.serializedObject.FindProperty(m_PropertyName);
+            if (m_Editor == null)
+                UpdateEditor();
+            if (m_Editor == null)
+                AssetFieldWithCreateButton(property, title, defaultName, extension, message);
+            else
+            {
+                EditorGUILayout.BeginVertical(GUI.skin.box);
+                Rect rect = EditorGUILayout.GetControlRect(true);
+                rect.height = EditorGUIUtility.singleLineHeight;
+                EditorGUI.BeginChangeCheck();
+                EditorGUI.PropertyField(rect, property);
+                if (EditorGUI.EndChangeCheck())
+                {
+                    m_Owner.serializedObject.ApplyModifiedProperties();
+                    UpdateEditor();
+                }
+                if (m_Editor != null)
+                {
+                    Rect foldoutRect = new Rect(
+                        rect.x - kIndentOffset, rect.y, rect.width + kIndentOffset, rect.height);
+                    property.isExpanded = EditorGUI.Foldout(
+                        foldoutRect, property.isExpanded, GUIContent.none);
+
+                    UnityEditor.VersionControl.Asset targetAsset
+                        = UnityEditor.VersionControl.Provider.GetAssetByPath(
+                                AssetDatabase.GetAssetPath(m_Editor.target));
+                    bool isLockedFile = m_DoVersionControlChecks
+                        && !targetAsset.IsOneOfStates(new[] {
+                        UnityEditor.VersionControl.Asset.States.CheckedOutLocal,
+                        UnityEditor.VersionControl.Asset.States.AddedLocal,
+                    });
+
+                    GUI.enabled = !isLockedFile;
+                    if (property.isExpanded)
+                    {
+                        EditorGUILayout.Separator();
+                        EditorGUILayout.HelpBox(
+                            "This is a shared asset.  Changes made here will apply to all users of this asset.", 
+                            MessageType.Info);
+                        EditorGUI.BeginChangeCheck();
+                        if (indent)
+                            ++EditorGUI.indentLevel;
+                        m_Editor.OnInspectorGUI();
+                        if (indent)
+                            --EditorGUI.indentLevel;
+                        if (EditorGUI.EndChangeCheck() && (OnChanged != null))
+                            OnChanged(property.objectReferenceValue as T);
+                    }
+                    GUI.enabled = true;
+                    if (isLockedFile && GUILayout.Button("Check out"))
+                    {
+                        UnityEditor.VersionControl.Provider.Checkout(
+                            targetAsset, UnityEditor.VersionControl.CheckoutMode.Both);
+                    }
+                }
+                EditorGUILayout.EndVertical();
+            }
+        }
+
+        private void AssetFieldWithCreateButton(
+            SerializedProperty property,
+            string title, string defaultName, string extension, string message)
+        {
+            EditorGUI.BeginChangeCheck();
+
+            float hSpace = 5;
+            float buttonWidth = GUI.skin.button.CalcSize(m_CreateButtonGUIContent).x;
+            Rect r = EditorGUILayout.GetControlRect(true);
+            r.width -= buttonWidth + hSpace;
+            EditorGUI.PropertyField(r, property);
+            r.x += r.width + hSpace; r.width = buttonWidth;
+            if (GUI.Button(r, m_CreateButtonGUIContent))
+            {
+                string newAssetPath = EditorUtility.SaveFilePanelInProject(
+                        title, defaultName, extension, message);
+                if (!string.IsNullOrEmpty(newAssetPath))
+                {
+                    T asset = ScriptableObjectUtility.CreateAt<T>(newAssetPath);
+                    property.objectReferenceValue = asset;
+                    m_Owner.serializedObject.ApplyModifiedProperties();
+                }
+            }
+            if (EditorGUI.EndChangeCheck())
+            {
+                m_Owner.serializedObject.ApplyModifiedProperties();
+                UpdateEditor();
+            }
+        }
+
+        public void DestroyEditor()
+        {
+            if (m_Editor != null)
+            {
+                UnityEngine.Object.DestroyImmediate(m_Editor);
+                m_Editor = null;
+            }
+        }
+
+        public void UpdateEditor()
+        {
+            DestroyEditor();
+            SerializedProperty property = m_Owner.serializedObject.FindProperty(m_PropertyName);
+            if (property.objectReferenceValue != null)
+            {
+                m_Editor = UnityEditor.Editor.CreateEditor(property.objectReferenceValue);
+                if (OnCreateEditor != null)
+                    OnCreateEditor(m_Editor);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs.meta b/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..646623ccf164e7f1337079118b7ae38ab5da2355
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d30409ab90458e5409807c8b0274ac9c
+timeCreated: 1484084529
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs b/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e298cd74d6ff3dfcbabbaffceb9d29a716e30ac0
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs
@@ -0,0 +1,529 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+
+namespace SaveDuringPlay
+{
+    /// <summary>A collection of tools for finding objects</summary>
+    public static class ObjectTreeUtil
+    {
+        /// <summary>
+        /// Get the full name of an object, travelling up the transform parents to the root.
+        /// </summary>
+        public static string GetFullName(GameObject current)
+        {
+            if (current == null)
+                return "";
+            if (current.transform.parent == null)
+                return "/" + current.name;
+            return GetFullName(current.transform.parent.gameObject) + "/" + current.name;
+        }
+
+        /// <summary>
+        /// Will find the named object, active or inactive, from the full path.
+        /// </summary>
+        public static GameObject FindObjectFromFullName(string fullName, GameObject[] roots)
+        {
+            if (fullName == null || fullName.Length == 0 || roots == null)
+                return null;
+
+            string[] path = fullName.Split('/');
+            if (path.Length < 2)   // skip leading '/'
+                return null;
+
+            Transform root = null;
+            for (int i = 0; root == null && i < roots.Length; ++i)
+                if (roots[i].name == path[1])
+                    root = roots[i].transform;
+
+            if (root == null)
+                return null;
+
+            for (int i = 2; i < path.Length; ++i)   // skip root
+            {
+                bool found = false;
+                for (int c = 0; c < root.childCount; ++c)
+                {
+                    Transform child = root.GetChild(c);
+                    if (child.name == path[i])
+                    {
+                        found = true;
+                        root = child;
+                        break;
+                    }
+                }
+                if (!found)
+                    return null;
+            }
+            return root.gameObject;
+        }
+
+        /// <summary>Finds all the root objects in a scene, active or not</summary>
+        public static GameObject[] FindAllRootObjectsInScene() 
+        {
+            return UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
+        }
+
+
+        /// <summary>
+        /// This finds all the behaviours in scene, active or inactive, excluding prefabs
+        /// </summary>
+        public static T[] FindAllBehavioursInScene<T>() where T : MonoBehaviour
+        {
+            List<T> objectsInScene = new List<T>();
+            foreach (T b in Resources.FindObjectsOfTypeAll<T>())
+            {
+                GameObject go = b.gameObject;
+                if (go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave)
+                    continue;
+                if (EditorUtility.IsPersistent(go.transform.root.gameObject))
+                    continue;
+                objectsInScene.Add(b);
+            }
+            return objectsInScene.ToArray();
+        }
+    }
+
+    class GameObjectFieldScanner
+    {
+        /// <summary>
+        /// Called for each leaf field.  Return value should be true if action was taken.
+        /// It will be propagated back to the caller.
+        /// </summary>
+        public OnLeafFieldDelegate OnLeafField;
+        public delegate bool OnLeafFieldDelegate(string fullName, Type type, ref object value);
+
+        /// <summary>
+        /// Called for each field node, if and only if OnLeafField() for it or one
+        /// of its leaves returned true.
+        /// </summary>
+        public OnFieldValueChangedDelegate OnFieldValueChanged;
+        public delegate bool OnFieldValueChangedDelegate(
+            string fullName, FieldInfo fieldInfo, object fieldOwner, object value);
+
+        /// <summary>
+        /// Called for each field, to test whether to proceed with scanning it.  Return true to scan.
+        /// </summary>
+        public FilterFieldDelegate FilterField;
+        public delegate bool FilterFieldDelegate(string fullName, FieldInfo fieldInfo);
+
+        /// <summary>
+        /// Which fields will be scanned
+        /// </summary>
+        public BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;
+
+        bool ScanFields(string fullName, Type type, ref object obj)
+        {
+            bool doneSomething = false;
+
+            // Check if it's a complex type
+            bool isLeaf = true;
+            if (obj != null
+                && !type.IsSubclassOf(typeof(Component))
+                && !type.IsSubclassOf(typeof(GameObject)))
+            {
+                // Is it an array?
+                if (type.IsArray)
+                {
+                    isLeaf = false;
+                    Array array = obj as Array;
+                    object arrayLength = array.Length;
+                    if (OnLeafField != null && OnLeafField(
+                            fullName + ".Length", arrayLength.GetType(), ref arrayLength))
+                    {
+                        Array newArray = Array.CreateInstance(
+                                array.GetType().GetElementType(), Convert.ToInt32(arrayLength));
+                        Array.Copy(array, 0, newArray, 0, Math.Min(array.Length, newArray.Length));
+                        array = newArray;
+                        doneSomething = true;
+                    }
+                    for (int i = 0; i < array.Length; ++i)
+                    {
+                        object element = array.GetValue(i);
+                        if (ScanFields(fullName + "[" + i + "]", array.GetType().GetElementType(), ref element))
+                        {
+                            array.SetValue(element, i);
+                            doneSomething = true;
+                        }
+                    }
+                    if (doneSomething)
+                        obj = array;
+                }
+                else
+                {
+                    // Check if it's a complex type
+                    FieldInfo[] fields = obj.GetType().GetFields(bindingFlags);
+                    if (fields.Length > 0)
+                    {
+                        isLeaf = false;
+                        for (int i = 0; i < fields.Length; ++i)
+                        {
+                            string name = fullName + "." + fields[i].Name;
+                            if (FilterField == null || FilterField(name, fields[i]))
+                            {
+                                object fieldValue = fields[i].GetValue(obj);
+                                if (ScanFields(name, fields[i].FieldType, ref fieldValue))
+                                {
+                                    doneSomething = true;
+                                    if (OnFieldValueChanged != null)
+                                        OnFieldValueChanged(name, fields[i], obj, fieldValue);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            // If it's a leaf field then call the leaf handler
+            if (isLeaf && OnLeafField != null)
+                if (OnLeafField(fullName, type, ref obj))
+                    doneSomething = true;
+
+            return doneSomething;
+        }
+
+        public bool ScanFields(string fullName, MonoBehaviour b)
+        {
+            bool doneSomething = false;
+            FieldInfo[] fields = b.GetType().GetFields(bindingFlags);
+            if (fields.Length > 0)
+            {
+                for (int i = 0; i < fields.Length; ++i)
+                {
+                    string name = fullName + "." + fields[i].Name;
+                    if (FilterField == null || FilterField(name, fields[i]))
+                    {
+                        object fieldValue = fields[i].GetValue(b);
+                        if (ScanFields(name, fields[i].FieldType, ref fieldValue))
+                            doneSomething = true;
+
+                        // If leaf action was taken, propagate it up to the parent node
+                        if (doneSomething && OnFieldValueChanged != null)
+                            OnFieldValueChanged(fullName, fields[i], b, fieldValue);
+                    }
+                }
+            }
+            return doneSomething;
+        }
+
+        /// <summary>
+        /// Recursively scan the MonoBehaviours of a GameObject and its children.
+        /// For each leaf field found, call the OnFieldValue delegate.
+        /// </summary>
+        public bool ScanFields(GameObject go, string prefix = null)
+        {
+            bool doneSomething = false;
+            if (prefix == null)
+                prefix = "";
+            else if (prefix.Length > 0)
+                prefix += ".";
+
+            MonoBehaviour[] components = go.GetComponents<MonoBehaviour>();
+            for (int i = 0; i < components.Length; ++i)
+            {
+                MonoBehaviour c = components[i];
+                if (c != null && ScanFields(prefix + c.GetType().FullName + i, c))
+                    doneSomething = true;
+            }
+            return doneSomething;
+        }
+    };
+
+
+    /// <summary>
+    /// Using reflection, this class scans a GameObject (and optionally its children)
+    /// and records all the field settings.  This only works for "nice" field settings
+    /// within MonoBehaviours.  Changes to the behaviour stack made between saving
+    /// and restoring will fool this class.
+    /// </summary>
+    class ObjectStateSaver
+    {
+        string mObjectFullPath;
+
+        Dictionary<string, string> mValues = new Dictionary<string, string>();
+
+        /// <summary>
+        /// Recursively collect all the field values in the MonoBehaviours
+        /// owned by this object and its descendants.  The values are stored
+        /// in an internal dictionary.
+        /// </summary>
+        public void CollectFieldValues(GameObject go)
+        {
+            mObjectFullPath = ObjectTreeUtil.GetFullName(go);
+            GameObjectFieldScanner scanner = new GameObjectFieldScanner();
+            scanner.FilterField = FilterField;
+            scanner.OnLeafField = (string fullName, Type type, ref object value) =>
+                {
+                    // Save the value in the dictionary
+                    mValues[fullName] = StringFromLeafObject(value);
+                    //Debug.Log(mObjectFullPath + "." + fullName + " = " + mValues[fullName]);
+                    return false;
+                };
+            scanner.ScanFields(go);
+        }
+
+        public GameObject FindSavedGameObject(GameObject[] roots) 
+        { 
+            return ObjectTreeUtil.FindObjectFromFullName(mObjectFullPath, roots);
+        }
+        public string ObjetFullPath { get { return mObjectFullPath; } }
+
+        /// <summary>
+        /// Recursively scan the MonoBehaviours of a GameObject and its children.
+        /// For each field found, look up its value in the internal dictionary.
+        /// If it's present and its value in the dictionary differs from the actual
+        /// value in the game object, Set the GameObject's value using the value
+        /// recorded in the dictionary.
+        /// </summary>
+        public bool PutFieldValues(GameObject go, GameObject[] roots)
+        {
+            GameObjectFieldScanner scanner = new GameObjectFieldScanner();
+            scanner.FilterField = FilterField;
+            scanner.OnLeafField = (string fullName, Type type, ref object value) =>
+                {
+                    // Lookup the value in the dictionary
+                    string savedValue;
+                    if (mValues.TryGetValue(fullName, out savedValue)
+                        && StringFromLeafObject(value) != savedValue)
+                    {
+                        //Debug.Log(mObjectFullPath + "." + fullName + " = " + mValues[fullName]);
+                        value = LeafObjectFromString(type, mValues[fullName].Trim(), roots);
+                        return true; // changed
+                    }
+                    return false;
+                };
+            scanner.OnFieldValueChanged = (fullName, fieldInfo, fieldOwner, value) =>
+                {
+                    fieldInfo.SetValue(fieldOwner, value);
+                    return true;
+                };
+            return scanner.ScanFields(go);
+        }
+
+        /// Ignore fields marked with the [NoSaveDuringPlay] attribute
+        bool FilterField(string fullName, FieldInfo fieldInfo)
+        {
+            var attrs = fieldInfo.GetCustomAttributes(false);
+            foreach (var attr in attrs)
+                if (attr.GetType().Name.Contains("NoSaveDuringPlay"))
+                    return false;
+            return true;
+        }
+
+        /// <summary>
+        /// Parse a string to generate an object.
+        /// Only very limited primitive object types are supported.
+        /// Enums, Vectors and most other structures are automatically supported,
+        /// because the reflection system breaks them down into their primitive components.
+        /// You can add more support here, as needed.
+        /// </summary>
+        static object LeafObjectFromString(Type type, string value, GameObject[] roots)
+        {
+            if (type == typeof(Single))
+                return float.Parse(value);
+            if (type == typeof(Double))
+                return double.Parse(value);
+            if (type == typeof(Boolean))
+                return Boolean.Parse(value);
+            if (type == typeof(string))
+                return value;
+            if (type == typeof(Int32))
+                return Int32.Parse(value);
+            if (type == typeof(UInt32))
+                return UInt32.Parse(value);
+            if (type.IsSubclassOf(typeof(Component)))
+            {
+                // Try to find the named game object
+                GameObject go = ObjectTreeUtil.FindObjectFromFullName(value, roots);
+                return (go != null) ? go.GetComponent(type) : null;
+            }
+            if (type.IsSubclassOf(typeof(GameObject)))
+            {
+                // Try to find the named game object
+                return GameObject.Find(value);
+            }
+            return null;
+        }
+
+        static string StringFromLeafObject(object obj)
+        {
+            if (obj == null)
+                return string.Empty;
+
+            if (obj.GetType().IsSubclassOf(typeof(Component)))
+            {
+                Component c = (Component)obj;
+                if (c == null) // Component overrides the == operator, so we have to check
+                    return string.Empty;
+                return ObjectTreeUtil.GetFullName(c.gameObject);
+            }
+            if (obj.GetType().IsSubclassOf(typeof(GameObject)))
+            {
+                GameObject go = (GameObject)obj;
+                if (go == null) // GameObject overrides the == operator, so we have to check
+                    return string.Empty;
+                return ObjectTreeUtil.GetFullName(go);
+            }
+            return obj.ToString();
+        }
+    };
+
+
+    /// <summary>
+    /// For all registered object types, record their state when exiting Play Mode,
+    /// and restore that state to the objects in the scene.  This is a very limited
+    /// implementation which has not been rigorously tested with many objects types.
+    /// It's quite possible that not everything will be saved.
+    ///
+    /// This class is expected to become obsolete when Unity implements this functionality
+    /// in a more general way.
+    ///
+    /// To use this class,
+    /// drop this script into your project, and add the [SaveDuringPlay] attribute to your class.
+    ///
+    /// Note: if you want some specific field in your class NOT to be saved during play,
+    /// add a property attribute whose class name contains the string "NoSaveDuringPlay"
+    /// and the field will not be saved.
+    /// </summary>
+    [InitializeOnLoad]
+    public class SaveDuringPlay
+    {
+        public static string kEnabledKey = "SaveDuringPlay_Enabled";
+        public static bool Enabled
+        {
+            get { return EditorPrefs.GetBool(kEnabledKey, false); }
+            set
+            {
+                if (value != Enabled)
+                {
+                    EditorPrefs.SetBool(kEnabledKey, value);
+                }
+            }
+        }
+
+        static SaveDuringPlay()
+        {
+            // Install our callbacks
+#if UNITY_2017_2_OR_NEWER
+            EditorApplication.playModeStateChanged += OnPlayStateChanged;
+#else
+            EditorApplication.update += OnEditorUpdate;
+            EditorApplication.playmodeStateChanged += OnPlayStateChanged;
+#endif
+        }
+
+#if UNITY_2017_2_OR_NEWER
+        static void OnPlayStateChanged(PlayModeStateChange pmsc)
+        {
+            if (Enabled)
+            {
+                // If exiting playmode, collect the state of all interesting objects
+                if (pmsc == PlayModeStateChange.ExitingPlayMode)
+                    SaveAllInterestingStates();
+                else if (pmsc == PlayModeStateChange.EnteredEditMode && sSavedStates != null)
+                    RestoreAllInterestingStates();
+            }
+        }
+#else
+        static void OnPlayStateChanged()
+        {
+            // If exiting playmode, collect the state of all interesting objects
+            if (Enabled)
+            {
+                if (!EditorApplication.isPlayingOrWillChangePlaymode && EditorApplication.isPlaying)
+                    SaveAllInterestingStates();
+            }
+        }
+
+        static float sWaitStartTime = 0;
+        static void OnEditorUpdate()
+        {
+            if (Enabled && sSavedStates != null && !Application.isPlaying)
+            {
+                // Wait a bit for things to settle before applying the saved state
+                const float WaitTime = 1f; // GML todo: is there a better way to do this?
+                float time = Time.realtimeSinceStartup;
+                if (sWaitStartTime == 0)
+                    sWaitStartTime = time;
+                else if (time - sWaitStartTime > WaitTime)
+                {
+                    RestoreAllInterestingStates();
+                    sWaitStartTime = 0;
+                }
+            }
+        }
+#endif
+
+        /// <summary>
+        /// If you need to get notified before state is collected for hotsave, this is the place
+        /// </summary>
+        public static OnHotSaveDelegate OnHotSave;
+        public delegate void OnHotSaveDelegate();
+
+        /// Collect all relevant objects, active or not
+        static Transform[] FindInterestingObjects()
+        {
+            List<Transform> objects = new List<Transform>();
+            MonoBehaviour[] everything = ObjectTreeUtil.FindAllBehavioursInScene<MonoBehaviour>();
+            foreach (var b in everything)
+            {
+                var attrs = b.GetType().GetCustomAttributes(true);
+                foreach (var attr in attrs)
+                {
+                    if (attr.GetType().Name.Contains("SaveDuringPlay"))
+                    {
+                        //Debug.Log("Found " + ObjectTreeUtil.GetFullName(b.gameObject) + " for hot-save"); 
+                        objects.Add(b.transform);
+                        break;
+                    }
+                }
+            }
+            return objects.ToArray();
+        }
+
+        static List<ObjectStateSaver> sSavedStates = null;
+        static GameObject sSaveStatesGameObject;
+        static void SaveAllInterestingStates()
+        {
+            //Debug.Log("Exiting play mode: Saving state for all interesting objects");
+            if (OnHotSave != null)
+                OnHotSave();
+
+            sSavedStates = new List<ObjectStateSaver>();
+            Transform[] objects = FindInterestingObjects();
+            foreach (Transform obj in objects)
+            {
+                ObjectStateSaver saver = new ObjectStateSaver();
+                saver.CollectFieldValues(obj.gameObject);
+                sSavedStates.Add(saver);
+            }
+            if (sSavedStates.Count == 0)
+                sSavedStates = null;
+        }
+
+        static void RestoreAllInterestingStates()
+        {
+            //Debug.Log("Updating state for all interesting objects");
+            bool dirty = false;
+            GameObject[] roots = ObjectTreeUtil.FindAllRootObjectsInScene();
+            foreach (ObjectStateSaver saver in sSavedStates)
+            {
+                GameObject go = saver.FindSavedGameObject(roots);
+                if (go != null)
+                {
+                    Undo.RegisterFullObjectHierarchyUndo(go, "SaveDuringPlay");
+                    if (saver.PutFieldValues(go, roots))
+                    {
+                        //Debug.Log("SaveDuringPlay: updated settings of " + saver.ObjetFullPath);
+                        EditorUtility.SetDirty(go);
+                        dirty = true;
+                    }
+                }
+            }
+            if (dirty)
+                UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+            sSavedStates = null;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs.meta b/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..dd546306f0dc37d895d098a20668eb90e08be122
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 24ec24775a1b45e4ea81ac13002dee32
+timeCreated: 1485895820
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs b/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs
new file mode 100644
index 0000000000000000000000000000000000000000..88dac2c92be310fddfb2f278272b7cb106d84cdd
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs
@@ -0,0 +1,160 @@
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+using System.Linq;
+using System;
+
+namespace Cinemachine.Editor
+{
+    public class ScriptableObjectUtility : ScriptableObject
+    {
+        public static string CinemachineInstallPath
+        {
+            get { return Path.GetFullPath(CinemachineInstallAssetPath); }
+        }
+
+        public static string CinemachineInstallAssetPath
+        {
+            get
+            {
+                ScriptableObject dummy = ScriptableObject.CreateInstance<ScriptableObjectUtility>();
+                string path = AssetDatabase.GetAssetPath(MonoScript.FromScriptableObject(dummy));
+                DestroyImmediate(dummy);
+                path = path.Substring(0, path.LastIndexOf("/Base"));
+                return path;
+            }
+        }
+
+        public static bool CinemachineIsPackage 
+        { 
+            get { return CinemachineInstallAssetPath.StartsWith("Packages"); } 
+        }
+
+        public static bool AddDefineForAllBuildTargets(string k_Define)
+        {
+            bool added = false;
+            var targets = Enum.GetValues(typeof(BuildTargetGroup))
+                .Cast<BuildTargetGroup>()
+                .Where(x => x != BuildTargetGroup.Unknown)
+                .Where(x => !BuildTargetIsObsolete(x));
+
+            foreach (var target in targets)
+            {
+                var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(target).Trim();
+
+                var list = defines.Split(';', ' ')
+                    .Where(x => !string.IsNullOrEmpty(x))
+                    .ToList();
+
+                if (!list.Contains(k_Define))
+                {
+                    list.Add(k_Define);
+                    defines = list.Aggregate((a, b) => a + ";" + b);
+
+                    PlayerSettings.SetScriptingDefineSymbolsForGroup(target, defines);
+                    added = true;
+                }
+            }
+            return added;
+        }
+
+        static bool BuildTargetIsObsolete(BuildTargetGroup group)
+        {
+            var attrs = typeof(BuildTargetGroup)
+                .GetField(group.ToString())
+                .GetCustomAttributes(typeof(ObsoleteAttribute), false);
+
+            return attrs != null && attrs.Length > 0;
+        }
+
+        public static void Create<T>(bool prependFolderName = false, bool trimName = true) where T : ScriptableObject
+        {
+            string className = typeof(T).Name;
+            string assetName = className;
+            string folder = GetSelectedAssetFolder();
+
+            if (trimName)
+            {
+                string[] standardNames = new string[] { "Asset", "Attributes", "Container" };
+                foreach (string standardName in standardNames)
+                {
+                    assetName = assetName.Replace(standardName, "");
+                }
+            }
+
+            if (prependFolderName)
+            {
+                string folderName = Path.GetFileName(folder);
+                assetName = (string.IsNullOrEmpty(assetName) ? folderName : string.Format("{0}_{1}", folderName, assetName));
+            }
+
+            Create(className, assetName, folder);
+        }
+
+        public static T CreateAt<T>(string assetPath) where T : ScriptableObject
+        {
+            T asset = ScriptableObject.CreateInstance<T>();
+            if (asset == null)
+            {
+                Debug.LogError("failed to create instance of " + typeof(T).Name);
+                return null;
+            }
+
+            AssetDatabase.CreateAsset(asset, assetPath);
+
+            return asset;
+        }
+
+        private static ScriptableObject Create(string className, string assetName, string folder)
+        {
+            ScriptableObject asset = ScriptableObject.CreateInstance(className);
+            if (asset == null)
+            {
+                Debug.LogError("failed to create instance of " + className);
+                return null;
+            }
+
+            asset.name = assetName ?? className;
+
+            string assetPath = GetUnusedAssetPath(folder, asset.name);
+            AssetDatabase.CreateAsset(asset, assetPath);
+
+            return asset;
+        }
+
+        private static string GetSelectedAssetFolder()
+        {
+            if ((Selection.activeObject != null) && AssetDatabase.Contains(Selection.activeObject))
+            {
+                string assetPath = AssetDatabase.GetAssetPath(Selection.activeObject);
+                string assetPathAbsolute = string.Format("{0}/{1}", Path.GetDirectoryName(Application.dataPath), assetPath);
+
+                if (Directory.Exists(assetPathAbsolute))
+                {
+                    return assetPath;
+                }
+                else
+                {
+                    return Path.GetDirectoryName(assetPath);
+                }
+            }
+
+            return "Assets";
+        }
+
+        private static string GetUnusedAssetPath(string folder, string assetName)
+        {
+            for (int n = 0; n < 9999; n++)
+            {
+                string assetPath = string.Format("{0}/{1}{2}.asset", folder, assetName, (n == 0 ? "" : n.ToString()));
+                string existingGUID = AssetDatabase.AssetPathToGUID(assetPath);
+                if (string.IsNullOrEmpty(existingGUID))
+                {
+                    return assetPath;
+                }
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs.meta b/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..13a3dc41511648d27a2f6b93fcb835f6041b5124
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ba59c38a116ff2f4fb69f825ba0da3bc
+timeCreated: 1481654957
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs b/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e93253e2856c80527610a76da58fd41dfbea9987
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Linq.Expressions;
+using UnityEditor;
+
+namespace Cinemachine.Editor
+{
+    public static class SerializedPropertyHelper
+    {
+        /// This is a way to get a field name string in such a manner that the compiler will
+        /// generate errors for invalid fields.  Much better than directly using strings.
+        /// Usage: instead of
+        /// <example>
+        /// "m_MyField";
+        /// </example>
+        /// do this:
+        /// <example>
+        /// MyClass myclass = null;
+        /// SerializedPropertyHelper.PropertyName( () => myClass.m_MyField);
+        /// </example>
+        public static string PropertyName(Expression<Func<object>> exp)
+        {
+            var body = exp.Body as MemberExpression;
+            if (body == null)
+            {
+                var ubody = (UnaryExpression)exp.Body;
+                body = ubody.Operand as MemberExpression;
+            }
+            return body.Member.Name;
+        }
+
+        /// Usage: instead of
+        /// <example>
+        /// mySerializedObject.FindProperty("m_MyField");
+        /// </example>
+        /// do this:
+        /// <example>
+        /// MyClass myclass = null;
+        /// mySerializedObject.FindProperty( () => myClass.m_MyField);
+        /// </example>
+        public static SerializedProperty FindProperty(this SerializedObject obj, Expression<Func<object>> exp)
+        {
+            return obj.FindProperty(PropertyName(exp));
+        }
+
+        /// Usage: instead of
+        /// <example>
+        /// mySerializedProperty.FindPropertyRelative("m_MyField");
+        /// </example>
+        /// do this:
+        /// <example>
+        /// MyClass myclass = null;
+        /// mySerializedProperty.FindPropertyRelative( () => myClass.m_MyField);
+        /// </example>
+        public static SerializedProperty FindPropertyRelative(this SerializedProperty obj, Expression<Func<object>> exp)
+        {
+            return obj.FindPropertyRelative(PropertyName(exp));
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs.meta b/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..3416613d4d24799c3035000ebfed505a7d70d96c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a60d9407e2bb20e4ea00281b1e33eae7
+timeCreated: 1488400542
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Windows.meta b/Assets/Cinemachine/Base/Editor/Windows.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a6c112d30ec04c380934fea7e31a66bef9534a93
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 9c644b247df49ee47957d373411a85c3
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs b/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5d43c02040d8da394bd97b58c03b6f3a05129fbb
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs
@@ -0,0 +1,149 @@
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+
+namespace Cinemachine.Editor
+{
+    [InitializeOnLoad]
+    public class AboutWindow : EditorWindow
+    {
+        private const string kLastVersionOpened = "CNMCN_Last_Version_Loaded";
+        private const string kInvalidVersionNumber = "0.0";
+
+        private static readonly Vector2 kMinWindowSize = new Vector2(550f, 550f);
+
+        private static string LastVersionLoaded
+        {
+            get { return EditorPrefs.GetString(kLastVersionOpened, kInvalidVersionNumber); }
+            set { EditorPrefs.SetString(kLastVersionOpened, value); }
+        }
+
+        private GUIStyle mButtonStyle;
+        private GUIStyle mLabelStyle;
+        private GUIStyle mHeaderStyle;
+        private GUIStyle mNotesStyle;
+        private Vector2 mReleaseNoteScrollPos = Vector2.zero;
+
+        string mReleaseNotes;
+
+        private void OnEnable()
+        {
+            string path = ScriptableObjectUtility.CinemachineInstallPath + "/ReleaseNotes.txt";
+            try
+            {
+                StreamReader reader = new StreamReader(path); 
+                mReleaseNotes = reader.ReadToEnd();
+                reader.Close();
+            }
+            catch (System.Exception)
+            {
+                mReleaseNotes = path + " not found";
+            }
+        }
+
+        private void OnGUI()
+        {
+            if (EditorApplication.isCompiling)
+            {
+                Close();
+            }
+
+            if (mButtonStyle == null)
+            {
+                mButtonStyle = new GUIStyle(GUI.skin.button);
+                mButtonStyle.richText = true;
+            }
+
+            if (mLabelStyle == null)
+            {
+                mLabelStyle = new GUIStyle(EditorStyles.label);
+                mLabelStyle.wordWrap = true;
+                mLabelStyle.richText = true;
+            }
+
+            if (mHeaderStyle == null)
+            {
+                mHeaderStyle = new GUIStyle(EditorStyles.boldLabel);
+                mHeaderStyle.wordWrap = true;
+            }
+
+            if (mNotesStyle == null)
+            {
+                mNotesStyle = new GUIStyle(EditorStyles.textArea);
+                mNotesStyle.richText = true;
+                mNotesStyle.wordWrap = true;
+            }
+
+            using (var vertScope = new EditorGUILayout.VerticalScope())
+            {
+                if (CinemachineSettings.CinemachineHeader != null)
+                {
+                    float headerWidth = position.width;
+                    float aspectRatio = (float)CinemachineSettings.CinemachineHeader.height / (float)CinemachineSettings.CinemachineHeader.width;
+                    GUILayout.BeginScrollView(Vector2.zero, false, false, GUILayout.Width(headerWidth), GUILayout.Height(headerWidth * aspectRatio));
+                    Rect texRect = new Rect(0f, 0f, headerWidth, headerWidth * aspectRatio);
+
+                    GUILayout.FlexibleSpace();
+                    GUILayout.BeginArea(texRect);
+                    GUI.DrawTexture(texRect, CinemachineSettings.CinemachineHeader, ScaleMode.ScaleToFit);
+                    GUILayout.EndArea();
+                    GUILayout.FlexibleSpace();
+
+                    GUILayout.EndScrollView();
+                }
+
+                EditorGUILayout.LabelField("Welcome to Cinemachine!", mLabelStyle);
+                EditorGUILayout.LabelField("Smart camera tools for passionate creators.", mLabelStyle);
+                EditorGUILayout.LabelField("Below are links to the forums, please reach out if you have any questions or feedback", mLabelStyle);
+
+                if (GUILayout.Button("<b>Forum</b>\n<i>Discuss</i>", mButtonStyle))
+                {
+                    Application.OpenURL("https://forum.unity3d.com/forums/cinemachine.136/");
+                }
+
+                if (GUILayout.Button("<b>Rate it!</b>\nUnity Asset Store", mButtonStyle))
+                {
+                    Application.OpenURL("https://www.assetstore.unity3d.com/en/#!/content/79898");
+                }
+
+                if (GUILayout.Button("<b>Documentation</b>\nRead it", mButtonStyle))
+                {
+                    string filename = ScriptableObjectUtility.CinemachineInstallPath 
+                        + "/CINEMACHINE_install.pdf";
+                    if (!File.Exists(filename))
+                        Debug.LogError("Missing file " + filename);
+                    Application.OpenURL("file://" + filename);
+                }
+            }
+
+            EditorGUILayout.LabelField("Release Notes", mHeaderStyle);
+            using (var scrollScope = new EditorGUILayout.ScrollViewScope(mReleaseNoteScrollPos, GUI.skin.box))
+            {
+                mReleaseNoteScrollPos = scrollScope.scrollPosition;
+                EditorGUILayout.LabelField(mReleaseNotes, mNotesStyle);
+            }
+        }
+
+        [MenuItem("Cinemachine/About")]
+        private static void OpenWindow()
+        {
+            EditorApplication.update += ShowWindowDeferred;
+        }
+
+        private static void ShowWindowDeferred()
+        {
+            string loadedVersion = LastVersionLoaded;
+            if (loadedVersion != CinemachineCore.kVersionString)
+                LastVersionLoaded = CinemachineCore.kVersionString;
+
+            AboutWindow window = EditorWindow.GetWindow<AboutWindow>();
+
+            window.titleContent = new UnityEngine.GUIContent(
+                "About", CinemachineSettings.CinemachineLogoTexture);
+            window.minSize = kMinWindowSize;
+            window.Show(true);
+
+            EditorApplication.update -= ShowWindowDeferred;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs.meta b/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..704a05e1b26d3ce8d7d0eb1d06257fe26c036abc
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 829e606f890b35c47aa29643517add2e
+timeCreated: 1481654956
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs b/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4cc881a0eca405de67353508e49df086d60415e2
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs
@@ -0,0 +1,85 @@
+using UnityEngine;
+using UnityEditor;
+
+using Cinemachine.Editor;
+
+namespace Cinemachine
+{
+    [InitializeOnLoad]
+    internal static class CinemachineColliderPrefs
+    {
+        private static bool SettingsFoldedOut
+        {
+            get { return EditorPrefs.GetBool(kColliderSettingsFoldoutKey, false); }
+            set
+            {
+                if (value != SettingsFoldedOut)
+                {
+                    EditorPrefs.SetBool(kColliderSettingsFoldoutKey, value);
+                }
+            }
+        }
+
+        public static Color FeelerHitColor
+        {
+            get
+            {
+                return CinemachineSettings.UnpackColour(EditorPrefs.GetString(kFeelerHitColourKey, CinemachineSettings.PackColor(Color.yellow)));
+            }
+
+            set
+            {
+                if (value != FeelerHitColor)
+                {
+                    EditorPrefs.SetString(kFeelerHitColourKey, CinemachineSettings.PackColor(value));
+                }
+            }
+        }
+
+        public static Color FeelerColor
+        {
+            get
+            {
+                return CinemachineSettings.UnpackColour(EditorPrefs.GetString(kFeelerColourKey, CinemachineSettings.PackColor(Color.gray)));
+            }
+
+            set
+            {
+                if (value != FeelerColor)
+                {
+                    EditorPrefs.SetString(kFeelerColourKey, CinemachineSettings.PackColor(value));
+                }
+            }
+        }
+
+        private const string kColliderSettingsFoldoutKey  = "CNMCN_Collider_Foldout";
+        private const string kFeelerHitColourKey          = "CNMCN_Collider_FeelerHit_Colour";
+        private const string kFeelerColourKey             = "CNMCN_Collider_Feeler_Colour";
+
+        static CinemachineColliderPrefs()
+        {
+            Cinemachine.Editor.CinemachineSettings.AdditionalCategories += DrawColliderSettings;
+        }
+
+        private static void DrawColliderSettings()
+        {
+            SettingsFoldedOut = EditorGUILayout.Foldout(SettingsFoldedOut, "Collider Settings");
+            if (SettingsFoldedOut)
+            {
+                EditorGUI.indentLevel++;
+
+                EditorGUI.BeginChangeCheck();
+
+                FeelerHitColor   = EditorGUILayout.ColorField("Feeler Hit", FeelerHitColor);
+                FeelerColor = EditorGUILayout.ColorField("Feeler", FeelerColor);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                }
+
+                EditorGUI.indentLevel--;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs.meta b/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0d969fb1fc1c6d3c8b5e9a80e1753186e43ae49d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: aceb1a3f85f55c249bba6eaade29f2aa
+timeCreated: 1484415513
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs b/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b382b326c124b87455830b165f2f1ef7ef9cdf5d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs
@@ -0,0 +1,454 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+
+namespace Cinemachine.Editor
+{
+    [InitializeOnLoad]
+    internal sealed class CinemachineSettings
+    {
+        public static class CinemachineCoreSettings
+        {
+            private static readonly string hShowInGameGuidesKey = "CNMCN_Core_ShowInGameGuides";
+            public static bool ShowInGameGuides
+            {
+                get { return EditorPrefs.GetBool(hShowInGameGuidesKey, true); }
+                set 
+                { 
+                    if (ShowInGameGuides != value)
+                    {
+                        EditorPrefs.SetBool(hShowInGameGuidesKey, value); 
+                        UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                    }
+                }
+            }
+
+            private static readonly string kCoreActiveGizmoColourKey = "CNMCN_Core_Active_Gizmo_Colour";
+            public static readonly Color kDefaultActiveColour = new Color32(255, 0, 0, 100);
+            public static Color ActiveGizmoColour
+            {
+                get
+                {
+                    string packedColour = EditorPrefs.GetString(kCoreActiveGizmoColourKey, PackColor(kDefaultActiveColour));
+                    return UnpackColour(packedColour);
+                }
+
+                set
+                {
+                    if (ActiveGizmoColour != value)
+                    {
+                        string packedColour = PackColor(value);
+                        EditorPrefs.SetString(kCoreActiveGizmoColourKey, packedColour);
+                    }
+                }
+            }
+
+            private static readonly string kCoreInactiveGizmoColourKey = "CNMCN_Core_Inactive_Gizmo_Colour";
+            public static readonly Color kDefaultInactiveColour = new Color32(9, 54, 87, 100);
+            public static Color InactiveGizmoColour
+            {
+                get
+                {
+                    string packedColour = EditorPrefs.GetString(kCoreInactiveGizmoColourKey, PackColor(kDefaultInactiveColour));
+                    return UnpackColour(packedColour);
+                }
+
+                set
+                {
+                    if (InactiveGizmoColour != value)
+                    {
+                        string packedColour = PackColor(value);
+                        EditorPrefs.SetString(kCoreInactiveGizmoColourKey, packedColour);
+                    }
+                }
+            }
+        }
+
+        public static class ComposerSettings
+        {
+            private static readonly string kOverlayOpacityKey           = "CNMCN_Overlay_Opacity";
+            private static readonly string kComposerHardBoundsColourKey = "CNMCN_Composer_HardBounds_Colour";
+            private static readonly string kComposerSoftBoundsColourKey = "CNMCN_Composer_SoftBounds_Colour";
+            private static readonly string kComposerTargetColourKey     = "CNMCN_Composer_Target_Colour";
+            private static readonly string kComposerTargetSizeKey       = "CNMCN_Composer_Target_Size";
+
+            public const float kDefaultOverlayOpacity = 0.15f;
+            public static readonly Color kDefaultHardBoundsColour = new Color32(255, 0, 72, 255);
+            public static readonly Color kDefaultSoftBoundsColour = new Color32(0, 194, 255, 255);
+            public static readonly Color kDefaultTargetColour = new Color32(255, 254, 25, 255);
+
+            public static float OverlayOpacity
+            {
+                get { return EditorPrefs.GetFloat(kOverlayOpacityKey, kDefaultOverlayOpacity); }
+                set
+                {
+                    if (value != OverlayOpacity)
+                    {
+                        EditorPrefs.SetFloat(kOverlayOpacityKey, value);
+                    }
+                }
+            }
+
+            public static Color HardBoundsOverlayColour
+            {
+                get
+                {
+                    string packedColour = EditorPrefs.GetString(kComposerHardBoundsColourKey, PackColor(kDefaultHardBoundsColour));
+                    return UnpackColour(packedColour);
+                }
+
+                set
+                {
+                    if (HardBoundsOverlayColour != value)
+                    {
+                        string packedColour = PackColor(value);
+                        EditorPrefs.SetString(kComposerHardBoundsColourKey, packedColour);
+                    }
+                }
+            }
+
+            public static Color SoftBoundsOverlayColour
+            {
+                get
+                {
+                    string packedColour = EditorPrefs.GetString(kComposerSoftBoundsColourKey, PackColor(kDefaultSoftBoundsColour));
+                    return UnpackColour(packedColour);
+                }
+
+                set
+                {
+                    if (SoftBoundsOverlayColour != value)
+                    {
+                        string packedColour = PackColor(value);
+                        EditorPrefs.SetString(kComposerSoftBoundsColourKey, packedColour);
+                    }
+                }
+            }
+
+            public static Color TargetColour
+            {
+                get
+                {
+                    string packedColour = EditorPrefs.GetString(kComposerTargetColourKey, PackColor(kDefaultTargetColour));
+                    return UnpackColour(packedColour);
+                }
+
+                set
+                {
+                    if (TargetColour != value)
+                    {
+                        string packedColour = PackColor(value);
+                        EditorPrefs.SetString(kComposerTargetColourKey, packedColour);
+                    }
+                }
+            }
+
+            public static float TargetSize
+            {
+                get
+                {
+                    return EditorPrefs.GetFloat(kComposerTargetSizeKey, 5f);
+                }
+
+                set
+                {
+                    if (TargetSize != value)
+                    {
+                        EditorPrefs.SetFloat(kComposerTargetSizeKey, value);
+                    }
+                }
+            }
+        }
+
+        private static bool ShowCoreSettings
+        {
+            get { return EditorPrefs.GetBool(kCoreSettingsFoldKey, false); }
+            set
+            {
+                if (value != ShowCoreSettings)
+                {
+                    EditorPrefs.SetBool(kCoreSettingsFoldKey, value);
+                }
+            }
+        }
+
+        private static bool ShowComposerSettings
+        {
+            get { return EditorPrefs.GetBool(kComposerSettingsFoldKey, false); }
+            set
+            {
+                if (value != ShowComposerSettings)
+                {
+                    EditorPrefs.SetBool(kComposerSettingsFoldKey, value);
+                }
+            }
+        }
+
+        private static Texture2D sCinemachineLogoTexture = null;
+        internal static Texture2D CinemachineLogoTexture
+        {
+            get
+            {
+                if (sCinemachineLogoTexture == null)
+                    sCinemachineLogoTexture = Resources.Load<Texture2D>("cm_logo_sm");
+                if (sCinemachineLogoTexture != null)
+                    sCinemachineLogoTexture.hideFlags = HideFlags.DontSaveInEditor;
+                return sCinemachineLogoTexture;
+            }
+        }
+
+        private static Texture2D sCinemachineHeader = null;
+        internal static Texture2D CinemachineHeader
+        {
+            get
+            {
+                if (sCinemachineHeader == null)
+                    sCinemachineHeader = Resources.Load<Texture2D>("cinemachine_header");
+                ;
+                if (sCinemachineHeader != null)
+                    sCinemachineHeader.hideFlags = HideFlags.DontSaveInEditor;
+                return sCinemachineHeader;
+            }
+        }
+
+        private static readonly string kCoreSettingsFoldKey     = "CNMCN_Core_Folded";
+        private static readonly string kComposerSettingsFoldKey = "CNMCN_Composer_Folded";
+
+        internal static event Action AdditionalCategories = null;
+
+        static CinemachineSettings()
+        {
+            if (CinemachineLogoTexture != null)
+            {
+                EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;
+            }
+        }
+
+        //private static readonly GUIContent sCoreShowHiddenObjectsToggle = new GUIContent("Show Hidden Objects", "If checked, Cinemachine hidden objects will be shown in the inspector.  This might be necessary to repair broken script mappings when upgrading from a pre-release version");
+        private static readonly GUIContent sCoreActiveGizmosColour = new GUIContent("Active Virtual Camera", "The colour for the active virtual camera's gizmos");
+        private static readonly GUIContent sCoreInactiveGizmosColour = new GUIContent("Inactive Virtual Camera", "The colour for all inactive virtual camera gizmos");
+
+        private static readonly GUIContent sComposerOverlayOpacity = new GUIContent("Overlay Opacity", "The alpha of the composer's overlay when a virtual camera is selected with composer module enabled");
+        private static readonly GUIContent sComposerHardBoundsOverlay = new GUIContent("Hard Bounds Overlay", "The colour of the composer overlay's hard bounds region");
+        private static readonly GUIContent sComposerSoftBoundsOverlay = new GUIContent("Soft Bounds Overlay", "The colour of the composer overlay's soft bounds region");
+        private static readonly GUIContent sComposerTargetOverlay = new GUIContent("Composer Target", "The colour of the composer overlay's target");
+        private static readonly GUIContent sComposerTargetOverlayPixels = new GUIContent("Composer Target Size(px)", "The size of the composer overlay's target box in pixels");
+
+        private const string kCinemachineHeaderPath = "cinemachine_header.tif";
+        private const string kCinemachineDocURL = @"http://www.cinemachineimagery.com/documentation/";
+
+        private static Vector2 sScrollPosition = Vector2.zero;
+
+        [PreferenceItem("Cinemachine")]
+        private static void OnGUI()
+        {
+            if (CinemachineHeader != null)
+            {
+                const float kWidth = 350f;
+                float aspectRatio = (float)CinemachineHeader.height / (float)CinemachineHeader.width;
+                GUILayout.BeginScrollView(Vector2.zero, false, false, GUILayout.Width(kWidth), GUILayout.Height(kWidth * aspectRatio));
+                Rect texRect = new Rect(0f, 0f, kWidth, kWidth * aspectRatio);
+
+                GUILayout.BeginArea(texRect);
+                GUI.DrawTexture(texRect, CinemachineHeader, ScaleMode.ScaleToFit);
+                GUILayout.EndArea();
+
+                GUILayout.EndScrollView();
+            }
+
+            sScrollPosition = GUILayout.BeginScrollView(sScrollPosition);
+
+            //CinemachineCore.sShowHiddenObjects
+            //    = EditorGUILayout.Toggle("Show Hidden Objects", CinemachineCore.sShowHiddenObjects);
+
+            ShowCoreSettings = EditorGUILayout.Foldout(ShowCoreSettings, "Runtime Settings");
+            if (ShowCoreSettings)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUI.BeginChangeCheck();
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+                Color newActiveGizmoColour = EditorGUILayout.ColorField(sCoreActiveGizmosColour, CinemachineCoreSettings.ActiveGizmoColour);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    CinemachineCoreSettings.ActiveGizmoColour = newActiveGizmoColour;
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    CinemachineCoreSettings.ActiveGizmoColour = CinemachineCoreSettings.kDefaultActiveColour;
+                }
+                EditorGUILayout.EndHorizontal();
+
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+                Color newInactiveGizmoColour = EditorGUILayout.ColorField(sCoreInactiveGizmosColour, CinemachineCoreSettings.InactiveGizmoColour);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    CinemachineCoreSettings.InactiveGizmoColour = newInactiveGizmoColour;
+                    UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    CinemachineCoreSettings.InactiveGizmoColour = CinemachineCoreSettings.kDefaultInactiveColour;
+                }
+                EditorGUILayout.EndHorizontal();
+                EditorGUI.indentLevel--;
+            }
+
+            ShowComposerSettings = EditorGUILayout.Foldout(ShowComposerSettings, "Composer Settings");
+            if (ShowComposerSettings)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+
+                float overlayOpacity = EditorGUILayout.Slider(sComposerOverlayOpacity, ComposerSettings.OverlayOpacity, 0f, 1f);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    ComposerSettings.OverlayOpacity = overlayOpacity;
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    ComposerSettings.OverlayOpacity = ComposerSettings.kDefaultOverlayOpacity;
+                }
+                EditorGUILayout.EndHorizontal();
+
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+                Color newHardEdgeColor = EditorGUILayout.ColorField(sComposerHardBoundsOverlay, ComposerSettings.HardBoundsOverlayColour);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    ComposerSettings.HardBoundsOverlayColour = newHardEdgeColor;
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    ComposerSettings.HardBoundsOverlayColour = ComposerSettings.kDefaultHardBoundsColour;
+                }
+                EditorGUILayout.EndHorizontal();
+
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+                Color newSoftEdgeColor = EditorGUILayout.ColorField(sComposerSoftBoundsOverlay, ComposerSettings.SoftBoundsOverlayColour);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    ComposerSettings.SoftBoundsOverlayColour = newSoftEdgeColor;
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    ComposerSettings.SoftBoundsOverlayColour = ComposerSettings.kDefaultSoftBoundsColour;
+                }
+                EditorGUILayout.EndHorizontal();
+
+                EditorGUILayout.BeginHorizontal();
+                EditorGUI.BeginChangeCheck();
+                Color newTargetColour = EditorGUILayout.ColorField(sComposerTargetOverlay, ComposerSettings.TargetColour);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    ComposerSettings.TargetColour = newTargetColour;
+                }
+
+                if (GUILayout.Button("Reset"))
+                {
+                    ComposerSettings.TargetColour = ComposerSettings.kDefaultTargetColour;
+                }
+                EditorGUILayout.EndHorizontal();
+
+                EditorGUI.BeginChangeCheck();
+                float targetSide = EditorGUILayout.FloatField(sComposerTargetOverlayPixels, ComposerSettings.TargetSize);
+
+                if (EditorGUI.EndChangeCheck())
+                {
+                    ComposerSettings.TargetSize = targetSide;
+                }
+                EditorGUI.indentLevel--;
+            }
+
+            if (AdditionalCategories != null)
+            {
+                AdditionalCategories();
+            }
+
+            GUILayout.EndScrollView();
+
+            //if (GUILayout.Button("Open Documentation"))
+            //{
+            //    Application.OpenURL(kCinemachineDocURL);
+            //}
+        }
+
+        private static void OnHierarchyGUI(int instanceID, Rect selectionRect)
+        {
+            GameObject instance = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
+            if (instance == null)
+            {
+                // Object in process of being deleted?
+                return;
+            }
+
+            if (instance.GetComponent<CinemachineBrain>() != null)
+            {
+                Rect texRect = new Rect(selectionRect.xMax - selectionRect.height, selectionRect.yMin, selectionRect.height, selectionRect.height);
+                GUI.DrawTexture(texRect, CinemachineLogoTexture, ScaleMode.ScaleAndCrop);
+            }
+        }
+
+        internal static Color UnpackColour(string str)
+        {
+            if (!string.IsNullOrEmpty(str))
+            {
+                byte[] bytes = Base64Decode(str);
+
+                if ((bytes != null) && bytes.Length == 16)
+                {
+                    float r = BitConverter.ToSingle(bytes, 0);
+                    float g = BitConverter.ToSingle(bytes, 4);
+                    float b = BitConverter.ToSingle(bytes, 8);
+                    float a = BitConverter.ToSingle(bytes, 12);
+
+                    return new Color(r, g, b, a);
+                }
+            }
+
+            return Color.white;
+        }
+
+        internal static string PackColor(Color col)
+        {
+            byte[] bytes = new byte[16];
+
+            byte[] rBytes = BitConverter.GetBytes(col.r);
+            byte[] gBytes = BitConverter.GetBytes(col.g);
+            byte[] bBytes = BitConverter.GetBytes(col.b);
+            byte[] aBytes = BitConverter.GetBytes(col.a);
+
+            Buffer.BlockCopy(rBytes, 0, bytes, 0, 4);
+            Buffer.BlockCopy(gBytes, 0, bytes, 4, 4);
+            Buffer.BlockCopy(bBytes, 0, bytes, 8, 4);
+            Buffer.BlockCopy(aBytes, 0, bytes, 12, 4);
+
+            return Base64Encode(bytes);
+        }
+
+        private static string Base64Encode(byte[] data)
+        {
+            return Convert.ToBase64String(data);
+        }
+
+        private static byte[] Base64Decode(string base64EncodedData)
+        {
+            return Convert.FromBase64String(base64EncodedData);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs.meta b/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f85d1882eaa49b25ce895c2641cbefba40da500c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 74d8c4d6e5d0338469ae46c13725f3ce
+timeCreated: 1488314898
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime.meta b/Assets/Cinemachine/Base/Runtime.meta
new file mode 100644
index 0000000000000000000000000000000000000000..bf0c377302f7c341ea989407d51da21838d7a8bb
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e8413e2c94231d544b120f2b71d432e2
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours.meta b/Assets/Cinemachine/Base/Runtime/Behaviours.meta
new file mode 100644
index 0000000000000000000000000000000000000000..edded5f415fb14aae3e2b657fd38c4941bb49515
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: fd10c4a322c950342a9d03a14ae879b7
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b380bfaab1dd6cebb3a9065751f282f282d59c02
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs
@@ -0,0 +1,341 @@
+using Cinemachine.Utility;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a virtual camera "manager" that owns and manages a collection
+    /// of child Virtual Cameras.  When the camera goes live, these child vcams 
+    /// are enabled, one after another, holding each camera for a designated time.  
+    /// Blends between cameras are specified.
+    /// The last camera is held indefinitely.
+    /// </summary>
+    [DocumentationSorting(13, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineBlendListCamera")]
+    public class CinemachineBlendListCamera : CinemachineVirtualCameraBase
+    {
+        /// <summary>Default object for the camera children to look at (the aim target), if not specified in a child rig.  May be empty</summary>
+        [Tooltip("Default object for the camera children to look at (the aim target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        /// <summary>Default object for the camera children wants to move with (the body target), if not specified in a child rig.  May be empty</summary>
+        [Tooltip("Default object for the camera children wants to move with (the body target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_Follow = null;
+
+        /// <summary>When enabled, the current camera and blend will be indicated in the game window, for debugging</summary>
+        [Tooltip("When enabled, the current child camera and blend will be indicated in the game window, for debugging")]
+        public bool m_ShowDebugText = false;
+
+        /// <summary>Force all child cameras to be enabled.  This is useful if animating them in Timeline, but consumes extra resources.</summary>
+        [Tooltip("Force all child cameras to be enabled.  This is useful if animating them in Timeline, but consumes extra resources")]
+        public bool m_EnableAllChildCameras;
+
+        /// <summary>Internal API for the editor.  Do not use this field</summary>
+        [SerializeField][HideInInspector][NoSaveDuringPlay]
+        public CinemachineVirtualCameraBase[] m_ChildCameras = null;
+
+        /// <summary>This represents a single entry in the instrunction list of the BlendListCamera.</summary>
+        [Serializable]
+        public struct Instruction
+        {
+            /// <summary>The virtual camera to activate when this instruction becomes active</summary>
+            [Tooltip("The virtual camera to activate when this instruction becomes active")]
+            public CinemachineVirtualCameraBase m_VirtualCamera;
+            /// <summary>How long to wait (in seconds) before activating the next virtual camera in the list (if any)</summary>
+            [Tooltip("How long to wait (in seconds) before activating the next virtual camera in the list (if any)")]
+            public float m_Hold;
+            /// <summary>How to blend to the next virtual camera in the list (if any)</summary>
+            [CinemachineBlendDefinitionProperty]
+            [Tooltip("How to blend to the next virtual camera in the list (if any)")]
+            public CinemachineBlendDefinition m_Blend;
+        };
+
+        /// <summary>The set of instructions associating virtual cameras with states.  
+        /// The set of instructions for enabling child cameras</summary>
+        [Tooltip("The set of instructions for enabling child cameras.")]
+        public Instruction[] m_Instructions;
+
+        /// <summary>Gets a brief debug description of this virtual camera, for use when displayiong debug info</summary>
+        public override string Description 
+        { 
+            get 
+            { 
+                // Show the active camera and blend
+                ICinemachineCamera vcam = LiveChild;
+                if (mActiveBlend == null) 
+                    return (vcam != null) ? "[" + vcam.Name + "]": "(none)";
+                return mActiveBlend.Description;
+            }
+        }
+
+        /// <summary>Get the current "best" child virtual camera, that would be chosen
+        /// if the State Driven Camera were active.</summary>
+        public ICinemachineCamera LiveChild { set; get; }
+
+        /// <summary>Return the live child.</summary>
+        public override ICinemachineCamera LiveChildOrSelf { get { return LiveChild; } }
+
+        /// <summary>Check whether the vcam a live child of this camera.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public override bool IsLiveChild(ICinemachineCamera vcam) 
+        { 
+            return vcam == LiveChild 
+                || (mActiveBlend != null && (vcam == mActiveBlend.CamA || vcam == mActiveBlend.CamB));
+        }
+
+        /// <summary>The State of the current live child</summary>
+        public override CameraState State { get { return m_State; } }
+
+        /// <summary>Get the current LookAt target.  Returns parent's LookAt if parent
+        /// is non-null and no specific LookAt defined for this camera</summary>
+        override public Transform LookAt
+        {
+            get { return ResolveLookAt(m_LookAt); }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>Get the current Follow target.  Returns parent's Follow if parent
+        /// is non-null and no specific Follow defined for this camera</summary>
+        override public Transform Follow
+        {
+            get { return ResolveFollow(m_Follow); }
+            set { m_Follow = value; }
+        }
+
+        /// <summary>Remove a Pipeline stage hook callback.
+        /// Make sure it is removed from all the children.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public override void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            base.RemovePostPipelineStageHook(d);
+            UpdateListOfChildren();
+            foreach (var vcam in m_ChildCameras)
+                vcam.RemovePostPipelineStageHook(d);
+        }
+
+        /// <summary>Notification that this virtual camera is going live.
+        /// <param name="fromCam">The camera being deactivated.  May be null.</param>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public override void OnTransitionFromCamera(
+            ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) 
+        {
+            base.OnTransitionFromCamera(fromCam, worldUp, deltaTime);
+            mActivationTime = Time.time;
+            mCurrentInstruction = -1;
+            LiveChild = null;
+            mActiveBlend = null;
+            UpdateCameraState(worldUp, deltaTime);
+        }
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  This implementation
+        /// updates all the children, chooses the best one, and implements any required blending.</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public override void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBlendListCamera.UpdateCameraState");
+            if (!PreviousStateIsValid)
+                deltaTime = -1;
+
+            UpdateListOfChildren();
+
+            AdvanceCurrentInstruction();
+            CinemachineVirtualCameraBase best = null;
+            if (mCurrentInstruction >= 0 && mCurrentInstruction < m_Instructions.Length)
+                best = m_Instructions[mCurrentInstruction].m_VirtualCamera;
+
+            if (m_ChildCameras != null)
+            {
+                for (int i = 0; i < m_ChildCameras.Length; ++i)
+                {
+                    CinemachineVirtualCameraBase vcam  = m_ChildCameras[i];
+                    if (vcam != null)
+                    {
+                        bool enableChild = m_EnableAllChildCameras || vcam == best;
+                        if (enableChild != vcam.VirtualCameraGameObject.activeInHierarchy)
+                        {
+                            vcam.gameObject.SetActive(enableChild);
+                            if (enableChild)
+                                CinemachineCore.Instance.UpdateVirtualCamera(vcam, worldUp, deltaTime);
+                        }
+                    }
+                }
+            }
+
+            if (best != null)
+            {
+                ICinemachineCamera previousCam = LiveChild;
+                LiveChild = best;
+
+                // Are we transitioning cameras?
+                if (previousCam != null && LiveChild != null && previousCam != LiveChild && mCurrentInstruction > 0)
+                {
+                    // Create a blend (will be null if a cut)
+                    mActiveBlend = CreateBlend(
+                            previousCam, LiveChild,
+                            m_Instructions[mCurrentInstruction].m_Blend.BlendCurve, 
+                            m_Instructions[mCurrentInstruction].m_Blend.m_Time, mActiveBlend, deltaTime);
+
+                    // Notify incoming camera of transition
+                    LiveChild.OnTransitionFromCamera(previousCam, worldUp, deltaTime);
+
+                    // Generate Camera Activation event if live
+                    CinemachineCore.Instance.GenerateCameraActivationEvent(LiveChild);
+
+                    // If cutting, generate a camera cut event if live
+                    if (mActiveBlend == null)
+                        CinemachineCore.Instance.GenerateCameraCutEvent(LiveChild);
+                }
+            }
+
+            // Advance the current blend (if any)
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.TimeInBlend += (deltaTime >= 0) ? deltaTime : mActiveBlend.Duration;
+                if (mActiveBlend.IsComplete)
+                    mActiveBlend = null;
+            }
+
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.UpdateCameraState(worldUp, deltaTime);
+                m_State = mActiveBlend.State;
+            }
+            else if (LiveChild != null)
+                m_State =  LiveChild.State;
+
+            PreviousStateIsValid = true;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            InvalidateListOfChildren();
+            mActiveBlend = null;
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        public void OnTransformChildrenChanged()
+        {
+            InvalidateListOfChildren();
+        }
+
+#if UNITY_EDITOR
+        /// <summary>Displays the current active camera on the game screen, if requested</summary>
+        protected override void OnGUI()
+        {
+            base.OnGUI();
+            if (!m_ShowDebugText)
+                CinemachineGameWindowDebug.ReleaseScreenPos(this);
+            else
+            {
+                string text = Name + ": " + Description;
+                Rect r = CinemachineGameWindowDebug.GetScreenPos(this, text, GUI.skin.box);
+                GUI.Label(r, text, GUI.skin.box);
+            }
+        }
+#endif
+        CameraState m_State = CameraState.Default;
+
+        /// <summary>The list of child cameras.  These are just the immediate children in the hierarchy.</summary>
+        public CinemachineVirtualCameraBase[] ChildCameras { get { UpdateListOfChildren(); return m_ChildCameras; }}
+
+        /// <summary>Is there a blend in progress?</summary>
+        public bool IsBlending { get { return mActiveBlend != null; } }
+
+        /// <summary>The time at which the current instruction went live</summary>
+        float mActivationTime = -1;
+        int mCurrentInstruction = 0;
+        private CinemachineBlend mActiveBlend = null;
+
+        void InvalidateListOfChildren() { m_ChildCameras = null; LiveChild = null; }
+
+        void UpdateListOfChildren()
+        {
+            if (m_ChildCameras != null)
+                return;
+            List<CinemachineVirtualCameraBase> list = new List<CinemachineVirtualCameraBase>();
+            CinemachineVirtualCameraBase[] kids = GetComponentsInChildren<CinemachineVirtualCameraBase>(true);
+            foreach (CinemachineVirtualCameraBase k in kids)
+                if (k.transform.parent == transform)
+                    list.Add(k);
+            m_ChildCameras = list.ToArray();
+            ValidateInstructions();
+        }
+
+        /// <summary>Internal API for the inspector editor.</summary>
+        /// // GML todo: make this private, part of UpdateListOfChildren()
+        public void ValidateInstructions()
+        {
+            if (m_Instructions == null)
+                m_Instructions = new Instruction[0];
+            for (int i = 0; i < m_Instructions.Length; ++i)
+            {
+                if (m_Instructions[i].m_VirtualCamera != null
+                    && m_Instructions[i].m_VirtualCamera.transform.parent != transform)
+                {
+                    m_Instructions[i].m_VirtualCamera = null;
+                }
+            }
+            mActiveBlend = null;
+        }
+
+        private void AdvanceCurrentInstruction()
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBlendListCamera.AdvanceCurrentInstruction");
+            if (m_ChildCameras == null || m_ChildCameras.Length == 0 
+                || mActivationTime < 0 || m_Instructions.Length == 0)
+            {
+                mActivationTime = -1;
+                mCurrentInstruction = -1;
+                mActiveBlend = null;
+            }
+            else if (mCurrentInstruction >= m_Instructions.Length - 1)
+            {
+                mCurrentInstruction = m_Instructions.Length - 1;
+            }
+            else 
+            {
+                float now = Time.time;
+                if (mCurrentInstruction < 0)
+                {
+                    mActivationTime = now;
+                    mCurrentInstruction = 0;
+                }
+                else if (now - mActivationTime > Mathf.Max(0, m_Instructions[mCurrentInstruction].m_Hold))
+                {
+                    mActivationTime = now;
+                    ++mCurrentInstruction;
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        private CinemachineBlend CreateBlend(
+            ICinemachineCamera camA, ICinemachineCamera camB, 
+            AnimationCurve blendCurve, float duration,
+            CinemachineBlend activeBlend, float deltaTime)
+        {
+            if (blendCurve == null || duration <= 0 || (camA == null && camB == null))
+                return null;
+
+            if (camA == null || activeBlend != null)
+            {
+                // Blend from the current camera position
+                CameraState state = (activeBlend != null) ? activeBlend.State : State;
+                camA = new StaticPointVirtualCamera(state, (activeBlend != null) ? "Mid-blend" : "(none)");
+            }
+            return new CinemachineBlend(camA, camB, blendCurve,duration,  0);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..6f0c4922aec49ae464509b726248ceb5d2b0c1b5
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 53258ad9ad6e71e48bb8643c9522112e
+timeCreated: 1509546373
+licenseType: Store
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs
new file mode 100644
index 0000000000000000000000000000000000000000..36a98e38b832e20b1f7c33d68184da35041f481c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs
@@ -0,0 +1,831 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using Cinemachine.Utility;
+using UnityEngine.Events;
+using System.Collections;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// CinemachineBrain is the link between the Unity Camera and the Cinemachine Virtual 
+    /// Cameras in the scene.  It monitors the priority stack to choose the current 
+    /// Virtual Camera, and blend with another if necessary.  Finally and most importantly, 
+    /// it applies the Virtual Camera state to the attached Unity Camera.
+    /// 
+    /// The CinemachineBrain is also the place where rules for blending between virtual cameras 
+    /// are defined.  Camera blending is an interpolation over time of one virtual camera 
+    /// position and state to another. If you think of virtual cameras as cameramen, then 
+    /// blending is a little like one cameraman smoothly passing the camera to another cameraman. 
+    /// You can specify the time over which to blend, as well as the blend curve shape. 
+    /// Note that a camera cut is just a zero-time blend.
+    /// </summary>
+    [DocumentationSorting(0, DocumentationSortingAttribute.Level.UserRef)]
+//    [RequireComponent(typeof(Camera))] // strange but true: we can live without it
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineBrain")]
+    [SaveDuringPlay]
+    public class CinemachineBrain : MonoBehaviour
+    {
+        /// <summary>
+        /// When enabled, the current camera and blend will be indicated in the game window, for debugging.
+        /// </summary>
+        [Tooltip("When enabled, the current camera and blend will be indicated in the game window, for debugging")]
+        public bool m_ShowDebugText = false;
+
+        /// <summary>
+        /// When enabled, shows the camera's frustum in the scene view.
+        /// </summary>
+        [Tooltip("When enabled, the camera's frustum will be shown at all times in the scene view")]
+        public bool m_ShowCameraFrustum = true;
+
+        /// <summary>
+        /// When enabled, the cameras will always respond in real-time to user input and damping, 
+        /// even if the game is running in slow motion
+        /// </summary>
+        [Tooltip("When enabled, the cameras will always respond in real-time to user input and damping, even if the game is running in slow motion")]
+        public bool m_IgnoreTimeScale = false;
+
+        /// <summary>
+        /// If set, this object's Y axis will define the worldspace Up vector for all the
+        /// virtual cameras.  This is useful in top-down game environments.  If not set, Up is worldspace Y.
+        /// </summary>
+        [Tooltip("If set, this object's Y axis will define the worldspace Up vector for all the virtual cameras.  This is useful for instance in top-down game environments.  If not set, Up is worldspace Y.  Setting this appropriately is important, because Virtual Cameras don't like looking straight up or straight down.")]
+        public Transform m_WorldUpOverride;
+
+        /// <summary>This enum defines the options available for the update method.</summary>
+        [DocumentationSorting(0.1f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum UpdateMethod
+        {
+            /// <summary>Virtual cameras are updated in sync with the Physics module, in FixedUpdate</summary>
+            FixedUpdate,
+            /// <summary>Virtual cameras are updated in MonoBehaviour LateUpdate.</summary>
+            LateUpdate,
+            /// <summary>Virtual cameras are updated according to how the target is updated.</summary>
+            SmartUpdate
+        };
+
+        /// <summary>Depending on how the target objects are animated, adjust the update method to
+        /// minimize the potential jitter.  Use FixedUpdate if all your targets are animated with for RigidBody animation.
+        /// SmartUpdate will choose the best method for each virtual camera, depending
+        /// on how the target is animated.</summary>
+        [Tooltip("Use FixedUpdate if all your targets are animated during FixedUpdate (e.g. RigidBodies), LateUpdate if all your targets are animated during the normal Update loop, and SmartUpdate if you want Cinemachine to do the appropriate thing on a per-target basis.  SmartUpdate is the recommended setting")]
+        public UpdateMethod m_UpdateMethod = UpdateMethod.SmartUpdate;
+
+        /// <summary>
+        /// The blend which is used if you don't explicitly define a blend between two Virtual Cameras.
+        /// </summary>
+        [CinemachineBlendDefinitionProperty]
+        [Tooltip("The blend that is used in cases where you haven't explicitly defined a blend between two Virtual Cameras")]
+        public CinemachineBlendDefinition m_DefaultBlend
+            = new CinemachineBlendDefinition(CinemachineBlendDefinition.Style.EaseInOut, 2f);
+
+        /// <summary>
+        /// This is the asset which contains custom settings for specific blends.
+        /// </summary>
+        [Tooltip("This is the asset that contains custom settings for blends between specific virtual cameras in your scene")]
+        public CinemachineBlenderSettings m_CustomBlends = null;
+
+        /// <summary>
+        /// Get the Unity Camera that is attached to this GameObject.  This is the camera
+        /// that will be controlled by the brain.
+        /// </summary>
+        public Camera OutputCamera
+        {
+            get
+            {
+                if (m_OutputCamera == null)
+                    m_OutputCamera = GetComponent<Camera>();
+                return m_OutputCamera;
+            }
+        }
+        private Camera m_OutputCamera = null; // never use directly - use accessor
+
+        /// <summary>Event with a CinemachineBrain parameter</summary>
+        [Serializable] public class BrainEvent : UnityEvent<CinemachineBrain> {}
+
+        /// <summary>Event with a ICinemachineCamera parameter</summary>
+        [Serializable] public class VcamEvent : UnityEvent<ICinemachineCamera> {}
+
+        /// <summary>This event will fire whenever a virtual camera goes live and there is no blend</summary>
+        [Tooltip("This event will fire whenever a virtual camera goes live and there is no blend")]
+        public BrainEvent m_CameraCutEvent = new BrainEvent();
+
+        /// <summary>This event will fire whenever a virtual camera goes live.  If a blend is involved, 
+        /// then the event will fire on the first frame of the blend</summary>
+        [Tooltip("This event will fire whenever a virtual camera goes live.  If a blend is involved, then the event will fire on the first frame of the blend.")]
+        public VcamEvent m_CameraActivatedEvent = new VcamEvent();
+
+        /// <summary>Support for opaque post-processing module</summary>
+        internal Component PostProcessingComponent { get; set; }
+
+        /// <summary>
+        /// Because the PostProcessing package is not guaranteed to be present,
+        /// we must handle PostFX in this opaque way.  This delegate will be called
+        /// every frame (during LateUpdate) after the camera has been positioned.
+        /// The intention is that the callback will make the right calls to the PostProcessing module.
+        /// Cinemachine provides the CinemachinePostFX behaviour that makes use of this delegate.
+        /// </summary>
+        internal static BrainEvent sPostProcessingHandler = new BrainEvent();
+
+        /// <summary>
+        /// API for the Unity Editor.
+        /// Show this camera no matter what.  This is static, and so affects all Cinemachine brains.
+        /// </summary>
+        public static ICinemachineCamera SoloCamera { get; set; }
+
+        /// <summary>API for the Unity Editor.</summary>
+        /// <returns>Color used to indicate that a camera is in Solo mode.</returns>
+        public static Color GetSoloGUIColor() { return Color.Lerp(Color.red, Color.yellow, 0.8f); }
+
+        /// <summary>Get the default world up for the virtual cameras.</summary>
+        public Vector3 DefaultWorldUp
+            { get { return (m_WorldUpOverride != null) ? m_WorldUpOverride.transform.up : Vector3.up; } }
+
+        private ICinemachineCamera mActiveCameraPreviousFrame;
+        private ICinemachineCamera mOutgoingCameraPreviousFrame;
+        private CinemachineBlend mActiveBlend = null;
+        private bool mPreviousFrameWasOverride = false;
+
+        private class OverrideStackFrame
+        {
+            public int id;
+            public ICinemachineCamera camera;
+            public CinemachineBlend blend;
+            public float deltaTime;
+            public float timeOfOverride;
+            public bool Active { get { return camera != null; } }
+            public bool Expired 
+            { 
+                get 
+                { 
+                    return !Application.isPlaying 
+                        && Time.realtimeSinceStartup - timeOfOverride > Time.maximumDeltaTime; 
+                }
+            }
+        }
+        private List<OverrideStackFrame> mOverrideStack = new List<OverrideStackFrame>();
+        private int mNextOverrideId = 1;
+
+        /// Get the override if it's present, else insert it
+        private OverrideStackFrame GetOverrideFrame(int id)
+        {
+            int count = mOverrideStack.Count;
+            for (int i = 0; i < count; ++i)
+                if (mOverrideStack[i].id == id)
+                    return mOverrideStack[i];
+            OverrideStackFrame ovr = new OverrideStackFrame();
+            ovr.id = id;
+            mOverrideStack.Insert(0, ovr);
+            return ovr;
+        }
+
+        /// Get the next active blend on the stack.  Used when an override blends in from nothing.
+        private OverrideStackFrame mOverrideBlendFromNothing = new OverrideStackFrame();
+        private OverrideStackFrame GetNextActiveFrame(int overrideId)
+        {
+            bool pastMine = false;
+            int count = mOverrideStack.Count;
+            for (int i = 0; i < count; ++i)
+            {
+                if (mOverrideStack[i].id == overrideId)
+                    pastMine = true;
+                else if (mOverrideStack[i].Active && pastMine)
+                    return mOverrideStack[i];
+            }
+            // Create a frame representing the non-override state (gameplay)
+            mOverrideBlendFromNothing.camera = TopCameraFromPriorityQueue();
+            mOverrideBlendFromNothing.blend = mActiveBlend;
+            return mOverrideBlendFromNothing;
+        }
+
+        /// Get the first override that has a camera
+        private OverrideStackFrame GetActiveOverride()
+        {
+            int count = mOverrideStack.Count;
+            for (int i = 0; i < count; ++i)
+                if (mOverrideStack[i].Active)
+                    return mOverrideStack[i];
+            return null;
+        }
+
+        /// <summary>
+        /// This API is specifically for Timeline.  Do not use it.
+        /// Override the current camera and current blend.  This setting will trump
+        /// any in-game logic that sets virtual camera priorities and Enabled states.
+        /// This is the main API for the timeline.
+        /// </summary>
+        /// <param name="overrideId">Id to represent a specific client.  An internal
+        /// stack is maintained, with the most recent non-empty override taking precenence.
+        /// This id must be > 0.  If you pass -1, a new id will be created, and returned.
+        /// Use that id for subsequent calls.  Don't forget to
+        /// call ReleaseCameraOverride after all overriding is finished, to
+        /// free the OverideStack resources.</param>
+        /// <param name="camA"> The camera to set, corresponding to weight=0</param>
+        /// <param name="camB"> The camera to set, corresponding to weight=1</param>
+        /// <param name="weightB">The blend weight.  0=camA, 1=camB</param>
+        /// <param name="deltaTime">override for deltaTime.  Should be Time.FixedDelta for
+        /// time-based calculations to be included, -1 otherwise</param>
+        /// <returns>The oiverride ID.  Don't forget to call ReleaseCameraOverride
+        /// after all overriding is finished, to free the OverideStack resources.</returns>
+        internal int SetCameraOverride(
+            int overrideId,
+            ICinemachineCamera camA, ICinemachineCamera camB,
+            float weightB, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBrain.SetCameraOverride");
+            if (overrideId < 0)
+                overrideId = mNextOverrideId++;
+
+            OverrideStackFrame ovr = GetOverrideFrame(overrideId);
+            ovr.camera = null;
+            ovr.deltaTime = deltaTime;
+            ovr.timeOfOverride = Time.realtimeSinceStartup;
+            if (camA != null || camB != null)
+            {
+                if (weightB <= Utility.UnityVectorExtensions.Epsilon)
+                {
+                    ovr.blend = null;
+                    if (camA != null)
+                        ovr.camera = camA; // no blend
+                }
+                else if (weightB >= (1f - Utility.UnityVectorExtensions.Epsilon))
+                {
+                    ovr.blend = null;
+                    if (camB != null)
+                        ovr.camera = camB; // no blend
+                }
+                else
+                {
+                    // We have a blend.  If one of the supplied cameras is null,
+                    // we use the current active virtual camera (blending in/out of game logic),
+                    // If we do have a null camera, make sure it's the 'from' camera.
+                    // Timeline does not distinguish between from and to cams, but we do.
+                    if (camB == null)
+                    {
+                        // Swap them
+                        ICinemachineCamera c = camB;
+                        camB = camA;
+                        camA = c;
+                        weightB = 1f - weightB;
+                    }
+
+                    // Are we blending with something in progress?
+                    if (camA == null)
+                    {
+                        OverrideStackFrame frame = GetNextActiveFrame(overrideId);
+                        if (frame.blend != null)
+                            camA = new BlendSourceVirtualCamera(frame.blend, deltaTime);
+                        else
+                            camA = frame.camera != null ? frame.camera : camB;
+                    }
+
+                    // Create the override blend
+                    if (ovr.blend == null)
+                        ovr.blend = new CinemachineBlend(
+                            camA, camB, AnimationCurve.Linear(0, 0, 1, 1), 1, weightB);
+                    ovr.blend.CamA = camA;
+                    ovr.blend.CamB = camB;
+                    ovr.blend.TimeInBlend = weightB;
+                    ovr.camera = camB;
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return overrideId;
+        }
+
+        /// <summary>
+        /// This API is specifically for Timeline.  Do not use it.
+        /// Release the resources used for a camera override client.
+        /// See SetCameraOverride.
+        /// </summary>
+        /// <param name="overrideId">The ID to released.  This is the value that
+        /// was returned by SetCameraOverride</param>
+        internal void ReleaseCameraOverride(int overrideId)
+        {
+            int count = mOverrideStack.Count;
+            for (int i = 0; i < count; ++i)
+            {
+                if (mOverrideStack[i].id == overrideId)
+                {
+                    mOverrideStack.RemoveAt(i);
+                    return;
+                }
+            }
+        }
+
+        private void OnEnable()
+        {
+            mActiveBlend = null;
+            mActiveCameraPreviousFrame = null;
+            mOutgoingCameraPreviousFrame = null;
+            mPreviousFrameWasOverride = false;
+            CinemachineCore.Instance.AddActiveBrain(this);
+        }
+
+        private void OnDisable()
+        {
+            CinemachineCore.Instance.RemoveActiveBrain(this);
+            mActiveBlend = null;
+            mActiveCameraPreviousFrame = null;
+            mOutgoingCameraPreviousFrame = null;
+            mPreviousFrameWasOverride = false;
+            mOverrideStack.Clear();
+        }
+
+        private void Start()
+        {
+            UpdateVirtualCameras(CinemachineCore.UpdateFilter.Late, -1f);
+
+            // We check in after the physics system has had a chance to move things
+            StartCoroutine(AfterPhysics());
+        }
+
+#if UNITY_EDITOR
+        private void OnGUI()
+        {
+            if (!m_ShowDebugText)
+                CinemachineGameWindowDebug.ReleaseScreenPos(this);
+            else
+            {
+                // Show the active camera and blend
+                Color color = GUI.color;
+                ICinemachineCamera vcam = ActiveVirtualCamera;
+                string text = "CM " + gameObject.name + ": ";
+                if (SoloCamera != null)
+                {
+                    text += "SOLO ";
+                    GUI.color = GetSoloGUIColor();
+                }
+                if (ActiveBlend == null)
+                    text += (vcam != null ? "[" + vcam.Name + "]" : "(none)");
+                else
+                    text += ActiveBlend.Description;
+                Rect r = CinemachineGameWindowDebug.GetScreenPos(this, text, GUI.skin.box);
+                GUI.Label(r, text, GUI.skin.box);
+                GUI.color = color;
+            }
+        }
+#endif
+
+        WaitForFixedUpdate mWaitForFixedUpdate = new WaitForFixedUpdate();
+        private IEnumerator AfterPhysics()
+        {
+            while (true)
+            {
+                yield return mWaitForFixedUpdate;
+                if (m_UpdateMethod == UpdateMethod.SmartUpdate)
+                {
+                    AddSubframe(); // FixedUpdate can be called multiple times per frame
+                    UpdateVirtualCameras(CinemachineCore.UpdateFilter.Fixed, GetEffectiveDeltaTime(true));
+                }
+                else
+                {
+                    if (m_UpdateMethod == UpdateMethod.LateUpdate)
+                        msSubframes = 1;
+                    else
+                    {
+                        AddSubframe(); // FixedUpdate can be called multiple times per frame
+                        UpdateVirtualCameras(CinemachineCore.UpdateFilter.ForcedFixed, GetEffectiveDeltaTime(true));
+                    }
+                }
+            }
+        }
+
+        private void LateUpdate()
+        {
+            float deltaTime = GetEffectiveDeltaTime(false);
+            if (m_UpdateMethod == UpdateMethod.SmartUpdate)
+                UpdateVirtualCameras(CinemachineCore.UpdateFilter.Late, deltaTime);
+            else if (m_UpdateMethod == UpdateMethod.LateUpdate)
+                UpdateVirtualCameras(CinemachineCore.UpdateFilter.ForcedLate, deltaTime);
+
+            // Choose the active vcam and apply it to the Unity camera
+            ProcessActiveCamera(GetEffectiveDeltaTime(false));
+        }
+
+#if UNITY_EDITOR
+        /// This is only needed in editor mode to force timeline to call OnGUI while
+        /// timeline is up and the game is not running, in order to allow dragging
+        /// the composer guide in the game view.
+        private void OnPreCull()
+        {
+            if (!Application.isPlaying)
+            {
+                // Note: this call will cause any screen canvas attached to the camera
+                // to be painted one frame out of sync.  It will only happen in the editor when not playing.
+                float deltaTime = GetEffectiveDeltaTime(false);
+                msSubframes = 1;
+                UpdateVirtualCameras(CinemachineCore.UpdateFilter.Late, deltaTime);
+                ProcessActiveCamera(GetEffectiveDeltaTime(false));
+            }
+        }
+
+#endif
+        private float GetEffectiveDeltaTime(bool fixedDelta)
+        {
+            if (SoloCamera != null)
+                return Time.unscaledDeltaTime;
+            OverrideStackFrame activeOverride = GetActiveOverride();
+            if (activeOverride != null)
+                return activeOverride.Expired ? -1 : activeOverride.deltaTime;
+            if (!Application.isPlaying)
+                return -1;
+            if (m_IgnoreTimeScale)
+                return fixedDelta ? Time.fixedDeltaTime : Time.unscaledDeltaTime;
+            return fixedDelta ? Time.fixedDeltaTime * Time.timeScale : Time.deltaTime;
+        }
+
+        private void UpdateVirtualCameras(CinemachineCore.UpdateFilter updateFilter, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBrain.UpdateVirtualCameras");
+            CinemachineCore.Instance.CurrentUpdateFilter = updateFilter;
+
+            // We always update all active virtual cameras 
+            CinemachineCore.Instance.UpdateAllActiveVirtualCameras(DefaultWorldUp, deltaTime);
+
+            // Make sure that the current live cameras get updated this frame.
+            // Only cameras that are enabled get automatically updated.
+            ICinemachineCamera vcam = ActiveVirtualCamera;
+            if (vcam != null)
+                CinemachineCore.Instance.UpdateVirtualCamera(vcam, DefaultWorldUp, deltaTime);
+            CinemachineBlend activeBlend = ActiveBlend;
+            if (activeBlend != null)
+                activeBlend.UpdateCameraState(DefaultWorldUp, deltaTime);
+
+            // Restore the filter for general use
+            CinemachineCore.Instance.CurrentUpdateFilter = CinemachineCore.UpdateFilter.Late;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        private void ProcessActiveCamera(float deltaTime)
+        {
+            // This condition should never occur, but let's be defensive
+            if (!isActiveAndEnabled)
+            {
+                mActiveCameraPreviousFrame = null;
+                mOutgoingCameraPreviousFrame = null;
+                mPreviousFrameWasOverride = false;
+                return;
+            }
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBrain.ProcessActiveCamera");
+
+            OverrideStackFrame activeOverride = GetActiveOverride();
+            ICinemachineCamera activeCamera = ActiveVirtualCamera;
+            if (activeCamera == null)
+                mOutgoingCameraPreviousFrame = null;
+            else
+            {
+                // If there is an override, we kill the in-game blend
+                if (activeOverride != null)
+                    mActiveBlend = null;
+                CinemachineBlend activeBlend = ActiveBlend;
+
+                // Check for unexpected deletion of the cached mActiveCameraPreviousFrame
+                if (mActiveCameraPreviousFrame != null && mActiveCameraPreviousFrame.VirtualCameraGameObject == null)
+                    mActiveCameraPreviousFrame = null;
+
+                // Are we transitioning cameras?
+                if (mActiveCameraPreviousFrame != activeCamera)
+                {
+                    // Do we need to create a game-play blend?
+                    if (mActiveCameraPreviousFrame != null
+                        && !mPreviousFrameWasOverride
+                        && activeOverride == null
+                        && deltaTime >= 0)
+                    {
+                        // Create a blend (will be null if a cut)
+                        float duration = 0;
+                        AnimationCurve curve = LookupBlendCurve(
+                            mActiveCameraPreviousFrame, activeCamera, out duration);
+                        activeBlend = CreateBlend(
+                                mActiveCameraPreviousFrame, activeCamera,
+                                curve, duration, mActiveBlend);
+                    }
+                    // Need this check because Timeline override sometimes inverts outgoing and incoming
+                    if (activeCamera != mOutgoingCameraPreviousFrame)
+                    {
+                        // Notify incoming camera of transition
+                        activeCamera.OnTransitionFromCamera(mActiveCameraPreviousFrame, DefaultWorldUp, deltaTime);
+
+                        // If the incoming camera is disabled, then we must assume
+                        // that it has not been updated properly
+                        if (!activeCamera.VirtualCameraGameObject.activeInHierarchy
+                            && (activeBlend == null || !activeBlend.Uses(activeCamera)))
+                        {
+                            activeCamera.UpdateCameraState(DefaultWorldUp, -1);
+                        }
+                        if (m_CameraActivatedEvent != null)
+                            m_CameraActivatedEvent.Invoke(activeCamera);
+                    }
+                    // If we're cutting without a blend, or no active cameras
+                    // were active last frame, send an event
+                    if (activeBlend == null
+                        || (activeBlend.CamA != mActiveCameraPreviousFrame
+                            && activeBlend.CamB != mActiveCameraPreviousFrame
+                            && activeBlend.CamA != mOutgoingCameraPreviousFrame
+                            && activeBlend.CamB != mOutgoingCameraPreviousFrame))
+                    {
+                        if (m_CameraCutEvent != null)
+                            m_CameraCutEvent.Invoke(this);
+                    }
+                }
+
+                // Advance the current blend (if any)
+                if (activeBlend != null)
+                {
+                    if (activeOverride == null)
+                        activeBlend.TimeInBlend += (deltaTime >= 0)
+                            ? deltaTime : activeBlend.Duration;
+                    if (activeBlend.IsComplete)
+                        activeBlend = null;
+                }
+                if (activeOverride == null)
+                    mActiveBlend = activeBlend;
+
+                // Apply the result to the Unity camera
+                CameraState state = activeCamera.State;
+                if (activeBlend != null)
+                    state = activeBlend.State;
+                PushStateToUnityCamera(state, activeCamera);
+
+                mOutgoingCameraPreviousFrame = null;
+                if (activeBlend != null)
+                    mOutgoingCameraPreviousFrame = activeBlend.CamB;
+            }
+
+            mActiveCameraPreviousFrame = activeCamera;
+            mPreviousFrameWasOverride = activeOverride != null;
+
+            if (mPreviousFrameWasOverride)
+            {
+                // Hack: Because we don't know whether blending in or out... grrr...
+                if (activeOverride.blend != null)
+                {
+                    if (activeOverride.blend.BlendWeight < 0.5f)
+                    {
+                        mActiveCameraPreviousFrame = activeOverride.blend.CamA;
+                        mOutgoingCameraPreviousFrame = activeOverride.blend.CamB;
+                    }
+                    else
+                    {
+                        mActiveCameraPreviousFrame = activeOverride.blend.CamB;
+                        mOutgoingCameraPreviousFrame = activeOverride.blend.CamA;
+                    }
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>
+        /// Is there a blend in progress?
+        /// </summary>
+        public bool IsBlending { get { return ActiveBlend != null && ActiveBlend.IsValid; } }
+
+        /// <summary>
+        /// Get the current blend in progress.  Returns null if none.
+        /// </summary>
+        public CinemachineBlend ActiveBlend
+        {
+            get
+            {
+                if (SoloCamera != null)
+                    return null;
+                OverrideStackFrame ovr = GetActiveOverride();
+                return (ovr != null && ovr.blend != null) ? ovr.blend : mActiveBlend;
+            }
+        }
+
+        /// <summary>
+        /// True if the ICinemachineCamera the current active camera,
+        /// or part of a current blend, either directly or indirectly because its parents are live.
+        /// </summary>
+        /// <param name="vcam">The camera to test whether it is live</param>
+        /// <returns>True if the camera is live (directly or indirectly)
+        /// or part of a blend in progress.</returns>
+        public bool IsLive(ICinemachineCamera vcam)
+        {
+            if (IsLiveItself(vcam))
+                return true;
+
+            ICinemachineCamera parent = vcam.ParentCamera;
+            while (parent != null && parent.IsLiveChild(vcam))
+            {
+                if (IsLiveItself(parent))
+                    return true;
+                vcam = parent;
+                parent = vcam.ParentCamera;
+            }
+            return false;
+        }
+
+        // True if this vcam (not considering parents) actually live.
+        private bool IsLiveItself(ICinemachineCamera vcam)
+        {
+            if (mActiveCameraPreviousFrame == vcam)
+                return true;
+            if (ActiveVirtualCamera == vcam)
+                return true;
+            if (IsBlending && ActiveBlend.Uses(vcam))
+                return true;
+            return false;
+        }
+
+        /// <summary>
+        /// Get the current active virtual camera.
+        /// </summary>
+        public ICinemachineCamera ActiveVirtualCamera
+        {
+            get
+            {
+                if (SoloCamera != null)
+                    return SoloCamera;
+                OverrideStackFrame ovr = GetActiveOverride();
+                return (ovr != null && ovr.camera != null) 
+                    ? ovr.camera : TopCameraFromPriorityQueue();
+            }
+        }
+
+        /// <summary>
+        /// The current state applied to the unity camera (may be the result of a blend)
+        /// </summary>
+        public CameraState CurrentCameraState { get; private set; }
+
+        /// <summary>
+        /// Get the highest-priority Enabled ICinemachineCamera
+        /// that is visible to my camera.  Culling Mask is used to test visibility.
+        /// </summary>
+        private ICinemachineCamera TopCameraFromPriorityQueue()
+        {
+            Camera outputCamera = OutputCamera;
+            int mask = outputCamera == null ? ~0 : outputCamera.cullingMask;
+            int numCameras = CinemachineCore.Instance.VirtualCameraCount;
+            for (int i = 0; i < numCameras; ++i)
+            {
+                ICinemachineCamera cam = CinemachineCore.Instance.GetVirtualCamera(i);
+                GameObject go = cam != null ? cam.VirtualCameraGameObject : null;
+                if (go != null && (mask & (1 << go.layer)) != 0)
+                    return cam;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Create a blend curve for blending from one ICinemachineCamera to another.
+        /// If there is a specific blend defined for these cameras it will be used, otherwise
+        /// a default blend will be created, which could be a cut.
+        /// </summary>
+        private AnimationCurve LookupBlendCurve(
+            ICinemachineCamera fromKey, ICinemachineCamera toKey, out float duration)
+        {
+            // Get the blend curve that's most appropriate for these cameras
+            AnimationCurve blendCurve = m_DefaultBlend.BlendCurve;
+            if (m_CustomBlends != null)
+            {
+                string fromCameraName = (fromKey != null) ? fromKey.Name : string.Empty;
+                string toCameraName = (toKey != null) ? toKey.Name : string.Empty;
+                blendCurve = m_CustomBlends.GetBlendCurveForVirtualCameras(
+                        fromCameraName, toCameraName, blendCurve);
+            }
+            var keys = blendCurve.keys;
+            duration = (keys == null || keys.Length == 0) ? 0 : keys[keys.Length-1].time;
+            return blendCurve;
+        }
+
+        /// <summary>
+        /// Create a blend from one ICinemachineCamera to another,
+        /// or to/from a point, if we can't do anything else
+        /// </summary>
+        private CinemachineBlend CreateBlend(
+            ICinemachineCamera camA, ICinemachineCamera camB, 
+            AnimationCurve blendCurve, float duration,
+            CinemachineBlend activeBlend)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineTrackedDolly.MutateCameraState");
+            if (blendCurve == null || duration <= 0 || (camA == null && camB == null))
+            {
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return null;
+            }
+            if (camA == null || activeBlend != null)
+            {
+                // Blend from the current camera position
+                CameraState state = CameraState.Default;
+                if (activeBlend != null)
+                    state = activeBlend.State;
+                else
+                {
+                    state.RawPosition = transform.position;
+                    state.RawOrientation = transform.rotation;
+                    state.Lens = LensSettings.FromCamera(OutputCamera);
+                }
+                camA = new StaticPointVirtualCamera(state, activeBlend == null ? "(none)" : "Mid-blend");
+            }
+            CinemachineBlend blend = new CinemachineBlend(camA, camB, blendCurve, duration, 0);
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return blend;
+        }
+
+        /// <summary> Apply a cref="CameraState"/> to the game object</summary>
+        private void PushStateToUnityCamera(CameraState state, ICinemachineCamera vcam)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBrain.PushStateToUnityCamera");
+            CurrentCameraState = state;
+            transform.position = state.FinalPosition;
+            transform.rotation = state.FinalOrientation;
+            Camera cam = OutputCamera;
+            if (cam != null)
+            {
+                cam.fieldOfView = state.Lens.FieldOfView;
+                cam.orthographicSize = state.Lens.OrthographicSize;
+                cam.nearClipPlane = state.Lens.NearClipPlane;
+                cam.farClipPlane = state.Lens.FarClipPlane;
+            }
+            if (sPostProcessingHandler != null)
+                sPostProcessingHandler.Invoke(this);
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        static int msCurrentFrame;
+        static int msFirstBrainObjectId;
+        static int msSubframes;
+        void AddSubframe()
+        {
+            int now = Time.frameCount;
+            if (now == msCurrentFrame)
+            {
+                if (msFirstBrainObjectId == GetInstanceID())
+                    ++msSubframes;
+            }
+            else
+            {
+                msCurrentFrame = now;
+                msFirstBrainObjectId = GetInstanceID();
+                msSubframes = 1;
+            }
+        }
+
+        /// <summary>API for CinemachineCore only: Get the number of subframes to
+        /// update the virtual cameras.</summary>
+        /// <returns>Number of subframes registered by the first brain's FixedUpdate</returns>
+        internal static int GetSubframeCount() { return Math.Max(1, msSubframes); }
+    }
+
+    /// <summary>
+    /// Point source for blending. It's not really a virtual camera, but takes
+    /// a CameraState and exposes it as a virtual camera for the purposes of blending.
+    /// </summary>
+    internal class StaticPointVirtualCamera : ICinemachineCamera
+    {
+        public StaticPointVirtualCamera(CameraState state, string name) { State = state; Name = name; }
+        public void SetState(CameraState state) { State = state; }
+
+        public string Name { get; private set; }
+        public string Description { get { return ""; }}
+        public int Priority { get; set; }
+        public Transform LookAt { get; set; }
+        public Transform Follow { get; set; }
+        public CameraState State { get; private set; }
+        public GameObject VirtualCameraGameObject { get { return null; } }
+        public ICinemachineCamera LiveChildOrSelf { get { return this; } }
+        public ICinemachineCamera ParentCamera { get { return null; } }
+        public bool IsLiveChild(ICinemachineCamera vcam) { return false; }
+        public void UpdateCameraState(Vector3 worldUp, float deltaTime) {}
+        public void OnTransitionFromCamera(ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) {}
+    }
+
+    /// <summary>
+    /// Blend result source for blending.   This exposes a CinemachineBlend object
+    /// as an ersatz virtual camera for the purposes of blending.  This achieves the purpose
+    /// of blending the result oif a blend.
+    /// </summary>
+    internal class BlendSourceVirtualCamera : ICinemachineCamera
+    {
+        public BlendSourceVirtualCamera(CinemachineBlend blend, float deltaTime)
+        {
+            Blend = blend;
+            UpdateCameraState(blend.CamA.State.ReferenceUp, deltaTime);
+        }
+
+        public CinemachineBlend Blend { get; private set; }
+
+        public string Name { get { return "Blend"; }}
+        public string Description { get { return Blend.Description; }}
+        public int Priority { get; set; }
+        public Transform LookAt { get; set; }
+        public Transform Follow { get; set; }
+        public CameraState State { get; private set; }
+        public GameObject VirtualCameraGameObject { get { return null; } }
+        public ICinemachineCamera LiveChildOrSelf { get { return Blend.CamB; } }
+        public ICinemachineCamera ParentCamera { get { return null; } }
+        public bool IsLiveChild(ICinemachineCamera vcam) { return vcam == Blend.CamA || vcam == Blend.CamB; }
+        public CameraState CalculateNewState(float deltaTime) { return State; }
+        public void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            Blend.UpdateCameraState(worldUp, deltaTime);
+            State = Blend.State;
+        }
+        public void OnTransitionFromCamera(ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) {}
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..df91cffbb977213ffcfd3419e3db06e20ee19f6d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 72ece51f2901e7445ab60da3685d6b5f
+timeCreated: 1493069520
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 100
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs
new file mode 100644
index 0000000000000000000000000000000000000000..814f616b5297ea7260b18b385c0a7e21351ccb13
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs
@@ -0,0 +1,432 @@
+using System.Collections.Generic;
+using UnityEngine;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Cinemachine ClearShot is a "manager camera" that owns and manages a set of 
+    /// Virtual Camera gameObject children.  When Live, the ClearShot will check the
+    /// children, and choose the one with the best quality shot and make it Live.
+    /// 
+    /// This can be a very powerful tool.  If the child cameras have CinemachineCollider 
+    /// extensions, they will analyze the scene for target obstructions, optimal target
+    /// distance, and other items, and report their assessment of shot quality back to 
+    /// the ClearShot parent, who will then choose the best one.  You can use this to set
+    /// up complex multi-camera coverage of a scene, and be assured that a clear shot of 
+    /// the target will always be available.
+    /// 
+    /// If multiple child cameras have the same shot quality, the one with the highest 
+    /// priority will be chosen.
+    /// 
+    /// You can also define custom blends between the ClearShot children.
+    /// </summary>
+    [DocumentationSorting(12, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineClearShot")]
+    public class CinemachineClearShot : CinemachineVirtualCameraBase
+    {
+        /// <summary>Default object for the camera children to look at (the aim target), if not specified in a child camera.  May be empty.</summary>
+        [Tooltip("Default object for the camera children to look at (the aim target), if not specified in a child camera.  May be empty if all children specify targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        /// <summary>Default object for the camera children wants to move with (the body target), if not specified in a child camera.  May be empty.</summary>
+        [Tooltip("Default object for the camera children wants to move with (the body target), if not specified in a child camera.  May be empty if all children specify targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_Follow = null;
+
+        /// <summary>When enabled, the current camera and blend will be indicated in the game window, for debugging</summary>
+        [Tooltip("When enabled, the current child camera and blend will be indicated in the game window, for debugging")]
+        [NoSaveDuringPlay]
+        public bool m_ShowDebugText = false;
+
+        /// <summary>Internal API for the editor.  Do not use this filed.</summary>
+        [SerializeField, HideInInspector, NoSaveDuringPlay]
+        public CinemachineVirtualCameraBase[] m_ChildCameras = null;
+
+        /// <summary>Wait this many seconds before activating a new child camera</summary>
+        [Tooltip("Wait this many seconds before activating a new child camera")]
+        public float m_ActivateAfter;
+
+        /// <summary>An active camera must be active for at least this many seconds</summary>
+        [Tooltip("An active camera must be active for at least this many seconds")]
+        public float m_MinDuration;
+
+        /// <summary>If checked, camera choice will be randomized if multiple cameras are equally desirable.  Otherwise, child list order will be used</summary>
+        [Tooltip("If checked, camera choice will be randomized if multiple cameras are equally desirable.  Otherwise, child list order and child camera priority will be used.")]
+        public bool m_RandomizeChoice = false;
+
+        /// <summary>The blend which is used if you don't explicitly define a blend between two Virtual Cameras</summary>
+        [CinemachineBlendDefinitionProperty]
+        [Tooltip("The blend which is used if you don't explicitly define a blend between two Virtual Cameras")]
+        public CinemachineBlendDefinition m_DefaultBlend
+            = new CinemachineBlendDefinition(CinemachineBlendDefinition.Style.Cut, 0);
+
+        /// <summary>This is the asset which contains custom settings for specific blends</summary>
+        [HideInInspector]
+        public CinemachineBlenderSettings m_CustomBlends = null;
+
+        /// <summary>Gets a brief debug description of this virtual camera, for use when displayiong debug info</summary>
+        public override string Description 
+        { 
+            get 
+            { 
+                // Show the active camera and blend
+                ICinemachineCamera vcam = LiveChild;
+                if (mActiveBlend == null) 
+                    return (vcam != null) ? "[" + vcam.Name + "]" : "(none)";
+                return mActiveBlend.Description;
+            }
+        }
+        
+        /// <summary>Get the current "best" child virtual camera, that would be chosen
+        /// if the ClearShot camera were active.</summary>
+        public ICinemachineCamera LiveChild { set; get; }
+
+        /// <summary>The CameraState of the currently live child</summary>
+        public override CameraState State { get { return m_State; } }
+
+        /// <summary>Return the live child.</summary>
+        public override ICinemachineCamera LiveChildOrSelf { get { return LiveChild; } }
+
+        /// <summary>Check whether the vcam a live child of this camera.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public override bool IsLiveChild(ICinemachineCamera vcam) 
+        { 
+            return vcam == LiveChild 
+                || (mActiveBlend != null && (vcam == mActiveBlend.CamA || vcam == mActiveBlend.CamB));
+        }
+
+        /// <summary>Get the current LookAt target.  Returns parent's LookAt if parent
+        /// is non-null and no specific LookAt defined for this camera</summary>
+        override public Transform LookAt
+        {
+            get { return ResolveLookAt(m_LookAt); }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>Get the current Follow target.  Returns parent's Follow if parent
+        /// is non-null and no specific Follow defined for this camera</summary>
+        override public Transform Follow
+        {
+            get { return ResolveFollow(m_Follow); }
+            set { m_Follow = value; }
+        }
+
+        /// <summary>Remove a Pipeline stage hook callback.
+        /// Make sure it is removed from all the children.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public override void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            base.RemovePostPipelineStageHook(d);
+            UpdateListOfChildren();
+            foreach (var vcam in m_ChildCameras)
+                vcam.RemovePostPipelineStageHook(d);
+        }
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  This implementation
+        /// updates all the children, chooses the best one, and implements any required blending.</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        public override void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineClearShot.UpdateCameraState");
+            if (!PreviousStateIsValid)
+                deltaTime = -1;
+
+            // Choose the best camera
+            UpdateListOfChildren();
+            ICinemachineCamera previousCam = LiveChild;
+            LiveChild = ChooseCurrentCamera(worldUp, deltaTime);
+
+            // Are we transitioning cameras?
+            if (previousCam != null && LiveChild != null && previousCam != LiveChild)
+            {
+                // Create a blend (will be null if a cut)
+                float duration = 0;
+                AnimationCurve curve = LookupBlendCurve(previousCam, LiveChild, out duration);
+                mActiveBlend = CreateBlend(
+                        previousCam, LiveChild,
+                        curve, duration, mActiveBlend, deltaTime);
+
+                // Notify incoming camera of transition
+                LiveChild.OnTransitionFromCamera(previousCam, worldUp, deltaTime);
+
+                // Generate Camera Activation event if live
+                CinemachineCore.Instance.GenerateCameraActivationEvent(LiveChild);
+
+                // If cutting, generate a camera cut event if live
+                if (mActiveBlend == null)
+                    CinemachineCore.Instance.GenerateCameraCutEvent(LiveChild);
+            }
+
+            // Advance the current blend (if any)
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.TimeInBlend += (deltaTime >= 0)
+                    ? deltaTime : mActiveBlend.Duration;
+                if (mActiveBlend.IsComplete)
+                    mActiveBlend = null;
+            }
+
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.UpdateCameraState(worldUp, deltaTime);
+                m_State =  mActiveBlend.State;
+            }
+            else if (LiveChild != null)
+                m_State =  LiveChild.State;
+
+            PreviousStateIsValid = true;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            InvalidateListOfChildren();
+            mActiveBlend = null;
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        public void OnTransformChildrenChanged()
+        {
+            InvalidateListOfChildren();
+        }
+
+#if UNITY_EDITOR
+        /// <summary>Displays the current active camera on the game screen, if requested</summary>
+        protected override void OnGUI()
+        {
+            base.OnGUI();
+            if (!m_ShowDebugText)
+                CinemachineGameWindowDebug.ReleaseScreenPos(this);
+            else
+            {
+                string text = Name + ": " + Description;
+                Rect r = CinemachineGameWindowDebug.GetScreenPos(this, text, GUI.skin.box);
+                GUI.Label(r, text, GUI.skin.box);
+            }
+        }
+#endif
+        /// <summary>Is there a blend in progress?</summary>
+        public bool IsBlending { get { return mActiveBlend != null; } }
+
+        CameraState m_State = CameraState.Default;
+
+        /// <summary>The list of child cameras.  These are just the immediate children in the hierarchy.</summary>
+        public CinemachineVirtualCameraBase[] ChildCameras
+        { 
+            get { UpdateListOfChildren(); return m_ChildCameras; }
+        }
+
+        float mActivationTime = 0;
+        float mPendingActivationTime = 0;
+        ICinemachineCamera mPendingCamera;
+        private CinemachineBlend mActiveBlend = null;
+
+        void InvalidateListOfChildren()
+        { 
+            m_ChildCameras = null; 
+            m_RandomizedChilden = null; 
+            LiveChild = null; 
+        }
+
+        /// <summary>If RandomizeChoice is enabled, call this to re-randomize the children next frame.
+        /// This is useful if you want to freshen up the shot.</summary>
+        public void ResetRandomization()
+        {
+            m_RandomizedChilden = null;
+            mRandomizeNow = true; 
+        }
+        
+        void UpdateListOfChildren()
+        {
+            if (m_ChildCameras != null)
+                return;
+
+            List<CinemachineVirtualCameraBase> list = new List<CinemachineVirtualCameraBase>();
+            CinemachineVirtualCameraBase[] kids = GetComponentsInChildren<CinemachineVirtualCameraBase>(true);
+            foreach (CinemachineVirtualCameraBase k in kids)
+                if (k.transform.parent == transform)
+                    list.Add(k);
+            m_ChildCameras = list.ToArray();
+
+            // Zap the cached current instructions
+            mActivationTime = mPendingActivationTime = 0;
+            mPendingCamera = null;
+            LiveChild = null;
+            mActiveBlend = null;
+        }
+
+        private bool mRandomizeNow = false;
+        private  CinemachineVirtualCameraBase[] m_RandomizedChilden = null;
+
+        private ICinemachineCamera ChooseCurrentCamera(Vector3 worldUp, float deltaTime)
+        {
+            if (m_ChildCameras == null || m_ChildCameras.Length == 0)
+            {
+                mActivationTime = 0;
+                return null;
+            }
+
+            CinemachineVirtualCameraBase[] childCameras = m_ChildCameras;
+            if (!m_RandomizeChoice)
+                m_RandomizedChilden = null;
+            else if (m_ChildCameras.Length > 1)
+            {
+                if (m_RandomizedChilden == null)
+                    m_RandomizedChilden = Randomize(m_ChildCameras);
+                childCameras = m_RandomizedChilden;
+            }
+
+            if (LiveChild != null && !LiveChild.VirtualCameraGameObject.activeSelf)
+                LiveChild = null;
+            ICinemachineCamera best = LiveChild;
+            for (int i = 0; i < childCameras.Length; ++i)
+            {
+                CinemachineVirtualCameraBase vcam = childCameras[i];
+                if (vcam != null && vcam.VirtualCameraGameObject.activeInHierarchy)
+                {
+                    // Choose the first in the list that is better than the current
+                    if (best == null 
+                        || vcam.State.ShotQuality > best.State.ShotQuality
+                        || (vcam.State.ShotQuality == best.State.ShotQuality && vcam.Priority > best.Priority)
+                        || (m_RandomizeChoice && mRandomizeNow && (ICinemachineCamera)vcam != LiveChild 
+                            && vcam.State.ShotQuality == best.State.ShotQuality 
+                            && vcam.Priority == best.Priority))
+                    {
+                        best = vcam;
+                    }
+                }
+            }
+            mRandomizeNow = false;
+
+            float now = Time.time;
+            if (mActivationTime != 0)
+            {
+                // Is it active now?
+                if (LiveChild == best)
+                {
+                    // Yes, cancel any pending
+                    mPendingActivationTime = 0;
+                    mPendingCamera = null;
+                    return best;
+                }
+
+                // Is it pending?
+                if (deltaTime >= 0)
+                {
+                    if (mPendingActivationTime != 0 && mPendingCamera == best)
+                    {
+                        // Has it been pending long enough, and are we allowed to switch away
+                        // from the active action?
+                        if ((now - mPendingActivationTime) > m_ActivateAfter
+                            && (now - mActivationTime) > m_MinDuration)
+                        {
+                            // Yes, activate it now
+                            m_RandomizedChilden = null; // reshuffle the children
+                            mActivationTime = now;
+                            mPendingActivationTime = 0;
+                            mPendingCamera = null;
+                            return best;
+                        }
+                        return LiveChild;
+                    }
+                }
+            }
+            // Neither active nor pending.
+            mPendingActivationTime = 0; // cancel the pending, if any
+            mPendingCamera = null;
+
+            // Can we activate it now?
+            if (deltaTime >= 0 && mActivationTime > 0)
+            {
+                if (m_ActivateAfter > 0
+                    || (now - mActivationTime) < m_MinDuration)
+                {
+                    // Too early - make it pending
+                    mPendingCamera = best;
+                    mPendingActivationTime = now;
+                    return LiveChild;
+                }
+            }
+            // Activate now
+            m_RandomizedChilden = null; // reshuffle the children
+            mActivationTime = now;
+            return best;
+        }
+
+        struct Pair { public int a; public float b; }
+        CinemachineVirtualCameraBase[] Randomize(CinemachineVirtualCameraBase[] src)
+        {
+            List<Pair> pairs = new List<Pair>();
+            for (int i = 0; i < src.Length; ++i)
+            {
+                Pair p = new Pair(); p.a = i; p.b = Random.Range(0, 1000f);
+                pairs.Add(p);
+            }
+            pairs.Sort((p1, p2) => (int)p1.b - (int)p2.b);
+            CinemachineVirtualCameraBase[] dst = new CinemachineVirtualCameraBase[src.Length];
+            Pair[] result = pairs.ToArray();
+            for (int i = 0; i < src.Length; ++i)
+                dst[i] = src[result[i].a];
+            return dst;
+        }
+
+        private AnimationCurve LookupBlendCurve(
+            ICinemachineCamera fromKey, ICinemachineCamera toKey, out float duration)
+        {
+            // Get the blend curve that's most appropriate for these cameras
+            AnimationCurve blendCurve = m_DefaultBlend.BlendCurve;
+            if (m_CustomBlends != null)
+            {
+                string fromCameraName = (fromKey != null) ? fromKey.Name : string.Empty;
+                string toCameraName = (toKey != null) ? toKey.Name : string.Empty;
+                blendCurve = m_CustomBlends.GetBlendCurveForVirtualCameras(
+                        fromCameraName, toCameraName, blendCurve);
+            }
+            var keys = blendCurve.keys;
+            duration = (keys == null || keys.Length == 0) ? 0 : keys[keys.Length-1].time;
+            return blendCurve;
+        }
+
+        private CinemachineBlend CreateBlend(
+            ICinemachineCamera camA, ICinemachineCamera camB, 
+            AnimationCurve blendCurve, float duration,
+            CinemachineBlend activeBlend, float deltaTime)
+        {
+            if (blendCurve == null || duration <= 0 || (camA == null && camB == null))
+                return null;
+
+            if (camA == null || activeBlend != null)
+            {
+                // Blend from the current camera position
+                CameraState state = (activeBlend != null) ? activeBlend.State : State;
+                camA = new StaticPointVirtualCamera(state, (activeBlend != null) ? "Mid-blend" : "(none)");
+            }
+            return new CinemachineBlend(camA, camB, blendCurve, duration, 0);
+        }
+
+        /// <summary>Notification that this virtual camera is going live.
+        /// This implementation resets the child randomization.</summary>
+        /// <param name="fromCam">The camera being deactivated.  May be null.</param>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public override void OnTransitionFromCamera(
+            ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) 
+        {
+            base.OnTransitionFromCamera(fromCam, worldUp, deltaTime);
+            if (m_RandomizeChoice && mActiveBlend == null)
+            {
+                m_RandomizedChilden = null;
+                LiveChild = null;
+                UpdateCameraState(worldUp, deltaTime);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5807c274507915e1c12363892b8cba9dbd22776b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d62f748f5292bb343be9e6b0c84416d9
+timeCreated: 1489088130
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs
new file mode 100644
index 0000000000000000000000000000000000000000..99e6739127418a63ab632695ed0d6672d42cf6d8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs
@@ -0,0 +1,565 @@
+using UnityEngine;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+using UnityEngine.Serialization;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An add-on module for Cinemachine Virtual Camera that post-processes
+    /// the final position of the virtual camera. Based on the supplied settings,
+    /// the Collider will attempt to preserve the line of sight
+    /// with the LookAt target of the virtual camera by moving 
+    /// away from objects that will obstruct the view.
+    /// 
+    /// Additionally, the Collider can be used to assess the shot quality and 
+    /// report this as a field in the camera State.
+    /// </summary>
+    [DocumentationSorting(15, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [AddComponentMenu("")] // Hide in menu
+    [SaveDuringPlay]
+    public class CinemachineCollider : CinemachineExtension
+    {
+        /// <summary>The Unity layer mask against which the collider will raycast.</summary>
+        [Header("Obstacle Detection")]
+        [Tooltip("The Unity layer mask against which the collider will raycast")]
+        public LayerMask m_CollideAgainst = 1;
+
+        /// <summary>Obstacles with this tag will be ignored.  It is a good idea to set this field to the target's tag</summary>
+        [TagField]
+        [Tooltip("Obstacles with this tag will be ignored.  It is a good idea to set this field to the target's tag")]
+        public string m_IgnoreTag = string.Empty;
+
+        /// <summary>Obstacles closer to the target than this will be ignored</summary>
+        [Tooltip("Obstacles closer to the target than this will be ignored")]
+        public float m_MinimumDistanceFromTarget = 0.1f;
+
+        /// <summary>
+        /// When enabled, will attempt to resolve situations where the line of sight to the 
+        /// target is blocked by an obstacle
+        /// </summary>
+        [Space]
+        [Tooltip("When enabled, will attempt to resolve situations where the line of sight to the target is blocked by an obstacle")]
+        [FormerlySerializedAs("m_PreserveLineOfSight")]
+        public bool m_AvoidObstacles = true;
+
+        /// <summary>
+        /// The raycast distance to test for when checking if the line of sight to this camera's target is clear.
+        /// </summary>
+        [Tooltip("The maximum raycast distance when checking if the line of sight to this camera's target is clear.  If the setting is 0 or less, the current actual distance to target will be used.")]
+        [FormerlySerializedAs("m_LineOfSightFeelerDistance")]
+        public float m_DistanceLimit = 0f;
+
+        /// <summary>
+        /// Camera will try to maintain this distance from any obstacle.  
+        /// Increase this value if you are seeing inside obstacles due to a large 
+        /// FOV on the camera.
+        /// </summary>
+        [Tooltip("Camera will try to maintain this distance from any obstacle.  Try to keep this value small.  Increase it if you are seeing inside obstacles due to a large FOV on the camera.")]
+        public float m_CameraRadius = 0.1f;
+
+        /// <summary>The way in which the Collider will attempt to preserve sight of the target.</summary>
+        public enum ResolutionStrategy 
+        { 
+            /// <summary>Camera will be pulled forward along its Z axis until it is in front of 
+            /// the nearest obstacle</summary>
+            PullCameraForward, 
+            /// <summary>In addition to pulling the camera forward, an effort will be made to 
+            /// return the camera to its original height</summary>
+            PreserveCameraHeight,
+            /// <summary>In addition to pulling the camera forward, an effort will be made to 
+            /// return the camera to its original distance from the target</summary>
+            PreserveCameraDistance
+        };
+        /// <summary>The way in which the Collider will attempt to preserve sight of the target.</summary>
+        [Tooltip("The way in which the Collider will attempt to preserve sight of the target.")]
+        public ResolutionStrategy m_Strategy = ResolutionStrategy.PreserveCameraHeight;
+
+        /// <summary>
+        /// Upper limit on how many obstacle hits to process.  Higher numbers may impact performance.  
+        /// In most environments, 4 is enough.  
+        /// </summary>
+        [Range(1, 10)]
+        [Tooltip("Upper limit on how many obstacle hits to process.  Higher numbers may impact performance.  In most environments, 4 is enough.")]
+        public int m_MaximumEffort = 4;
+
+        /// <summary>
+        /// The gradualness of collision resolution.  Higher numbers will move the 
+        /// camera more gradually away from obstructions.
+        /// </summary>
+        [Range(0, 10)]
+        [Tooltip("The gradualness of collision resolution.  Higher numbers will move the camera more gradually away from obstructions.")]
+        [FormerlySerializedAs("m_Smoothing")]
+        public float m_Damping = 0;
+
+        /// <summary>If greater than zero, a higher score will be given to shots when the target is closer to
+        /// this distance.  Set this to zero to disable this feature</summary>
+        [Header("Shot Evaluation")]
+        [Tooltip("If greater than zero, a higher score will be given to shots when the target is closer to this distance.  Set this to zero to disable this feature.")]
+        public float m_OptimalTargetDistance = 0;
+
+        /// <summary>See wheter an object is blocking the camera's view of the target</summary>
+        /// <param name="vcam">The virtual camera in question.  This might be different from the
+        /// virtual camera that owns the collider, in the event that the camera has children</param>
+        /// <returns>True if something is blocking the view</returns>
+        public bool IsTargetObscured(ICinemachineCamera vcam)
+        {
+            return GetExtraState<VcamExtraState>(vcam).targetObscured;
+        }
+
+        /// <summary>See whether the virtual camera has been moved nby the collider</summary>
+        /// <param name="vcam">The virtual camera in question.  This might be different from the
+        /// virtual camera that owns the collider, in the event that the camera has children</param>
+        /// <returns>True if the virtual camera has been displaced due to collision or
+        /// target obstruction</returns>
+        public bool CameraWasDisplaced(CinemachineVirtualCameraBase vcam)
+        {
+            return GetExtraState<VcamExtraState>(vcam).colliderDisplacement > 0;
+        }
+
+        private void OnValidate()
+        {
+            m_DistanceLimit = Mathf.Max(0, m_DistanceLimit);
+            m_CameraRadius = Mathf.Max(0, m_CameraRadius);
+            m_MinimumDistanceFromTarget = Mathf.Max(0.01f, m_MinimumDistanceFromTarget);
+            m_OptimalTargetDistance = Mathf.Max(0, m_OptimalTargetDistance);
+        }
+
+        /// <summary>Cleanup</summary>
+        protected override void OnDestroy()
+        {
+            base.OnDestroy();
+            CleanupCameraCollider();
+        }
+
+        /// This must be small but greater than 0 - reduces false results due to precision
+        const float PrecisionSlush = 0.001f;
+
+        // Per-vcam extra state info
+        class VcamExtraState
+        {
+            public Vector3 m_previousDisplacement;
+            public float colliderDisplacement;
+            public bool targetObscured;
+            public List<Vector3> debugResolutionPath;
+
+            public void AddPointToDebugPath(Vector3 p)
+            {
+#if UNITY_EDITOR
+                if (debugResolutionPath == null)
+                    debugResolutionPath = new List<Vector3>();
+                debugResolutionPath.Add(p);
+#endif
+            }
+        };
+
+        /// <summary>Inspector API for debugging collision resolution path</summary>
+        public List<List<Vector3>> DebugPaths 
+        {
+            get
+            { 
+                List<List<Vector3>> list = new List<List<Vector3>>();
+                List<VcamExtraState> extraStates = GetAllExtraStates<VcamExtraState>();
+                foreach (var v in extraStates)
+                    if (v.debugResolutionPath != null)
+                        list.Add(v.debugResolutionPath);
+                return list;
+            }
+        }
+
+        /// <summary>Callcack to to the collision resolution and shot evaluation</summary>
+        protected override void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
+        {
+            VcamExtraState extra = null;
+            if (stage == CinemachineCore.Stage.Body)
+            {
+                extra = GetExtraState<VcamExtraState>(vcam);
+                extra.targetObscured = false;
+                extra.colliderDisplacement = 0;
+                extra.debugResolutionPath = null;
+            }
+
+            // Move the body before the Aim is calculated
+            if (stage == CinemachineCore.Stage.Body)
+            {
+                if (m_AvoidObstacles)
+                {
+                    Vector3 displacement = PreserveLignOfSight(ref state, ref extra);
+                    if (m_Damping > 0 && deltaTime >= 0)
+                    {
+                        Vector3 delta = displacement - extra.m_previousDisplacement;
+                        delta = Damper.Damp(delta, m_Damping, deltaTime);
+                        displacement = extra.m_previousDisplacement + delta;
+                    }
+                    extra.m_previousDisplacement = displacement;
+                    state.PositionCorrection += displacement;
+                    extra.colliderDisplacement += displacement.magnitude;
+                }
+            }
+            // Rate the shot after the aim was set
+            if (stage == CinemachineCore.Stage.Aim)
+            {
+                extra = GetExtraState<VcamExtraState>(vcam);
+                extra.targetObscured = CheckForTargetObstructions(state);
+
+                // GML these values are an initial arbitrary attempt at rating quality
+                if (extra.targetObscured)
+                    state.ShotQuality *= 0.2f;
+                if (extra.colliderDisplacement > 0)
+                    state.ShotQuality *= 0.8f;
+
+                float nearnessBoost = 0;
+                const float kMaxNearBoost = 0.2f;
+                if (m_OptimalTargetDistance > 0 && state.HasLookAt)
+                {
+                    float distance = Vector3.Magnitude(state.ReferenceLookAt - state.FinalPosition);
+                    if (distance <= m_OptimalTargetDistance)
+                    {
+                        float threshold = m_OptimalTargetDistance / 2;
+                        if (distance >= threshold)
+                            nearnessBoost = kMaxNearBoost * (distance - threshold)
+                                / (m_OptimalTargetDistance - threshold);
+                    }
+                    else
+                    {
+                        distance -= m_OptimalTargetDistance;
+                        float threshold = m_OptimalTargetDistance * 3;
+                        if (distance < threshold)
+                            nearnessBoost = kMaxNearBoost * (1f - (distance / threshold));
+                    }
+                    state.ShotQuality *= (1f + nearnessBoost);
+                }
+            }
+        }
+
+        private Vector3 PreserveLignOfSight(ref CameraState state, ref VcamExtraState extra)
+        {
+            Vector3 displacement = Vector3.zero;
+            if (state.HasLookAt)
+            {
+                Vector3 cameraPos = state.CorrectedPosition;
+                Vector3 lookAtPos = state.ReferenceLookAt;
+                Vector3 pos = cameraPos;
+                Vector3 dir = pos - lookAtPos;
+                float targetDistance = dir.magnitude;
+                float minDistanceFromTarget = Mathf.Max(m_MinimumDistanceFromTarget, Epsilon);
+                if (targetDistance > minDistanceFromTarget)
+                {
+                    dir.Normalize();
+                    float rayLength = targetDistance - minDistanceFromTarget;
+                    if (m_DistanceLimit > Epsilon)
+                        rayLength = Mathf.Min(m_DistanceLimit, rayLength);
+
+                    // Make a ray that looks towards the camera, to get the most distant obstruction
+                    Ray ray = new Ray(pos - rayLength * dir, dir);
+                    rayLength += PrecisionSlush;
+                    if (rayLength > Epsilon)
+                    {
+                        RaycastHit hitInfo;
+                        if (RaycastIgnoreTag(ray, out hitInfo, rayLength))
+                        {
+                            // Pull camera forward in front of obstacle
+                            float adjustment = Mathf.Max(0, hitInfo.distance - PrecisionSlush);
+                            pos = ray.GetPoint(adjustment);
+                            extra.AddPointToDebugPath(pos);
+                            if (m_Strategy != ResolutionStrategy.PullCameraForward)
+                            {
+                                pos = PushCameraBack(
+                                    pos, dir, hitInfo, lookAtPos, 
+                                    new Plane(state.ReferenceUp, cameraPos),
+                                    targetDistance, m_MaximumEffort, ref extra);
+                            }
+                        }
+                    }
+                }
+                if (m_CameraRadius > Epsilon)
+                    pos += RespectCameraRadius(pos, state.ReferenceLookAt);
+                else if (mCameraColliderGameObject != null)
+                    CleanupCameraCollider();
+                displacement = pos - cameraPos;
+            }
+            return displacement;
+        }
+
+        private bool RaycastIgnoreTag(Ray ray, out RaycastHit hitInfo, float rayLength)
+        {
+            while (Physics.Raycast(
+                ray, out hitInfo, rayLength, m_CollideAgainst.value, 
+                QueryTriggerInteraction.Ignore))
+            {
+                if (m_IgnoreTag.Length == 0 || !hitInfo.collider.CompareTag(m_IgnoreTag))
+                    return true;
+
+                // Pull ray origin forward in front of tagged obstacle
+                Ray inverseRay = new Ray(ray.GetPoint(rayLength), -ray.direction);
+                if (!hitInfo.collider.Raycast(inverseRay, out hitInfo, rayLength))
+                    break; // should never happen!
+                rayLength = hitInfo.distance - PrecisionSlush;
+                if (rayLength < Epsilon)
+                    break;
+                ray.origin = inverseRay.GetPoint(rayLength);
+            }
+            return false;
+        }
+        
+        private Vector3 PushCameraBack(
+            Vector3 currentPos, Vector3 pushDir, RaycastHit obstacle,
+            Vector3 lookAtPos, Plane startPlane, float targetDistance, int iterations,
+            ref VcamExtraState extra)
+        {
+            // Take a step along the wall.
+            Vector3 pos = currentPos;
+            Vector3 dir = Vector3.zero;
+            if (!GetWalkingDirection(pos, pushDir, obstacle, ref dir))
+                return pos;
+
+            Ray ray = new Ray(pos, dir);
+            float distance = GetPushBackDistance(ray, startPlane, targetDistance, lookAtPos);
+            if (distance <= Epsilon)
+                return pos;
+
+            // Check only as far as the obstacle bounds
+            float clampedDistance = ClampRayToBounds(ray, distance, obstacle.collider.bounds);
+            distance = Mathf.Min(distance, clampedDistance + PrecisionSlush);
+
+            RaycastHit hitInfo;
+            if (RaycastIgnoreTag(ray, out hitInfo, distance))
+            {
+                // We hit something.  Stop there and take a step along that wall.
+                float adjustment = hitInfo.distance - PrecisionSlush;
+                pos = ray.GetPoint(adjustment);
+                extra.AddPointToDebugPath(pos);
+                if (iterations > 1)
+                    pos = PushCameraBack(
+                        pos, dir, hitInfo, 
+                        lookAtPos, startPlane, 
+                        targetDistance, iterations-1, ref extra);
+
+                return pos;
+            }
+
+            // Didn't hit anything.  Can we push back all the way now?
+            pos = ray.GetPoint(distance);
+
+            // First check if we can still see the target.  If not, abort
+            dir = pos - lookAtPos;
+            float d = dir.magnitude;
+            RaycastHit hitInfo2;
+            if (d < Epsilon || RaycastIgnoreTag(new Ray(lookAtPos, dir), out hitInfo2, d - PrecisionSlush))
+                return currentPos;
+
+            // All clear
+            ray = new Ray(pos, dir);
+            extra.AddPointToDebugPath(pos);
+            distance = GetPushBackDistance(ray, startPlane, targetDistance, lookAtPos);
+            if (distance > Epsilon)
+            {
+                if (!RaycastIgnoreTag(ray, out hitInfo, distance))
+                {
+                    pos = ray.GetPoint(distance); // no obstacles - all good
+                    extra.AddPointToDebugPath(pos);
+                }
+                else 
+                {
+                    // We hit something.  Stop there and maybe take a step along that wall
+                    float adjustment = hitInfo.distance - PrecisionSlush;
+                    pos = ray.GetPoint(adjustment);
+                    extra.AddPointToDebugPath(pos);
+                    if (iterations > 1)
+                        pos = PushCameraBack(
+                            pos, dir, hitInfo, lookAtPos, startPlane, 
+                            targetDistance, iterations-1, ref extra);
+                }
+            }
+            return pos;
+        }
+
+        private RaycastHit[] m_CornerBuffer = new RaycastHit[4];
+        private bool GetWalkingDirection(
+            Vector3 pos, Vector3 pushDir, RaycastHit obstacle, ref Vector3 outDir)
+        {
+            Vector3 normal2 = obstacle.normal;
+
+            // Check for nearby obstacles.  Are we in a corner?
+            float nearbyDistance = PrecisionSlush * 5;
+            int numFound = Physics.SphereCastNonAlloc(
+                pos, nearbyDistance, pushDir.normalized, m_CornerBuffer, 0, 
+                m_CollideAgainst.value, QueryTriggerInteraction.Ignore);
+            if (numFound > 1)
+            {
+                // Calculate the second normal
+                for (int i = 0; i < numFound; ++i)
+                {
+                    if (m_IgnoreTag.Length > 0 && m_CornerBuffer[i].collider.CompareTag(m_IgnoreTag))
+                        continue;
+                    Type type = m_CornerBuffer[i].collider.GetType();
+                    if (type == typeof(BoxCollider) 
+                        || type == typeof(SphereCollider) 
+                        || type == typeof(CapsuleCollider))
+                    {
+                        Vector3 p = m_CornerBuffer[i].collider.ClosestPoint(pos);
+                        Vector3 d = p - pos;
+                        if (d.magnitude > Vector3.kEpsilon)
+                        {
+                            if (m_CornerBuffer[i].collider.Raycast(
+                                new Ray(pos, d), out m_CornerBuffer[i], nearbyDistance))
+                            {
+                                if (!(m_CornerBuffer[i].normal - obstacle.normal).AlmostZero())
+                                    normal2 = m_CornerBuffer[i].normal;
+                                    break;
+                            }
+                        }
+                    }
+                }
+            }
+
+            // Walk along the wall.  If we're in a corner, walk their intersecting line
+            Vector3 dir = Vector3.Cross(obstacle.normal, normal2);
+            if (dir.AlmostZero())
+                dir = Vector3.ProjectOnPlane(pushDir, obstacle.normal);
+            else 
+            {
+                float dot = Vector3.Dot(dir, pushDir);
+                if (Mathf.Abs(dot) < Epsilon)
+                    return false;
+                if (dot < 0)
+                    dir = -dir;
+            }
+            if (dir.AlmostZero())
+                return false;
+
+            outDir = dir.normalized;
+            return true;
+        }
+
+        const float AngleThreshold = 0.1f;
+        float GetPushBackDistance(Ray ray, Plane startPlane, float targetDistance, Vector3 lookAtPos)
+        {
+            float maxDistance = targetDistance - (ray.origin - lookAtPos).magnitude;
+            if (maxDistance < Epsilon)
+                return 0;
+            if (m_Strategy == ResolutionStrategy.PreserveCameraDistance)
+                return maxDistance;
+
+            float distance;
+            if (!startPlane.Raycast(ray, out distance))
+                distance = 0;
+            distance = Mathf.Min(maxDistance, distance);
+            if (distance < Epsilon)
+                return 0;
+
+            // If we are close to parallel to the plane, we have to take special action
+            float angle = Mathf.Abs(Vector3.Angle(startPlane.normal, ray.direction) - 90);
+            if (angle < AngleThreshold)
+                distance = Mathf.Lerp(0, distance, angle / AngleThreshold);
+            return distance;
+        }
+                
+        float ClampRayToBounds(Ray ray, float distance, Bounds bounds)
+        {
+            float d;
+            if (Vector3.Dot(ray.direction, Vector3.up) > 0)
+            {
+                if (new Plane(Vector3.down, bounds.max).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+            else if (Vector3.Dot(ray.direction, Vector3.down) > 0)
+            {
+                if (new Plane(Vector3.up, bounds.min).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+
+            if (Vector3.Dot(ray.direction, Vector3.right) > 0)
+            {
+                if (new Plane(Vector3.left, bounds.max).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+            else if (Vector3.Dot(ray.direction, Vector3.left) > 0)
+            {
+                if (new Plane(Vector3.right, bounds.min).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+
+            if (Vector3.Dot(ray.direction, Vector3.forward) > 0)
+            {
+                if (new Plane(Vector3.back, bounds.max).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+            else if (Vector3.Dot(ray.direction, Vector3.back) > 0)
+            {
+                if (new Plane(Vector3.forward, bounds.min).Raycast(ray, out d) && d > Epsilon)
+                    distance = Mathf.Min(distance, d);
+            }
+            return distance;
+        }
+
+        private Collider[] mColliderBuffer = new Collider[5];
+        private SphereCollider mCameraCollider;
+        private GameObject mCameraColliderGameObject;
+        private Vector3 RespectCameraRadius(Vector3 cameraPos, Vector3 lookAtPos)
+        {
+            Vector3 result = Vector3.zero;
+            int numObstacles = Physics.OverlapSphereNonAlloc(
+                cameraPos, m_CameraRadius, mColliderBuffer, 
+                m_CollideAgainst, QueryTriggerInteraction.Ignore);
+            if (numObstacles > 0)
+            {
+                if (mCameraColliderGameObject == null)
+                {
+                    mCameraColliderGameObject = new GameObject("Cinemachine Collider Collider");
+                    mCameraColliderGameObject.hideFlags = HideFlags.HideAndDontSave;
+                    mCameraColliderGameObject.transform.position = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);
+                    mCameraColliderGameObject.SetActive(true);
+                    mCameraCollider = mCameraColliderGameObject.AddComponent<SphereCollider>();
+                }
+                mCameraCollider.radius = m_CameraRadius;
+                for (int i = 0; i < numObstacles; ++i)
+                {
+                    Collider c = mColliderBuffer[i];
+                    if (m_IgnoreTag.Length > 0 && c.CompareTag(m_IgnoreTag))
+                        continue;
+                    Vector3 dir;
+                    float distance;
+                    if (Physics.ComputePenetration(
+                        mCameraCollider, cameraPos, Quaternion.identity, 
+                        c, c.transform.position, c.transform.rotation,
+                        out dir, out distance))
+                    {
+                        result += dir * distance;   // naive, but maybe enough
+                    }
+                }
+            }
+            return result;
+        }
+
+        private void CleanupCameraCollider()
+        {
+            if (mCameraColliderGameObject != null)
+                DestroyImmediate(mCameraColliderGameObject);
+            mCameraColliderGameObject = null;
+            mCameraCollider = null;
+        }
+
+        private bool CheckForTargetObstructions(CameraState state)
+        {
+            if (state.HasLookAt)
+            {
+                Vector3 lookAtPos = state.ReferenceLookAt;
+                Vector3 pos = state.CorrectedPosition;
+                Vector3 dir = lookAtPos - pos;
+                float distance = dir.magnitude;
+                if (distance < Mathf.Max(m_MinimumDistanceFromTarget, Epsilon))
+                    return true;
+                Ray ray = new Ray(pos, dir.normalized);
+                RaycastHit hitInfo;
+                if (RaycastIgnoreTag(ray, out hitInfo, distance - m_MinimumDistanceFromTarget))
+                    return true;
+            }
+            return false;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..64be66f48a9918842cdc35c5527d5def1bc66bba
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e501d18bb52cf8c40b1853ca4904654f
+timeCreated: 1491854845
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f4ff41b6dfe528489de0d5ab12ede892f1402812
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs
@@ -0,0 +1,222 @@
+using UnityEngine;
+using System.Collections.Generic;
+using Cinemachine.Utility;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An add-on module for Cinemachine Virtual Camera that post-processes
+    /// the final position of the virtual camera. It will confine the virtual
+    /// camera's position to the volume specified in the Bounding Volume field.
+    /// </summary>
+    [DocumentationSorting(22, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [AddComponentMenu("")] // Hide in menu
+    [SaveDuringPlay]
+    public class CinemachineConfiner : CinemachineExtension
+    {
+        /// <summary>The confiner can operate using a 2D bounding shape or a 3D bounding volume</summary>
+        public enum Mode 
+        { 
+            Confine2D, 
+            Confine3D 
+        };
+        /// <summary>The confiner can operate using a 2D bounding shape or a 3D bounding volume</summary>
+        [Tooltip("The confiner can operate using a 2D bounding shape or a 3D bounding volume")]
+        public Mode m_ConfineMode;
+
+        /// <summary>The volume within which the camera is to be contained.</summary>
+        [Tooltip("The volume within which the camera is to be contained")]
+        public Collider m_BoundingVolume;
+        
+        /// <summary>The 2D shape within which the camera is to be contained.</summary>
+        [Tooltip("The 2D shape within which the camera is to be contained")]
+        public Collider2D m_BoundingShape2D;
+
+        /// <summary>If camera is orthographic, screen edges will be confined to the volume.</summary>
+        [Tooltip("If camera is orthographic, screen edges will be confined to the volume.  If not checked, then only the camera center will be confined")]
+        public bool m_ConfineScreenEdges = true;
+
+        /// <summary>How gradually to return the camera to the bounding volume if it goes beyond the borders</summary>
+        [Tooltip("How gradually to return the camera to the bounding volume if it goes beyond the borders.  Higher numbers are more gradual.")]
+        [Range(0, 10)]
+        public float m_Damping = 0;
+
+        /// <summary>See whether the virtual camera has been moved by the confiner</summary>
+        /// <param name="vcam">The virtual camera in question.  This might be different from the
+        /// virtual camera that owns the confiner, in the event that the camera has children</param>
+        /// <returns>True if the virtual camera has been repositioned</returns>
+        public bool CameraWasDisplaced(CinemachineVirtualCameraBase vcam)
+        {
+            return GetExtraState<VcamExtraState>(vcam).confinerDisplacement > 0;
+        }
+        
+        private void OnValidate()
+        {
+            m_Damping = Mathf.Max(0, m_Damping);
+        }
+
+        class VcamExtraState
+        {
+            public Vector3 m_previousDisplacement;
+            public float confinerDisplacement;
+        };
+        
+        /// <summary>Check if the bounding volume is defined</summary>
+        public bool IsValid 
+        {  
+            get
+            {
+                return ((m_ConfineMode == Mode.Confine3D && m_BoundingVolume != null)
+                    || (m_ConfineMode == Mode.Confine2D && m_BoundingShape2D != null));
+            }
+        }
+
+        /// <summary>Callback to to the camera confining</summary>
+        protected override void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
+        {
+            if (IsValid)
+            {
+                // Move the body before the Aim is calculated
+                if (stage == CinemachineCore.Stage.Body)
+                {
+                    Vector3 displacement;
+                    if (m_ConfineScreenEdges && state.Lens.Orthographic)
+                        displacement = ConfineScreenEdges(vcam, ref state);
+                    else
+                        displacement = ConfinePoint(state.CorrectedPosition);
+
+                    VcamExtraState extra = GetExtraState<VcamExtraState>(vcam);
+                    if (m_Damping > 0 && deltaTime >= 0)
+                    {
+                        Vector3 delta = displacement - extra.m_previousDisplacement;
+                        delta = Damper.Damp(delta, m_Damping, deltaTime);
+                        displacement = extra.m_previousDisplacement + delta;
+                    }
+                    extra.m_previousDisplacement = displacement;
+                    state.PositionCorrection += displacement;
+                    extra.confinerDisplacement = displacement.magnitude;
+                }
+            }
+        }
+
+        private List<List<Vector2>> m_pathCache;
+       
+        /// <summary>Call this if the bounding shape's points change at runtime</summary>
+        public void InvalidatePathCache() { m_pathCache = null; }
+
+        bool ValidatePathCache()
+        {
+            Type colliderType = m_BoundingShape2D == null ? null:  m_BoundingShape2D.GetType();
+            if (colliderType == typeof(PolygonCollider2D))
+            {
+                PolygonCollider2D poly = m_BoundingShape2D as PolygonCollider2D;
+                if (m_pathCache == null || m_pathCache.Count != poly.pathCount)
+                {
+                    m_pathCache = new List<List<Vector2>>();
+                    for (int i = 0; i < poly.pathCount; ++i)
+                    {
+                        Vector2[] path = poly.GetPath(i);
+                        List<Vector2> dst = new List<Vector2>();
+                        for (int j = 0; j < path.Length; ++j)
+                            dst.Add(path[j]);
+                        m_pathCache.Add(dst);
+                    }
+                }
+                return true;
+            }
+            else if (colliderType == typeof(CompositeCollider2D))
+            {
+                CompositeCollider2D poly = m_BoundingShape2D as CompositeCollider2D;
+                if (m_pathCache == null || m_pathCache.Count != poly.pathCount)
+                {
+                    m_pathCache = new List<List<Vector2>>();
+                    Vector2[] path = new Vector2[poly.pointCount];
+                    for (int i = 0; i < poly.pathCount; ++i)
+                    {
+                        int numPoints = poly.GetPath(i, path);
+                        List<Vector2> dst = new List<Vector2>();
+                        for (int j = 0; j < numPoints; ++j)
+                            dst.Add(path[j]);
+                        m_pathCache.Add(dst);
+                    }
+                }
+                return true;
+            }
+            InvalidatePathCache();
+            return false;
+        }
+
+        private Vector3 ConfinePoint(Vector3 camPos)
+        {
+            // 3D version
+            if (m_ConfineMode == Mode.Confine3D)
+                return m_BoundingVolume.ClosestPoint(camPos) - camPos;
+
+            // 2D version
+            if (m_BoundingShape2D.OverlapPoint(camPos))
+                return Vector3.zero;
+
+            // Find the nearest point on the shape's boundary
+            if (!ValidatePathCache())
+                return Vector3.zero;
+
+            Vector2 p = camPos;
+            Vector2 closest = p;
+            float bestDistance = float.MaxValue;
+            for (int i = 0; i < m_pathCache.Count; ++i)
+            {
+                int numPoints = m_pathCache[i].Count;
+                if (numPoints > 0)
+                {
+                    Vector2 v0 = m_BoundingShape2D.transform.TransformPoint(m_pathCache[i][numPoints-1]);
+                    for (int j = 0; j < numPoints; ++j)
+                    {
+                        Vector2 v = m_BoundingShape2D.transform.TransformPoint(m_pathCache[i][j]);
+                        Vector2 c = Vector2.Lerp(v0, v, p.ClosestPointOnSegment(v0, v));
+                        float d = Vector2.SqrMagnitude(p - c);
+                        if (d < bestDistance)
+                        {
+                            bestDistance = d;
+                            closest = c;
+                        }
+                        v0 = v;
+                    }
+                }
+            }
+            return closest - p;
+        }
+
+        // Camera must be orthographic
+        private Vector3 ConfineScreenEdges(CinemachineVirtualCameraBase vcam, ref CameraState state)
+        {
+            Quaternion rot = Quaternion.Inverse(state.CorrectedOrientation);
+            float dy = state.Lens.OrthographicSize;
+            float dx = dy * state.Lens.Aspect;
+            Vector3 vx = (rot * Vector3.right) * dx;
+            Vector3 vy = (rot * Vector3.up) * dy;
+
+            Vector3 displacement = Vector3.zero;
+            Vector3 camPos = state.CorrectedPosition;
+            const int kMaxIter = 12;
+            for (int i = 0; i < kMaxIter; ++i)
+            {
+                Vector3 d = ConfinePoint((camPos - vy) - vx);
+                if (d.AlmostZero())
+                    d = ConfinePoint((camPos - vy) + vx);
+                if (d.AlmostZero())
+                    d = ConfinePoint((camPos + vy) - vx);
+                if (d.AlmostZero())
+                    d = ConfinePoint((camPos + vy) + vx);
+                if (d.AlmostZero())
+                    break;
+                displacement += d;
+                camPos += d;
+            }
+            return displacement;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..00eb9ad62ba8ac4adda36324bda02cf1b832f1e0
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a2fba25a5cd15594e8f050a11e386c80
+timeCreated: 1503419997
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs
new file mode 100644
index 0000000000000000000000000000000000000000..42e97cfdfae5b9a25fbb5be8544c782f2d6fc019
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs
@@ -0,0 +1,70 @@
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a very simple behaviour that constrains its transform to a CinemachinePath.  
+    /// It can be used to animate any objects along a path, or as a Follow target for 
+    /// Cinemachine Virtual Cameras.
+    /// </summary>
+    [DocumentationSorting(21f, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    public class CinemachineDollyCart : MonoBehaviour
+    {
+        /// <summary>The path to follow</summary>
+        [Tooltip("The path to follow")]
+        public CinemachinePathBase m_Path;
+
+        /// <summary>This enum defines the options available for the update method.</summary>
+        public enum UpdateMethod
+        {
+            /// <summary>Updated in normal MonoBehaviour Update.</summary>
+            Update,
+            /// <summary>Updated in sync with the Physics module, in FixedUpdate</summary>
+            FixedUpdate
+        };
+
+        /// <summary>When to move the cart, if Velocity is non-zero</summary>
+        [Tooltip("When to move the cart, if Velocity is non-zero")]
+        public UpdateMethod m_UpdateMethod = UpdateMethod.Update;
+
+        /// <summary>How to interpret the Path Position</summary>
+        [Tooltip("How to interpret the Path Position.  If set to Path Units, values are as follows: 0 represents the first waypoint on the path, 1 is the second, and so on.  Values in-between are points on the path in between the waypoints.  If set to Distance, then Path Position represents distance along the path.")]
+        public CinemachinePathBase.PositionUnits m_PositionUnits = CinemachinePathBase.PositionUnits.Distance;
+
+        /// <summary>Move the cart with this speed</summary>
+        [Tooltip("Move the cart with this speed along the path.  The value is interpreted according to the Position Units setting.")]
+        [FormerlySerializedAs("m_Velocity")]
+        public float m_Speed;
+
+        /// <summary>The cart's current position on the path, in distance units</summary>
+        [Tooltip("The position along the path at which the cart will be placed.  This can be animated directly or, if the velocity is non-zero, will be updated automatically.  The value is interpreted according to the Position Units setting.")]
+        [FormerlySerializedAs("m_CurrentDistance")]
+        public float m_Position;
+
+        void FixedUpdate()
+        {
+            if (m_UpdateMethod == UpdateMethod.FixedUpdate)
+                SetCartPosition(m_Position += m_Speed * Time.deltaTime);
+        }
+
+        void Update()
+        {
+            if (!Application.isPlaying)
+                SetCartPosition(m_Position);
+            else if (m_UpdateMethod == UpdateMethod.Update)
+                SetCartPosition(m_Position += m_Speed * Time.deltaTime);
+        }
+
+        void SetCartPosition(float distanceAlongPath)
+        {
+            if (m_Path != null)
+            {
+                m_Position = m_Path.NormalizeUnit(distanceAlongPath, m_PositionUnits);
+                transform.position = m_Path.EvaluatePositionAtUnit(m_Position, m_PositionUnits);
+                transform.rotation = m_Path.EvaluateOrientationAtUnit(m_Position, m_PositionUnits);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e9225fcc6639fd1531e72f76ca369bc27f3e03a4
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 99a9c787e5d1bbf48a389834c4a9641c
+timeCreated: 1502981597
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9417b59e3594df9659b483a53a71d3c7ebfa72f6
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs
@@ -0,0 +1,61 @@
+using Cinemachine.Utility;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This component will expose a non-cinemachine camera to the cinemachine system,
+    /// allowing it to participate in blends.
+    /// Just add it as a component alongside an existing Unity Camera component.
+    /// </summary>
+    [DocumentationSorting(14, DocumentationSortingAttribute.Level.UserRef)]
+    [RequireComponent(typeof(Camera)), DisallowMultipleComponent, ExecuteInEditMode]
+    [AddComponentMenu("Cinemachine/CinemachineExternalCamera")]
+    public class CinemachineExternalCamera : CinemachineVirtualCameraBase
+    {
+        /// <summary>The object that the camera is looking at.</summary>
+        [Tooltip("The object that the camera is looking at.  Setting this will improve the quality of the blends to and from this camera")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        private Camera m_Camera;
+        private CameraState m_State = CameraState.Default;
+
+        /// <summary>Get the CameraState, as we are able to construct one from the Unity Camera</summary>
+        public override CameraState State { get { return m_State; } }
+
+        /// <summary>The object that the camera is looking at</summary>
+        override public Transform LookAt 
+        {
+            get { return m_LookAt; }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>This vcam defines no targets</summary>
+        override public Transform Follow { get; set; }
+
+        /// <summary>Construct a CameraState object from the Unity Camera</summary>
+        public override void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            // Get the state from the camera
+            if (m_Camera == null)
+                m_Camera = GetComponent<Camera>();
+
+            m_State = CameraState.Default;
+            m_State.RawPosition = transform.position;
+            m_State.RawOrientation = transform.rotation;
+            m_State.ReferenceUp = m_State.RawOrientation * Vector3.up;
+            if (m_Camera != null)
+                m_State.Lens = LensSettings.FromCamera(m_Camera);
+
+            if (m_LookAt != null)
+            {
+                m_State.ReferenceLookAt = m_LookAt.transform.position;
+                Vector3 dir = m_State.ReferenceLookAt - State.RawPosition;
+                if (!dir.AlmostZero())
+                    m_State.ReferenceLookAt = m_State.RawPosition + Vector3.Project(
+                        dir, State.RawOrientation * Vector3.forward);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5d3953af36454048c1ae4f8575026d6aca9f471e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 57744762d9079934292f57896d8193e0
+timeCreated: 1489441713
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cf14dc6f7832f9e8d592bf81345a4e90b24a32e9
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs
@@ -0,0 +1,91 @@
+using UnityEngine;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An add-on module for Cinemachine Virtual Camera that adjusts
+    /// the FOV of the lens to keep the target object at a constant size on the screen,
+    /// regardless of camera and target position.
+    /// </summary>
+    [DocumentationSorting(16, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [AddComponentMenu("")] // Hide in menu
+    [SaveDuringPlay]
+    public class CinemachineFollowZoom : CinemachineExtension
+    {
+        /// <summary>The shot width to maintain, in world units, at target distance.
+        /// FOV will be adusted as far as possible to maintain this width at the
+        /// target distance from the camera.</summary>
+        [Tooltip("The shot width to maintain, in world units, at target distance.")]
+        public float m_Width = 2f;
+
+        /// <summary>Increase this value to soften the aggressiveness of the follow-zoom.
+        /// Small numbers are more responsive, larger numbers give a more heavy slowly responding camera. </summary>
+        [Range(0f, 20f)]
+        [Tooltip("Increase this value to soften the aggressiveness of the follow-zoom.  Small numbers are more responsive, larger numbers give a more heavy slowly responding camera.")]
+        public float m_Damping = 1f;
+
+        /// <summary>Will not generate an FOV smaller than this.</summary>
+        [Range(1f, 179f)]
+        [Tooltip("Lower limit for the FOV that this behaviour will generate.")]
+        public float m_MinFOV = 3f;
+
+        /// <summary>Will not generate an FOV larget than this.</summary>
+        [Range(1f, 179f)]
+        [Tooltip("Upper limit for the FOV that this behaviour will generate.")]
+        public float m_MaxFOV = 60f;
+
+        private void OnValidate()
+        {
+            m_Width = Mathf.Max(0, m_Width);
+            m_MaxFOV = Mathf.Clamp(m_MaxFOV, 1, 179);
+            m_MinFOV = Mathf.Clamp(m_MinFOV, 1, m_MaxFOV);
+        }
+
+        class VcamExtraState
+        {
+            public float m_previousFrameZoom = 0;
+        }
+
+        /// <summary>Callback to preform the zoom adjustment</summary>
+        protected override void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
+        {
+            VcamExtraState extra = GetExtraState<VcamExtraState>(vcam);
+            if (!enabled || deltaTime < 0)
+                extra.m_previousFrameZoom = state.Lens.FieldOfView;
+
+            // Set the zoom after the body has been positioned, but before the aim,
+            // so that composer can compose using the updated fov.
+            if (stage == CinemachineCore.Stage.Body)
+            {
+                // Try to reproduce the target width
+                float targetWidth = Mathf.Max(m_Width, 0);
+                float fov = 179f;
+                float d = Vector3.Distance(state.CorrectedPosition, state.ReferenceLookAt);
+                if (d > UnityVectorExtensions.Epsilon)
+                {
+                    // Clamp targetWidth to FOV min/max
+                    float minW = d * 2f * Mathf.Tan(m_MinFOV * Mathf.Deg2Rad / 2f);
+                    float maxW = d * 2f * Mathf.Tan(m_MaxFOV * Mathf.Deg2Rad / 2f);
+                    targetWidth = Mathf.Clamp(targetWidth, minW, maxW);
+
+                    // Apply damping
+                    if (deltaTime >= 0 && m_Damping > 0)
+                    {
+                        float currentWidth = d * 2f * Mathf.Tan(extra.m_previousFrameZoom * Mathf.Deg2Rad / 2f);
+                        float delta = targetWidth - currentWidth;
+                        delta = Damper.Damp(delta, m_Damping, deltaTime);
+                        targetWidth = currentWidth + delta;
+                    }
+                    fov = 2f * Mathf.Atan(targetWidth / (2 * d)) * Mathf.Rad2Deg;
+                }
+                LensSettings lens = state.Lens;
+                lens.FieldOfView = extra.m_previousFrameZoom = Mathf.Clamp(fov, m_MinFOV, m_MaxFOV);
+                state.Lens = lens;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..386862dd99767ce518007b46f7347efcc1f0b330
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4700f9f03ad19f94baf0367cb7a9c988
+timeCreated: 1491854845
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs
new file mode 100644
index 0000000000000000000000000000000000000000..69d8f56aea502bdada01a7a0e499bb9019726df8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs
@@ -0,0 +1,673 @@
+using UnityEngine;
+using Cinemachine.Utility;
+using UnityEngine.Serialization;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// A Cinemachine Camera geared towards a 3rd person camera experience.
+    /// The camera orbits around its subject with three separate camera rigs defining
+    /// rings around the target. Each rig has its own radius, height offset, composer,
+    /// and lens settings.
+    /// Depending on the camera's position along the spline connecting these three rigs,
+    /// these settings are interpolated to give the final camera position and state.
+    /// </summary>
+    [DocumentationSorting(11, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineFreeLook")]
+    public class CinemachineFreeLook : CinemachineVirtualCameraBase
+    {
+        /// <summary>Object for the camera children to look at (the aim target)</summary>
+        [Tooltip("Object for the camera children to look at (the aim target).")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        /// <summary>Object for the camera children wants to move with (the body target)</summary>
+        [Tooltip("Object for the camera children wants to move with (the body target).")]
+        [NoSaveDuringPlay]
+        public Transform m_Follow = null;
+
+        /// <summary>If enabled, this lens setting will apply to all three child rigs, otherwise the child rig lens settings will be used</summary>
+        [Tooltip("If enabled, this lens setting will apply to all three child rigs, otherwise the child rig lens settings will be used")]
+        [FormerlySerializedAs("m_UseCommonLensSetting")]
+        public bool m_CommonLens = true;
+
+        /// <summary>Specifies the lens properties of this Virtual Camera.  
+        /// This generally mirrors the Unity Camera's lens settings, and will be used to drive 
+        /// the Unity camera when the vcam is active</summary>
+        [FormerlySerializedAs("m_LensAttributes")]
+        [Tooltip("Specifies the lens properties of this Virtual Camera.  This generally mirrors the Unity Camera's lens settings, and will be used to drive the Unity camera when the vcam is active")]
+        [LensSettingsProperty]
+        public LensSettings m_Lens = LensSettings.Default;
+
+        /// <summary>The Vertical axis.  Value is 0..1.  Chooses how to blend the child rigs</summary>
+        [Header("Axis Control")]
+        [Tooltip("The Vertical axis.  Value is 0..1.  Chooses how to blend the child rigs")]
+        public AxisState m_YAxis = new AxisState(2f, 0.2f, 0.1f, 0.5f, "Mouse Y", false);
+
+        /// <summary>The Horizontal axis.  Value is 0..359.  This is passed on to the rigs' OrbitalTransposer component</summary>
+        [Tooltip("The Horizontal axis.  Value is 0..359.  This is passed on to the rigs' OrbitalTransposer component")]
+        public AxisState m_XAxis = new AxisState(300f, 0.1f, 0.1f, 0f, "Mouse X", true);
+
+        /// <summary>The definition of Forward.  Camera will follow behind</summary>
+        [Tooltip("The definition of Forward.  Camera will follow behind.")]
+        public CinemachineOrbitalTransposer.Heading m_Heading 
+            = new CinemachineOrbitalTransposer.Heading(
+                CinemachineOrbitalTransposer.Heading.HeadingDefinition.TargetForward, 4, 0);
+
+        /// <summary>Controls how automatic recentering of the X axis is accomplished</summary>
+        [Tooltip("Controls how automatic recentering of the X axis is accomplished")]
+        public CinemachineOrbitalTransposer.Recentering m_RecenterToTargetHeading
+            = new CinemachineOrbitalTransposer.Recentering(false, 1, 2);
+
+        /// <summary>The coordinate space to use when interpreting the offset from the target</summary>
+        [Header("Orbits")]
+        [Tooltip("The coordinate space to use when interpreting the offset from the target.  This is also used to set the camera's Up vector, which will be maintained when aiming the camera.")]
+        public CinemachineOrbitalTransposer.BindingMode m_BindingMode 
+            = CinemachineOrbitalTransposer.BindingMode.SimpleFollowWithWorldUp;
+
+        /// <summary></summary>
+        [Tooltip("Controls how taut is the line that connects the rigs' orbits, which determines final placement on the Y axis")]
+        [Range(0f, 1f)]
+        [FormerlySerializedAs("m_SplineTension")]
+        public float m_SplineCurvature = 0.2f;
+
+        /// <summary>Defines the height and radius of the Rig orbit</summary>
+        [Serializable]
+        public struct Orbit 
+        { 
+            /// <summary>Height relative to target</summary>
+            public float m_Height; 
+            /// <summary>Radius of orbit</summary>
+            public float m_Radius; 
+            /// <summary>Constructor with specific values</summary>
+            public Orbit(float h, float r) { m_Height = h; m_Radius = r; }
+        }
+
+        /// <summary>The radius and height of the three orbiting rigs</summary>
+        [Tooltip("The radius and height of the three orbiting rigs.")]
+        public Orbit[] m_Orbits = new Orbit[3] 
+        { 
+            // These are the default orbits
+            new Orbit(4.5f, 1.75f),
+            new Orbit(2.5f, 3f),
+            new Orbit(0.4f, 1.3f)
+        };
+
+        // Legacy support
+        [SerializeField] [HideInInspector] [FormerlySerializedAs("m_HeadingBias")] 
+        private float m_LegacyHeadingBias = float.MaxValue;
+        bool mUseLegacyRigDefinitions = false;
+
+        /// <summary>Enforce bounds for fields, when changed in inspector.</summary>
+        protected override void OnValidate()
+        {
+            base.OnValidate();
+
+            // Upgrade after a legacy deserialize
+            if (m_LegacyHeadingBias != float.MaxValue)
+            {
+                m_Heading.m_HeadingBias = m_LegacyHeadingBias;
+                m_LegacyHeadingBias = float.MaxValue;
+                m_RecenterToTargetHeading.LegacyUpgrade(
+                    ref m_Heading.m_HeadingDefinition, ref m_Heading.m_VelocityFilterStrength);
+                mUseLegacyRigDefinitions = true;
+            }
+            m_YAxis.Validate();
+            m_XAxis.Validate();
+            m_RecenterToTargetHeading.Validate();
+            m_Lens.Validate();
+
+            InvalidateRigCache();
+        }
+
+        /// <summary>Get a child rig</summary>
+        /// <param name="i">Rig index.  Can be 0, 1, or 2</param>
+        /// <returns>The rig, or null if index is bad.</returns>
+        public CinemachineVirtualCamera GetRig(int i) 
+        { 
+            UpdateRigCache();  
+            return (i < 0 || i > 2) ? null : m_Rigs[i]; 
+        }
+
+        /// <summary>Names of the 3 child rigs</summary>
+        public static string[] RigNames { get { return new string[] { "TopRig", "MiddleRig", "BottomRig" }; } }
+
+        bool mIsDestroyed = false;
+
+        /// <summary>Updates the child rig cache</summary>
+        protected override void OnEnable()
+        {
+            mIsDestroyed = false;
+            base.OnEnable();
+            InvalidateRigCache();
+        }
+
+        /// <summary>Makes sure that the child rigs get destroyed in an undo-firndly manner.
+        /// Invalidates the rig cache.</summary>
+        protected override void OnDestroy()
+        {
+            // Make the rigs visible instead of destroying - this is to keep Undo happy
+            if (m_Rigs != null)
+                foreach (var rig in m_Rigs)
+                    if (rig != null && rig.gameObject != null)
+                        rig.gameObject.hideFlags
+                            &= ~(HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+
+            mIsDestroyed = true;
+            base.OnDestroy();
+        }
+
+        /// <summary>Invalidates the rig cache</summary>
+        void OnTransformChildrenChanged()
+        {
+            InvalidateRigCache();
+        }
+
+        void Reset()
+        {
+            DestroyRigs();
+        }
+
+        /// <summary>The cacmera state, which will be a blend of the child rig states</summary>
+        override public CameraState State { get { return m_State; } }
+
+        /// <summary>Get the current LookAt target.  Returns parent's LookAt if parent
+        /// is non-null and no specific LookAt defined for this camera</summary>
+        override public Transform LookAt
+        {
+            get { return ResolveLookAt(m_LookAt); }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>Get the current Follow target.  Returns parent's Follow if parent
+        /// is non-null and no specific Follow defined for this camera</summary>
+        override public Transform Follow
+        {
+            get { return ResolveFollow(m_Follow); }
+            set { m_Follow = value; }
+        }
+
+        /// <summary>Returns the rig with the greatest weight</summary>
+        public override ICinemachineCamera LiveChildOrSelf 
+        { 
+            get 
+            { 
+                // Do not update the rig cache here or there will be infinite loop at creation time 
+                if (m_Rigs == null || m_Rigs.Length != 3)
+                    return this;
+                if (m_YAxis.Value < 0.33f)
+                    return m_Rigs[2];
+                if (m_YAxis.Value > 0.66f)
+                    return m_Rigs[0];
+                return m_Rigs[1];
+            }
+        }
+
+        /// <summary>Check whether the vcam a live child of this camera.  
+        /// Returns true if the child is currently contributing actively to the camera state.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public override bool IsLiveChild(ICinemachineCamera vcam) 
+        {
+            // Do not update the rig cache here or there will be infinite loop at creation time 
+            if (m_Rigs == null || m_Rigs.Length != 3)
+                return false;
+
+            if (m_YAxis.Value < 0.33f)
+                return vcam == (ICinemachineCamera)m_Rigs[2];
+            if (m_YAxis.Value > 0.66f)
+                return vcam == (ICinemachineCamera)m_Rigs[0];
+            return vcam == (ICinemachineCamera)m_Rigs[1]; 
+        }
+
+        /// <summary>Remove a Pipeline stage hook callback.
+        /// Make sure it is removed from all the children.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public override void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            base.RemovePostPipelineStageHook(d);
+            UpdateRigCache();
+            if (m_Rigs != null)
+                foreach (var vcam in m_Rigs)
+                    if (vcam != null)
+                        vcam.RemovePostPipelineStageHook(d);
+        }
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  All 3 child rigs are updated,
+        /// and a blend calculated, depending on the value of the Y axis.</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        override public void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.UpdateCameraState");
+            if (!PreviousStateIsValid)
+                deltaTime = -1;
+
+            UpdateRigCache();
+
+            // Reset the base camera state, in case the game object got moved in the editor
+            if (deltaTime < 0)
+                m_State = PullStateFromVirtualCamera(worldUp); // Not in gameplay
+
+            // Update the current state by invoking the component pipeline
+            m_State = CalculateNewState(worldUp, deltaTime);
+
+            // Push the raw position back to the game object's transform, so it
+            // moves along with the camera.  Leave the orientation alone, because it
+            // screws up camera dragging when there is a LookAt behaviour.
+            if (Follow != null)
+            {
+                Vector3 delta = State.RawPosition - transform.position;
+                transform.position = State.RawPosition;
+                m_Rigs[0].transform.position -= delta;
+                m_Rigs[1].transform.position -= delta;
+                m_Rigs[2].transform.position -= delta;
+            }
+
+            PreviousStateIsValid = true;
+
+            // Set up for next frame
+            bool activeCam = (deltaTime >= 0) || CinemachineCore.Instance.IsLive(this);
+            if (activeCam)
+                m_YAxis.Update(deltaTime);
+
+            PushSettingsToRigs();
+                 
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>If we are transitioning from another FreeLook, grab the axis values from it.</summary>
+        /// <param name="fromCam">The camera being deactivated.  May be null.</param>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public override void OnTransitionFromCamera(
+            ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) 
+        {
+            base.OnTransitionFromCamera(fromCam, worldUp, deltaTime);
+            if ((fromCam != null) && (fromCam is CinemachineFreeLook))
+            {
+                CinemachineFreeLook freeLookFrom = fromCam as CinemachineFreeLook;
+                if (freeLookFrom.Follow == Follow)
+                {
+                    m_XAxis.Value = freeLookFrom.m_XAxis.Value;
+                    m_YAxis.Value = freeLookFrom.m_YAxis.Value;
+                    UpdateCameraState(worldUp, deltaTime);
+                }
+            }
+        }
+
+        CameraState m_State = CameraState.Default;          // Current state this frame
+
+        /// Serialized in order to support copy/paste
+        [SerializeField][HideInInspector][NoSaveDuringPlay] private CinemachineVirtualCamera[] m_Rigs 
+            = new CinemachineVirtualCamera[3];
+
+        void InvalidateRigCache() { mOrbitals = null; }
+        CinemachineOrbitalTransposer[] mOrbitals = null;
+        CinemachineBlend mBlendA;
+        CinemachineBlend mBlendB;
+
+        /// <summary>
+        /// Override component pipeline creation.
+        /// This needs to be done by the editor to support Undo.
+        /// The override must do exactly the same thing as the CreatePipeline method in this class.
+        /// </summary>
+        public static CreateRigDelegate CreateRigOverride;
+
+        /// <summary>
+        /// Override component pipeline creation.
+        /// This needs to be done by the editor to support Undo.
+        /// The override must do exactly the same thing as the CreatePipeline method in this class.
+        /// </summary>
+        public delegate CinemachineVirtualCamera CreateRigDelegate(
+            CinemachineFreeLook vcam, string name, CinemachineVirtualCamera copyFrom);
+
+        /// <summary>
+        /// Override component pipeline destruction.
+        /// This needs to be done by the editor to support Undo.
+        /// </summary>
+        public static DestroyRigDelegate DestroyRigOverride;
+
+        /// <summary>
+        /// Override component pipeline destruction.
+        /// This needs to be done by the editor to support Undo.
+        /// </summary>
+        public delegate void DestroyRigDelegate(GameObject rig);
+
+        private void DestroyRigs()
+        {
+            CinemachineVirtualCamera[] oldRigs = new CinemachineVirtualCamera[RigNames.Length];
+            for (int i = 0; i < RigNames.Length; ++i)
+            {
+                foreach (Transform child in transform)
+                    if (child.gameObject.name == RigNames[i])
+                        oldRigs[i] = child.GetComponent<CinemachineVirtualCamera>();
+            }
+            for (int i = 0; i < oldRigs.Length; ++i)
+            {
+                if (oldRigs[i] != null)
+                {
+                    if (DestroyRigOverride != null)
+                        DestroyRigOverride(oldRigs[i].gameObject);
+                    else
+                        Destroy(oldRigs[i].gameObject);
+                }
+            }
+            m_Rigs = null;
+            mOrbitals = null;
+        }
+
+        private CinemachineVirtualCamera[] CreateRigs(CinemachineVirtualCamera[] copyFrom)
+        {
+            // Invalidate the cache
+            mOrbitals = null;
+            float[] softCenterDefaultsV = new float[] { 0.5f, 0.55f, 0.6f };
+            CinemachineVirtualCamera[] newRigs = new CinemachineVirtualCamera[3];
+            for (int i = 0; i < RigNames.Length; ++i)
+            {
+                CinemachineVirtualCamera src = null;
+                if (copyFrom != null && copyFrom.Length > i)
+                    src = copyFrom[i];
+
+                if (CreateRigOverride != null)
+                    newRigs[i] = CreateRigOverride(this, RigNames[i], src);
+                else
+                {
+                    // Create a new rig with default components
+                    GameObject go = new GameObject(RigNames[i]);
+                    go.transform.parent = transform;
+                    newRigs[i] = go.AddComponent<CinemachineVirtualCamera>();
+                    if (src != null)
+                        ReflectionHelpers.CopyFields(src, newRigs[i]);
+                    else
+                    {
+                        go = newRigs[i].GetComponentOwner().gameObject;
+                        go.AddComponent<CinemachineOrbitalTransposer>();
+                        go.AddComponent<CinemachineComposer>();
+                    }
+                }
+
+                // Set up the defaults
+                newRigs[i].InvalidateComponentPipeline();
+                CinemachineOrbitalTransposer orbital = newRigs[i].GetCinemachineComponent<CinemachineOrbitalTransposer>();
+                if (orbital == null)
+                    orbital = newRigs[i].AddCinemachineComponent<CinemachineOrbitalTransposer>(); // should not happen
+                if (src == null)
+                {
+                    // Only set defaults if not copying
+                    orbital.m_YawDamping = 0;
+                    CinemachineComposer composer = newRigs[i].GetCinemachineComponent<CinemachineComposer>();
+                    if (composer != null)
+                    {
+                        composer.m_HorizontalDamping = composer.m_VerticalDamping = 0;
+                        composer.m_ScreenX = 0.5f;
+                        composer.m_ScreenY = softCenterDefaultsV[i];
+                        composer.m_DeadZoneWidth = composer.m_DeadZoneHeight = 0.1f;
+                        composer.m_SoftZoneWidth = composer.m_SoftZoneHeight = 0.8f;
+                        composer.m_BiasX = composer.m_BiasY = 0;
+                    }
+                }
+            }
+            return newRigs;
+        }
+
+        private void UpdateRigCache()
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.UpdateRigCache");
+            if (mIsDestroyed)
+            {
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return;
+            }
+
+            // Special condition: Did we just get copy/pasted?
+            if (m_Rigs != null && m_Rigs.Length == 3 && m_Rigs[0] != null && m_Rigs[0].transform.parent != transform)
+            {
+                DestroyRigs();
+                m_Rigs = CreateRigs(m_Rigs);
+            }
+
+            // Early out if we're up to date
+            if (mOrbitals != null && mOrbitals.Length == 3)
+            {
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return;
+            }
+
+            // Locate existing rigs, and recreate them if any are missing
+            if (LocateExistingRigs(RigNames, false) != 3)
+            {
+                DestroyRigs();
+                m_Rigs = CreateRigs(null);
+                LocateExistingRigs(RigNames, true);
+            }
+
+            foreach (var rig in m_Rigs)
+            {
+                // Configure the UI
+                rig.m_ExcludedPropertiesInInspector = m_CommonLens 
+                    ? new string[] { "m_Script", "Header", "Extensions", "m_Priority", "m_Follow", "m_Lens" }
+                    : new string[] { "m_Script", "Header", "Extensions", "m_Priority", "m_Follow" };
+                rig.m_LockStageInInspector = new CinemachineCore.Stage[] { CinemachineCore.Stage.Body };
+            }
+
+            // Create the blend objects
+            mBlendA = new CinemachineBlend(m_Rigs[1], m_Rigs[0], AnimationCurve.Linear(0, 0, 1, 1), 1, 0);
+            mBlendB = new CinemachineBlend(m_Rigs[2], m_Rigs[1], AnimationCurve.Linear(0, 0, 1, 1), 1, 0);
+
+            // Horizontal rotation clamped to [0,360] (with wraparound)
+            m_XAxis.SetThresholds(0f, 360f, true);
+
+            // Vertical rotation cleamped to [0,1] as it is a t-value for the
+            // catmull-rom spline going through the 3 points on the rig
+            m_YAxis.SetThresholds(0f, 1f, false);
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        private int LocateExistingRigs(string[] rigNames, bool forceOrbital)
+        {
+            mOrbitals = new CinemachineOrbitalTransposer[rigNames.Length];
+            m_Rigs = new CinemachineVirtualCamera[rigNames.Length];
+            int rigsFound = 0;
+            foreach (Transform child in transform)
+            {
+                CinemachineVirtualCamera vcam = child.GetComponent<CinemachineVirtualCamera>();
+                if (vcam != null)
+                {
+                    GameObject go = child.gameObject;
+                    for (int i = 0; i < rigNames.Length; ++i)
+                    {
+                        if (mOrbitals[i] == null && go.name == rigNames[i])
+                        {
+                            // Must have an orbital transposer or it's no good
+                            mOrbitals[i] = vcam.GetCinemachineComponent<CinemachineOrbitalTransposer>();
+                            if (mOrbitals[i] == null && forceOrbital)
+                                mOrbitals[i] = vcam.AddCinemachineComponent<CinemachineOrbitalTransposer>();
+                            if (mOrbitals[i] != null)
+                            {
+                                mOrbitals[i].m_HeadingIsSlave = true;
+                                if (i == 0)
+                                    mOrbitals[i].HeadingUpdater 
+                                        = (CinemachineOrbitalTransposer orbital, float deltaTime, Vector3 up) 
+                                            => { return orbital.UpdateHeading(deltaTime, up, ref m_XAxis); };
+                                m_Rigs[i] = vcam;
+                                ++rigsFound;
+                            }
+                        }
+                    }
+                }
+            }
+            return rigsFound;
+        }
+
+        void PushSettingsToRigs()
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs");
+            UpdateRigCache();
+            for (int i = 0; i < m_Rigs.Length; ++i)
+            {
+                //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs.m_Rigs[i] == null");
+                if (m_Rigs[i] == null)
+                {
+                    //UnityEngine.Profiling.Profiler.EndSample();
+                    continue;
+                }
+                //UnityEngine.Profiling.Profiler.EndSample();
+
+                //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs.m_CommonLens");
+                if (m_CommonLens)
+                    m_Rigs[i].m_Lens = m_Lens;
+                //UnityEngine.Profiling.Profiler.EndSample();
+
+                // If we just deserialized from a legacy version, 
+                // pull the orbits and targets from the rigs
+                //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs.mUseLegacyRigDefinitions");
+                if (mUseLegacyRigDefinitions)
+                {
+                    mUseLegacyRigDefinitions = false;
+                    m_Orbits[i].m_Height = mOrbitals[i].m_FollowOffset.y;
+                    m_Orbits[i].m_Radius = -mOrbitals[i].m_FollowOffset.z;
+                    if (m_Rigs[i].Follow != null)
+                        Follow = m_Rigs[i].Follow;
+                }
+                m_Rigs[i].Follow = null;
+                //UnityEngine.Profiling.Profiler.EndSample();
+
+                // Hide the rigs from prying eyes
+                //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs.Hide the rigs");
+                if (CinemachineCore.sShowHiddenObjects)
+                    m_Rigs[i].gameObject.hideFlags
+                        &= ~(HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+                else
+                    m_Rigs[i].gameObject.hideFlags
+                        |= (HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+                //UnityEngine.Profiling.Profiler.EndSample();
+
+                //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.PushSettingsToRigs.Push");
+                mOrbitals[i].m_FollowOffset = GetLocalPositionForCameraFromInput(m_YAxis.Value);
+                mOrbitals[i].m_BindingMode = m_BindingMode;
+                mOrbitals[i].m_Heading = m_Heading;
+                mOrbitals[i].m_XAxis = m_XAxis;
+                mOrbitals[i].m_RecenterToTargetHeading = m_RecenterToTargetHeading;
+                if (i > 0)
+                    mOrbitals[i].m_RecenterToTargetHeading.m_enabled = false;
+
+                // Hack to get SimpleFollow with heterogeneous dampings to work
+                if (m_BindingMode == CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp)
+                    m_Rigs[i].SetStateRawPosition(State.RawPosition);
+
+                //UnityEngine.Profiling.Profiler.EndSample();
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        private CameraState CalculateNewState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.CalculateNewState");
+            CameraState state = PullStateFromVirtualCamera(worldUp);
+
+            // Blend from the appropriate rigs
+            float t = m_YAxis.Value;
+            if (t > 0.5f)
+            {
+                if (mBlendA != null)
+                {
+                    mBlendA.TimeInBlend = (t - 0.5f) * 2f;
+                    mBlendA.UpdateCameraState(worldUp, deltaTime);
+                    state = mBlendA.State;
+                }
+            }
+            else
+            {
+                if (mBlendB != null)
+                {
+                    mBlendB.TimeInBlend = t * 2f;
+                    mBlendB.UpdateCameraState(worldUp, deltaTime);
+                    state = mBlendB.State;
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return state;
+        }
+
+        private CameraState PullStateFromVirtualCamera(Vector3 worldUp)
+        {
+            CameraState state = CameraState.Default;
+            state.RawPosition = transform.position;
+            state.RawOrientation = transform.rotation;
+            state.ReferenceUp = worldUp;
+
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(this);
+            m_Lens.Aspect = brain != null ? brain.OutputCamera.aspect : 1;
+            m_Lens.Orthographic = brain != null ? brain.OutputCamera.orthographic : false;
+            state.Lens = m_Lens;
+
+            return state;
+        }
+
+        /// <summary>
+        /// Returns the local position of the camera along the spline used to connect the
+        /// three camera rigs. Does not take into account the current heading of the
+        /// camera (or its target)
+        /// </summary>
+        /// <param name="t">The t-value for the camera on its spline. Internally clamped to
+        /// the value [0,1]</param>
+        /// <returns>The local offset (back + up) of the camera WRT its target based on the
+        /// supplied t-value</returns>
+        public Vector3 GetLocalPositionForCameraFromInput(float t)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.GetLocalPositionForCameraFromInput");
+            if (mOrbitals == null)
+            {
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return Vector3.zero;
+            }
+            UpdateCachedSpline();
+            int n = 1;
+            if (t > 0.5f)
+            {
+                t -= 0.5f;
+                n = 2;
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return SplineHelpers.Bezier3(
+                t * 2f, m_CachedKnots[n], m_CachedCtrl1[n], m_CachedCtrl2[n], m_CachedKnots[n+1]);
+        }
+                
+        Orbit[] m_CachedOrbits;
+        float m_CachedTension;
+        Vector4[] m_CachedKnots;
+        Vector4[] m_CachedCtrl1;
+        Vector4[] m_CachedCtrl2;
+        void UpdateCachedSpline()
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFreeLook.UpdateCachedSpline");
+            bool cacheIsValid = (m_CachedOrbits != null && m_CachedTension == m_SplineCurvature);
+            for (int i = 0; i < 3 && cacheIsValid; ++i)
+                cacheIsValid = (m_CachedOrbits[i].m_Height == m_Orbits[i].m_Height 
+                    && m_CachedOrbits[i].m_Radius == m_Orbits[i].m_Radius);
+            if (!cacheIsValid)
+            {
+                float t = m_SplineCurvature;
+                m_CachedKnots = new Vector4[5];
+                m_CachedCtrl1 = new Vector4[5];
+                m_CachedCtrl2 = new Vector4[5];
+                m_CachedKnots[1] = new Vector4(0, m_Orbits[2].m_Height, -m_Orbits[2].m_Radius, 0);
+                m_CachedKnots[2] = new Vector4(0, m_Orbits[1].m_Height, -m_Orbits[1].m_Radius, 0);
+                m_CachedKnots[3] = new Vector4(0, m_Orbits[0].m_Height, -m_Orbits[0].m_Radius, 0);
+                m_CachedKnots[0] = Vector4.Lerp(m_CachedKnots[1], Vector4.zero, t);
+                m_CachedKnots[4] = Vector4.Lerp(m_CachedKnots[3], Vector4.zero, t);
+                SplineHelpers.ComputeSmoothControlPoints(
+                    ref m_CachedKnots, ref m_CachedCtrl1, ref m_CachedCtrl2);
+                m_CachedOrbits = new Orbit[3];
+                for (int i = 0; i < 3; ++i)
+                    m_CachedOrbits[i] = m_Orbits[i];
+                m_CachedTension = m_SplineCurvature;
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ad46301c9e2b27b9e62e22537d4a2aa4d5d8cbae
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 319d2fe34a804e245819465c9505ea59
+timeCreated: 1496775487
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..57d3ccb1cf231231eb78334a5e423489db4f6ce4
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs
@@ -0,0 +1,262 @@
+using UnityEngine;
+using Cinemachine.Utility;
+using System.Collections.Generic;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// CinemachineMixingCamera is a "manager camera" that takes on the state of 
+    /// the weighted average of the states of its child virtual cameras.
+    /// 
+    /// A fixed number of slots are made available for cameras, rather than a dynamic array.  
+    /// We do it this way in order to support weight animation from the Timeline.
+    /// Timeline cannot animate array elements.
+    /// </summary>
+    [DocumentationSorting(20, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineMixingCamera")]
+    public class CinemachineMixingCamera : CinemachineVirtualCameraBase
+    {
+        /// <summary>The maximum number of tracked cameras.  If you want to add 
+        /// more cameras, do it here in the source code, and be sure to add the 
+        /// extra member variables and to make the appropriate changes in 
+        /// GetWeight() and SetWeight().
+        /// The inspector will figure itself out based on this value.</summary>
+        public const int MaxCameras = 8;
+
+        /// <summary>Weight of the first tracked camera</summary>
+        [Tooltip("The weight of the first tracked camera")]
+        public float m_Weight0 = 0.5f;
+        /// <summary>Weight of the second tracked camera</summary>
+        [Tooltip("The weight of the second tracked camera")]
+        public float m_Weight1 = 0.5f;
+        /// <summary>Weight of the third tracked camera</summary>
+        [Tooltip("The weight of the third tracked camera")]
+        public float m_Weight2 = 0.5f;
+        /// <summary>Weight of the fourth tracked camera</summary>
+        [Tooltip("The weight of the fourth tracked camera")]
+        public float m_Weight3 = 0.5f;
+        /// <summary>Weight of the fifth tracked camera</summary>
+        [Tooltip("The weight of the fifth tracked camera")]
+        public float m_Weight4 = 0.5f;
+        /// <summary>Weight of the sixth tracked camera</summary>
+        [Tooltip("The weight of the sixth tracked camera")]
+        public float m_Weight5 = 0.5f;
+        /// <summary>Weight of the seventh tracked camera</summary>
+        [Tooltip("The weight of the seventh tracked camera")]
+        public float m_Weight6 = 0.5f;
+        /// <summary>Weight of the eighth tracked camera</summary>
+        [Tooltip("The weight of the eighth tracked camera")]
+        public float m_Weight7 = 0.5f;
+
+        /// <summary>Get the weight of the child at an index.</summary>
+        /// <param name="index">The child index. Only immediate CinemachineVirtualCameraBase 
+        /// children are counted.</param>
+        /// <returns>The weight of the camera.  Valid only if camera is active and enabled.</returns>
+        public float GetWeight(int index)
+        {
+            switch (index)
+            {
+                case 0: return m_Weight0;
+                case 1: return m_Weight1;
+                case 2: return m_Weight2;
+                case 3: return m_Weight3;
+                case 4: return m_Weight4;
+                case 5: return m_Weight5;
+                case 6: return m_Weight6;
+                case 7: return m_Weight7;
+            }
+            Debug.LogError("CinemachineMixingCamera: Invalid index: " + index);
+            return 0;
+        }
+
+        /// <summary>Set the weight of the child at an index.</summary>
+        /// <param name="index">The child index. Only immediate CinemachineVirtualCameraBase 
+        /// children are counted.</param>
+        /// <param name="w">The weight to set.  Can be any non-negative number.</param>
+        public void SetWeight(int index, float w)
+        {
+            switch (index)
+            {
+                case 0: m_Weight0 = w; return;
+                case 1: m_Weight1 = w; return;
+                case 2: m_Weight2 = w; return;
+                case 3: m_Weight3 = w; return;
+                case 4: m_Weight4 = w; return;
+                case 5: m_Weight5 = w; return;
+                case 6: m_Weight6 = w; return;
+                case 7: m_Weight7 = w; return;
+            }
+            Debug.LogError("CinemachineMixingCamera: Invalid index: " + index);
+        }
+
+        /// <summary>Get the weight of the child CinemachineVirtualCameraBase.</summary>
+        /// <param name="vcam">The child camera.</param>
+        /// <returns>The weight of the camera.  Valid only if camera is active and enabled.</returns>
+        public float GetWeight(CinemachineVirtualCameraBase vcam)
+        {
+            int index;
+            if (m_indexMap.TryGetValue(vcam, out index))
+                return GetWeight(index);
+            Debug.LogError("CinemachineMixingCamera: Invalid child: " 
+                + ((vcam != null) ? vcam.Name : "(null)"));
+            return 0;
+        }
+
+        /// <summary>Set the weight of the child CinemachineVirtualCameraBase.</summary>
+        /// <param name="vcam">The child camera.</param>
+        /// <param name="w">The weight to set.  Can be any non-negative number.</param>
+        public void SetWeight(CinemachineVirtualCameraBase vcam, float w)
+        {
+            int index;
+            if (m_indexMap.TryGetValue(vcam, out index))
+                SetWeight(index, w);
+            else
+                Debug.LogError("CinemachineMixingCamera: Invalid child: " 
+                    + ((vcam != null) ? vcam.Name : "(null)"));
+        }
+
+        /// <summary>Blended camera state</summary>
+        private CameraState m_State = CameraState.Default;
+
+        /// <summary>Get the current "best" child virtual camera, which is nominally 
+        /// the one with the greatest weight.</summary>
+        private ICinemachineCamera LiveChild { set; get; }
+
+        /// <summary>The blended CameraState</summary>
+        public override CameraState State { get { return m_State; } }
+
+        /// <summary>Not used</summary>
+        override public Transform LookAt { get; set; }
+
+        /// <summary>Not used</summary>
+        override public Transform Follow { get; set; }
+
+        /// <summary>Return the live child.</summary>
+        public override ICinemachineCamera LiveChildOrSelf { get { return LiveChild; } }
+
+        /// <summary>Remove a Pipeline stage hook callback.
+        /// Make sure it is removed from all the children.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public override void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            base.RemovePostPipelineStageHook(d);
+            ValidateListOfChildren();
+            foreach (var vcam in m_ChildCameras)
+                vcam.RemovePostPipelineStageHook(d);
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            InvalidateListOfChildren();
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        public void OnTransformChildrenChanged()
+        {
+            InvalidateListOfChildren();
+        }
+
+        /// <summary>Makes sure the weights are non-negative</summary>
+        protected override void OnValidate()
+        {
+            base.OnValidate();
+            for (int i = 0; i < MaxCameras; ++i)
+                SetWeight(i, Mathf.Max(0, GetWeight(i)));
+        }
+        
+        /// <summary>Check whether the vcam a live child of this camera.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public override bool IsLiveChild(ICinemachineCamera vcam) 
+        { 
+            CinemachineVirtualCameraBase[] children = ChildCameras;
+            for (int i = 0; i < MaxCameras && i < children.Length; ++i)
+                if ((ICinemachineCamera)children[i] == vcam)
+                    return GetWeight(i) > UnityVectorExtensions.Epsilon && children[i].isActiveAndEnabled;
+            return false;
+        }
+
+        private CinemachineVirtualCameraBase[] m_ChildCameras;
+        private Dictionary<CinemachineVirtualCameraBase, int> m_indexMap;
+
+        /// <summary>Get the cached list of child cameras.  
+        /// These are just the immediate children in the hierarchy.
+        /// Note: only the first entries of this list participate in the 
+        /// final blend, up to MaxCameras</summary>
+        public CinemachineVirtualCameraBase[] ChildCameras
+        { 
+            get { ValidateListOfChildren(); return m_ChildCameras; }
+        }
+
+        /// <summary>Invalidate the cached list of child cameras.</summary>
+        protected void InvalidateListOfChildren() 
+        { 
+            m_ChildCameras = null; 
+            m_indexMap = null;
+            LiveChild = null; 
+        }
+
+        /// <summary>Rebuild the cached list of child cameras.</summary>
+        protected void ValidateListOfChildren()
+        {
+            if (m_ChildCameras != null)
+                return;
+
+            m_indexMap = new Dictionary<CinemachineVirtualCameraBase, int>();
+            List<CinemachineVirtualCameraBase> list = new List<CinemachineVirtualCameraBase>();
+            CinemachineVirtualCameraBase[] kids 
+                = GetComponentsInChildren<CinemachineVirtualCameraBase>(true);
+            foreach (CinemachineVirtualCameraBase k in kids)
+            {
+                if (k.transform.parent == transform)
+                {
+                    int index = list.Count;
+                    list.Add(k);
+                    if (index < MaxCameras)
+                        m_indexMap.Add(k, index);
+                }
+            }
+            m_ChildCameras = list.ToArray();
+        }
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  This implementation
+        /// computes and caches the weighted blend of the tracked cameras.</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        public override void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineMixingCamera.UpdateCameraState");
+            CinemachineVirtualCameraBase[] children = ChildCameras;
+            LiveChild = null;
+            float highestWeight = 0;
+            float totalWeight = 0;
+            for (int i = 0; i < MaxCameras && i < children.Length; ++i)
+            {
+                CinemachineVirtualCameraBase vcam = children[i];
+                if (vcam.isActiveAndEnabled)
+                {
+                    float weight = Mathf.Max(0, GetWeight(i));
+                    if (weight > UnityVectorExtensions.Epsilon)
+                    {
+                        totalWeight += weight;
+                        if (totalWeight == weight)
+                            m_State = vcam.State;
+                        else
+                            m_State = CameraState.Lerp(m_State, vcam.State, weight / totalWeight);
+
+                        if (weight > highestWeight)
+                        {
+                            highestWeight = weight;
+                            LiveChild = vcam;
+                        }
+                    }
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d4856d5bb6b9c89668364d7d7d68cc9bdba5f7a8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6c26251a3e1f5ac41afa5ffb404c5f71
+timeCreated: 1502201564
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b050d2f614391f3763b80c84278b621f32950526
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs
@@ -0,0 +1,180 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>Defines a world-space path, consisting of an array of waypoints,
+    /// each of which has position, tangent, and roll settings.  Bezier interpolation
+    /// is performed between the waypoints, to get a smooth and continuous path.</summary>
+    [DocumentationSorting(18, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("Cinemachine/CinemachinePath")]
+    [SaveDuringPlay]
+    public class CinemachinePath : CinemachinePathBase
+    {
+        /// <summary>A waypoint along the path</summary>
+        [DocumentationSorting(18.2f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable] public struct Waypoint
+        {
+            /// <summary>Position in path-local space</summary>
+            [Tooltip("Position in path-local space")]
+            public Vector3 position;
+
+            /// <summary>Offset from the position, which defines the tangent of the curve at the waypoint.  
+            /// The length of the tangent encodes the strength of the bezier handle.  
+            /// The same handle is used symmetrically on both sides of the waypoint, to ensure smoothness.</summary>
+            [Tooltip("Offset from the position, which defines the tangent of the curve at the waypoint.  The length of the tangent encodes the strength of the bezier handle.  The same handle is used symmetrically on both sides of the waypoint, to ensure smoothness.")]
+            public Vector3 tangent;
+
+            /// <summary>Defines the roll of the path at this waypoint.  
+            /// The other orientation axes are inferred from the tangent and world up.</summary>
+            [Tooltip("Defines the roll of the path at this waypoint.  The other orientation axes are inferred from the tangent and world up.")]
+            public float roll;
+        }
+
+        /// <summary>If checked, then the path ends are joined to form a continuous loop</summary>
+        [Tooltip("If checked, then the path ends are joined to form a continuous loop.")]
+        public bool m_Looped;
+
+        /// <summary>The waypoints that define the path.
+        /// They will be interpolated using a bezier curve</summary>
+        [Tooltip("The waypoints that define the path.  They will be interpolated using a bezier curve.")]
+        public Waypoint[] m_Waypoints = new Waypoint[0];
+
+        /// <summary>The minimum value for the path position</summary>
+        public override float MinPos { get { return 0; } }
+
+        /// <summary>The maximum value for the path position</summary>
+        public override float MaxPos
+        {
+            get
+            {
+                int count = m_Waypoints.Length - 1;
+                if (count < 1)
+                    return 0;
+                return m_Looped ? count + 1 : count;
+            }
+        }
+        /// <summary>True if the path ends are joined to form a continuous loop</summary>
+        public override bool Looped { get { return m_Looped; } }
+
+        /// <summary>When calculating the distance cache, sample the path this many 
+        /// times between points</summary>
+        public override int DistanceCacheSampleStepsPerSegment { get { return m_Resolution; } }
+
+        /// <summary>Returns normalized position</summary>
+        float GetBoundingIndices(float pos, out int indexA, out int indexB)
+        {
+            pos = NormalizePos(pos);
+            int rounded = Mathf.RoundToInt(pos);
+            if (Mathf.Abs(pos - rounded) < UnityVectorExtensions.Epsilon)
+                indexA = indexB = (rounded == m_Waypoints.Length) ? 0 : rounded;
+            else
+            {
+                indexA = Mathf.FloorToInt(pos);
+                if (indexA >= m_Waypoints.Length)
+                {
+                    pos -= MaxPos;
+                    indexA = 0;
+                }
+                indexB = Mathf.CeilToInt(pos);
+                if (indexB >= m_Waypoints.Length)
+                    indexB = 0;
+            }
+            return pos;
+        }
+
+        /// <summary>Get a worldspace position of a point along the path</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space position of the point along at path at pos</returns>
+        public override Vector3 EvaluatePosition(float pos)
+        {
+            Vector3 result = new Vector3();
+            if (m_Waypoints.Length == 0)
+                result = transform.position;
+            else
+            {
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (indexA == indexB)
+                    result = m_Waypoints[indexA].position;
+                else
+                {
+                    // interpolate
+                    Waypoint wpA = m_Waypoints[indexA];
+                    Waypoint wpB = m_Waypoints[indexB];
+                    result = SplineHelpers.Bezier3(pos - indexA,
+                        m_Waypoints[indexA].position, wpA.position + wpA.tangent,
+                        wpB.position - wpB.tangent, wpB.position);
+                }
+            }
+            return transform.TransformPoint(result);
+        }
+
+        /// <summary>Get the tangent of the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space direction of the path tangent.
+        /// Length of the vector represents the tangent strength</returns>
+        public override Vector3 EvaluateTangent(float pos)
+        {
+            Vector3 result = new Vector3();
+            if (m_Waypoints.Length == 0)
+                result = transform.rotation * Vector3.forward;
+            else
+            {
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (indexA == indexB)
+                    result = m_Waypoints[indexA].tangent;
+                else
+                {
+                    Waypoint wpA = m_Waypoints[indexA];
+                    Waypoint wpB = m_Waypoints[indexB];
+                    result = SplineHelpers.BezierTangent3(pos - indexA,
+                        m_Waypoints[indexA].position, wpA.position + wpA.tangent,
+                        wpB.position - wpB.tangent, wpB.position);
+                }
+            }
+            return transform.TransformDirection(result);
+        }
+
+        /// <summary>Get the orientation the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space orientation of the path, as defined by tangent, up, and roll.</returns>
+        public override Quaternion EvaluateOrientation(float pos)
+        {
+            Quaternion result = transform.rotation;
+            if (m_Waypoints.Length > 0)
+            {
+                float roll = 0;
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (indexA == indexB)
+                    roll = m_Waypoints[indexA].roll;
+                else
+                {
+                    float rollA = m_Waypoints[indexA].roll;
+                    float rollB = m_Waypoints[indexB].roll;
+                    if (indexB == 0)
+                    {
+                        // Special handling at the wraparound - cancel the spins
+                        rollA = rollA % 360;
+                        rollB = rollB % 360;
+                    }
+                    roll = Mathf.Lerp(rollA, rollB, pos - indexA);
+                }
+
+                Vector3 fwd = EvaluateTangent(pos);
+                if (!fwd.AlmostZero())
+                {
+                    Vector3 up = transform.rotation * Vector3.up;
+                    Quaternion q = Quaternion.LookRotation(fwd, up);
+                    result = q * Quaternion.AngleAxis(roll, Vector3.forward);
+                }
+            }
+            return result;
+        }
+
+        private void OnValidate() { InvalidateDistanceCache(); }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f32f1ebfe266eb4fbdd2c2f667c327afff9b7619
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2d37e5385efd7064cb1d54c94960acae
+timeCreated: 1496785107
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5474e7c68c55a5115340e8260f89ee0ae5f2c48a
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Internal container for CinemachineComponentBase.  Does nothing but contain.
+    /// </summary>
+    [AddComponentMenu("")] // Don't display in add component menu
+    public sealed class CinemachinePipeline : MonoBehaviour
+    {
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0da8cf532eda0dd4a9608255ac903354f334a311
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ac0b09e7857660247b1477e93731de29
+timeCreated: 1489088253
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5eef99e892c75cb03a47900e9e2de691ad0c4829
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs
@@ -0,0 +1,224 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>Defines a world-space path, consisting of an array of waypoints,
+    /// each of which has position and roll settings.  Bezier interpolation
+    /// is performed between the waypoints, to get a smooth and continuous path.
+    /// The path will pass through all waypoints, and (unlike CinemachinePath) first 
+    /// and second order continuity is guaranteed</summary>
+    [DocumentationSorting(18.5f, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("Cinemachine/CinemachineSmoothPath")]
+    [SaveDuringPlay]
+    public class CinemachineSmoothPath : CinemachinePathBase
+    {
+        /// <summary>If checked, then the path ends are joined to form a continuous loop</summary>
+        [Tooltip("If checked, then the path ends are joined to form a continuous loop.")]
+        public bool m_Looped;
+
+        /// <summary>A waypoint along the path</summary>
+        [DocumentationSorting(18.7f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable] public struct Waypoint
+        {
+            /// <summary>Position in path-local space</summary>
+            [Tooltip("Position in path-local space")]
+            public Vector3 position;
+
+            /// <summary>Defines the roll of the path at this waypoint.  
+            /// The other orientation axes are inferred from the tangent and world up.</summary>
+            [Tooltip("Defines the roll of the path at this waypoint.  The other orientation axes are inferred from the tangent and world up.")]
+            public float roll;
+
+            /// <summary>Representation as Vector4</summary>
+            internal Vector4 AsVector4
+            {
+                get { return new Vector4(position.x, position.y, position.z, roll); }
+            }
+
+            internal static Waypoint FromVector4(Vector4 v)
+            {
+                Waypoint wp = new Waypoint();
+                wp.position = new Vector3(v[0], v[1], v[2]);
+                wp.roll = v[3];
+                return wp;
+            }
+        }
+
+        /// <summary>The waypoints that define the path.
+        /// They will be interpolated using a bezier curve</summary>
+        [Tooltip("The waypoints that define the path.  They will be interpolated using a bezier curve.")]
+        public Waypoint[] m_Waypoints = new Waypoint[0];
+
+        /// <summary>The minimum value for the path position</summary>
+        public override float MinPos { get { return 0; } }
+
+        /// <summary>The maximum value for the path position</summary>
+        public override float MaxPos
+        {
+            get
+            {
+                int count = m_Waypoints.Length - 1;
+                if (count < 1)
+                    return 0;
+                return m_Looped ? count + 1 : count;
+            }
+        }
+        /// <summary>True if the path ends are joined to form a continuous loop</summary>
+        public override bool Looped { get { return m_Looped; } }
+
+        /// <summary>When calculating the distance cache, sample the path this many 
+        /// times between points</summary>
+        public override int DistanceCacheSampleStepsPerSegment { get { return m_Resolution; } }
+
+        private void OnValidate() { InvalidateDistanceCache(); }
+
+        /// <summary>Call this if the path changes in such a way as to affect distances
+        /// or other cached path elements</summary>
+        public override void InvalidateDistanceCache()
+        {
+            base.InvalidateDistanceCache();
+            m_ControlPoints1 = null;
+            m_ControlPoints2 = null;
+        }
+
+        Waypoint[] m_ControlPoints1;
+        Waypoint[] m_ControlPoints2;
+        bool m_IsLoopedCache;
+
+        void UpdateControlPoints()
+        {
+            int numPoints = (m_Waypoints == null) ? 0 : m_Waypoints.Length;
+            if (numPoints > 1 
+                && (Looped != m_IsLoopedCache
+                    || m_ControlPoints1 == null || m_ControlPoints1.Length != numPoints
+                    || m_ControlPoints2 == null || m_ControlPoints2.Length != numPoints))
+            {
+                Vector4[] p1 = new Vector4[numPoints];
+                Vector4[] p2 = new Vector4[numPoints];
+                Vector4[] K = new Vector4[numPoints];
+                for (int i = 0; i < numPoints; ++i)
+                    K[i] = m_Waypoints[i].AsVector4;
+                if (Looped)
+                    SplineHelpers.ComputeSmoothControlPointsLooped(ref K, ref p1, ref p2);
+                else
+                    SplineHelpers.ComputeSmoothControlPoints(ref K, ref p1, ref p2);
+
+                m_ControlPoints1 = new Waypoint[numPoints];
+                m_ControlPoints2 = new Waypoint[numPoints];
+                for (int i = 0; i < numPoints; ++i)
+                {
+                    m_ControlPoints1[i] = Waypoint.FromVector4(p1[i]);
+                    m_ControlPoints2[i] = Waypoint.FromVector4(p2[i]);
+                }
+                m_IsLoopedCache = Looped;
+            }
+        }
+
+        /// <summary>Returns normalized position</summary>
+        float GetBoundingIndices(float pos, out int indexA, out int indexB)
+        {
+            pos = NormalizePos(pos);
+            int numWaypoints = m_Waypoints.Length;
+            if (numWaypoints < 2)
+                indexA = indexB = 0;
+            else
+            {
+                indexA = Mathf.FloorToInt(pos);
+                if (indexA >= numWaypoints)
+                {
+                    // Only true if looped
+                    pos -= MaxPos;
+                    indexA = 0;
+                }
+                indexB = indexA + 1;
+                if (indexB == numWaypoints)
+                {
+                    if (Looped)
+                        indexB = 0;
+                    else 
+                    {
+                        --indexB;
+                        --indexA;
+                    }
+                }
+            }
+            return pos;
+        }
+
+        /// <summary>Get a worldspace position of a point along the path</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space position of the point along at path at pos</returns>
+        public override Vector3 EvaluatePosition(float pos)
+        {
+            Vector3 result = Vector3.zero;
+            if (m_Waypoints.Length > 0)
+            {
+                UpdateControlPoints();
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (indexA == indexB)
+                    result = m_Waypoints[indexA].position;
+                else
+                    result = SplineHelpers.Bezier3(pos - indexA, 
+                        m_Waypoints[indexA].position, m_ControlPoints1[indexA].position,
+                        m_ControlPoints2[indexA].position, m_Waypoints[indexB].position);
+            }
+            return transform.TransformPoint(result);
+        }
+
+        /// <summary>Get the tangent of the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space direction of the path tangent.
+        /// Length of the vector represents the tangent strength</returns>
+        public override Vector3 EvaluateTangent(float pos)
+        {
+            Vector3 result = transform.rotation * Vector3.forward;
+            if (m_Waypoints.Length > 1)
+            {
+                UpdateControlPoints();
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (!Looped && indexA == m_Waypoints.Length - 1)
+                    --indexA;
+                result = SplineHelpers.BezierTangent3(pos - indexA,
+                    m_Waypoints[indexA].position, m_ControlPoints1[indexA].position,
+                    m_ControlPoints2[indexA].position, m_Waypoints[indexB].position);
+            }
+            return transform.TransformDirection(result);
+        }
+
+        /// <summary>Get the orientation the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space orientation of the path, as defined by tangent, up, and roll.</returns>
+        public override Quaternion EvaluateOrientation(float pos)
+        {
+            Quaternion result = transform.rotation;
+            if (m_Waypoints.Length > 0)
+            {
+                float roll = 0;
+                int indexA, indexB;
+                pos = GetBoundingIndices(pos, out indexA, out indexB);
+                if (indexA == indexB)
+                    roll = m_Waypoints[indexA].roll;
+                else
+                {
+                    UpdateControlPoints();
+                    roll = SplineHelpers.Bezier1(pos - indexA,
+                        m_Waypoints[indexA].roll, m_ControlPoints1[indexA].roll,
+                        m_ControlPoints2[indexA].roll, m_Waypoints[indexB].roll);
+                }
+
+                Vector3 fwd = EvaluateTangent(pos);
+                if (!fwd.AlmostZero())
+                {
+                    Vector3 up = transform.rotation * Vector3.up;
+                    Quaternion q = Quaternion.LookRotation(fwd, up);
+                    result = q * Quaternion.AngleAxis(roll, Vector3.forward);
+                }
+            }
+            return result;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4dd2554c6f8623e55c6cdb9f6e418303a9223209
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a200b19ca1a9685429ed7e043c28e904
+timeCreated: 1505831686
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f0b529055091046b8e053b4ba0dd280e62acf5a0
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs
@@ -0,0 +1,103 @@
+#if false // GML We disable smoother because people are too tempted to use it.  It won't give good results.
+using UnityEngine;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An add-on module for Cinemachine Virtual Camera which post-processes
+    /// the final position and  orientation of the virtual camera, as a kind of low-pass filter.
+    /// </summary>
+    [DocumentationSorting(17, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [AddComponentMenu("")] // Hide in menu
+    [SaveDuringPlay]
+    public class CinemachineSmoother : CinemachineExtension
+    {
+        /// <summary>
+        /// The strength of the smoothing for position.  This is applied after the vcam cas calculated its state.
+        /// </summary>
+        [Range(0f, 10f)]
+        [Tooltip("The strength of the smoothing for position.  Higher numbers smooth more but reduce performance and introduce lag.")]
+        public float m_PositionSmoothing = 1;
+
+        /// <summary>
+        /// The strength of the smoothing for the LookAt target.  This is applied after the vcam cas calculated its state.
+        /// </summary>
+        [Range(0f, 10f)]
+        [Tooltip("The strength of the smoothing for the LookAt target.  Higher numbers smooth more but reduce performance and introduce lag.")]
+        public float m_LookAtSmoothing = 1;
+
+        /// <summary>
+        /// The strength of the smoothing for rotation.  This is applied after the vcam cas calculated its state.
+        /// </summary>
+        [Range(0f, 10f)]
+        [Tooltip("The strength of the smoothing for rotation.  Higher numbers smooth more but reduce performance and introduce lag.")]
+        public float m_RotationSmoothing = 1;
+
+        protected override void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
+        {
+            if (stage == CinemachineCore.Stage.Body)
+            {
+                VcamExtraState extra = GetExtraState<VcamExtraState>(vcam);
+                if (m_PositionSmoothing > 0)
+                {
+                    if (deltaTime < 0)
+                        extra.mSmoothingFilter = null; // reset the filter
+                    state.PositionCorrection
+                        += ApplySmoothing(vcam, state.CorrectedPosition, extra) - state.CorrectedPosition;
+                }
+                if (m_LookAtSmoothing > 0 && state.HasLookAt)
+                {
+                    if (deltaTime < 0)
+                        extra.mSmoothingFilterLookAt = null; // reset the filter
+                    state.ReferenceLookAt = ApplySmoothingLookAt(vcam, state.ReferenceLookAt, extra);
+                }
+            }
+            if (stage == CinemachineCore.Stage.Aim)
+            {
+                if (m_RotationSmoothing > 0)
+                {
+                    VcamExtraState extra = GetExtraState<VcamExtraState>(vcam);
+                    if (deltaTime < 0)
+                        extra.mSmoothingFilterRotation = null; // reset the filter
+                    Quaternion q = Quaternion.Inverse(state.CorrectedOrientation)
+                        * ApplySmoothing(vcam, state.CorrectedOrientation, state.ReferenceUp, extra);
+                    state.OrientationCorrection = state.OrientationCorrection * q;
+                }
+            }
+        }
+ 
+        class VcamExtraState
+        {
+            public GaussianWindow1D_Vector3 mSmoothingFilter;
+            public GaussianWindow1D_Vector3 mSmoothingFilterLookAt;
+            public GaussianWindow1D_CameraRotation mSmoothingFilterRotation;
+        };
+
+        private Vector3 ApplySmoothing(CinemachineVirtualCameraBase vcam, Vector3 pos, VcamExtraState extra)
+        {
+            if (extra.mSmoothingFilter == null || extra.mSmoothingFilter.Sigma != m_PositionSmoothing)
+                extra.mSmoothingFilter = new GaussianWindow1D_Vector3(m_PositionSmoothing);
+            return extra.mSmoothingFilter.Filter(pos);
+        }
+
+        private Vector3 ApplySmoothingLookAt(CinemachineVirtualCameraBase vcam, Vector3 pos, VcamExtraState extra)
+        {
+            if (extra.mSmoothingFilterLookAt == null || extra.mSmoothingFilterLookAt.Sigma != m_LookAtSmoothing)
+                extra.mSmoothingFilterLookAt = new GaussianWindow1D_Vector3(m_LookAtSmoothing);
+            return extra.mSmoothingFilterLookAt.Filter(pos);
+        }
+
+        private Quaternion ApplySmoothing(CinemachineVirtualCameraBase vcam, Quaternion rot, Vector3 up, VcamExtraState extra)
+        {
+            if (extra.mSmoothingFilterRotation == null || extra.mSmoothingFilterRotation.Sigma != m_RotationSmoothing)
+                extra.mSmoothingFilterRotation = new GaussianWindow1D_CameraRotation(m_RotationSmoothing);
+            Vector3 camRot = Quaternion.identity.GetCameraRotationToTarget(rot * Vector3.forward, up);
+            return Quaternion.identity.ApplyCameraRotation(extra.mSmoothingFilterRotation.Filter(camRot), up);
+        }
+    }
+}
+#endif
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1b213cbe0ed94ba58f4fede5d306f1922ed63830
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f497b01325ac7a041bd6e365a9ea0e93
+timeCreated: 1490724540
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..50d3d34ffcf7c918bd3d64673b7c01b16f9f3215
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs
@@ -0,0 +1,512 @@
+using Cinemachine.Utility;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a virtual camera "manager" that owns and manages a collection
+    /// of child Virtual Cameras.  These child vcams are mapped to individual states in
+    /// an animation state machine, allowing you to associate specific vcams to specific 
+    /// animation states.  When that state is active in the state machine, then the 
+    /// associated camera will be activated.
+    /// 
+    /// You can define custom blends and transitions between child cameras.
+    /// 
+    /// In order to use this behaviour, you must have an animated target (i.e. an object
+    /// animated with a state machine) to drive the behaviour.
+    /// </summary>
+    [DocumentationSorting(13, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineStateDrivenCamera")]
+    public class CinemachineStateDrivenCamera : CinemachineVirtualCameraBase
+    {
+        /// <summary>Default object for the camera children to look at (the aim target), if not specified in a child rig.  May be empty</summary>
+        [Tooltip("Default object for the camera children to look at (the aim target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        /// <summary>Default object for the camera children wants to move with (the body target), if not specified in a child rig.  May be empty</summary>
+        [Tooltip("Default object for the camera children wants to move with (the body target), if not specified in a child camera.  May be empty if all of the children define targets of their own.")]
+        [NoSaveDuringPlay]
+        public Transform m_Follow = null;
+
+        /// <summary>The state machine whose state changes will drive this camera's choice of active child</summary>
+        [Space]
+        [Tooltip("The state machine whose state changes will drive this camera's choice of active child")]
+        public Animator m_AnimatedTarget;
+
+        /// <summary>Which layer in the target FSM to observe</summary>
+        [Tooltip("Which layer in the target state machine to observe")]
+        public int m_LayerIndex;
+
+        /// <summary>When enabled, the current camera and blend will be indicated in the game window, for debugging</summary>
+        [Tooltip("When enabled, the current child camera and blend will be indicated in the game window, for debugging")]
+        public bool m_ShowDebugText = false;
+
+        /// <summary>Force all child cameras to be enabled.  This is useful if animating them in Timeline, but consumes extra resources.</summary>
+        [Tooltip("Force all child cameras to be enabled.  This is useful if animating them in Timeline, but consumes extra resources")]
+        public bool m_EnableAllChildCameras;
+
+        /// <summary>Internal API for the editor.  Do not use this field</summary>
+        [SerializeField][HideInInspector][NoSaveDuringPlay]
+        public CinemachineVirtualCameraBase[] m_ChildCameras = null;
+
+        /// <summary>This represents a single instrunction to the StateDrivenCamera.  It associates
+        /// an state from the state machine with a child Virtual Camera, and also holds
+        /// activation tuning parameters.</summary>
+        [Serializable]
+        public struct Instruction
+        {
+            /// <summary>The full hash of the animation state</summary>
+            [Tooltip("The full hash of the animation state")]
+            public int m_FullHash;
+            /// <summary>The virtual camera to activate whrn the animation state becomes active</summary>
+            [Tooltip("The virtual camera to activate whrn the animation state becomes active")]
+            public CinemachineVirtualCameraBase m_VirtualCamera;
+            /// <summary>How long to wait (in seconds) before activating the virtual camera. 
+            /// This filters out very short state durations</summary>
+            [Tooltip("How long to wait (in seconds) before activating the virtual camera. This filters out very short state durations")]
+            public float m_ActivateAfter;
+            /// <summary>The minimum length of time (in seconds) to keep a virtual camera active</summary>
+            [Tooltip("The minimum length of time (in seconds) to keep a virtual camera active")]
+            public float m_MinDuration;
+        };
+
+        /// <summary>The set of instructions associating virtual cameras with states.  
+        /// These instructions are used to choose the live child at any given moment</summary>
+        [Tooltip("The set of instructions associating virtual cameras with states.  These instructions are used to choose the live child at any given moment")]
+        public Instruction[] m_Instructions;
+
+        /// <summary>
+        /// The blend which is used if you don't explicitly define a blend between two Virtual Camera children.
+        /// </summary>
+        [CinemachineBlendDefinitionProperty]
+        [Tooltip("The blend which is used if you don't explicitly define a blend between two Virtual Camera children")]
+        public CinemachineBlendDefinition m_DefaultBlend
+            = new CinemachineBlendDefinition(CinemachineBlendDefinition.Style.EaseInOut, 0.5f);
+
+        /// <summary>
+        /// This is the asset which contains custom settings for specific child blends.
+        /// </summary>
+        [Tooltip("This is the asset which contains custom settings for specific child blends")]
+        public CinemachineBlenderSettings m_CustomBlends = null;
+
+        /// <summary>Internal API for the Inspector editor.  This implements nested states.</summary>
+        [Serializable]
+        [DocumentationSorting(13.2f, DocumentationSortingAttribute.Level.Undoc)]
+        public struct ParentHash
+        {
+            /// <summary>Internal API for the Inspector editor</summary>
+            public int m_Hash;
+            /// <summary>Internal API for the Inspector editor</summary>
+            public int m_ParentHash;
+            /// <summary>Internal API for the Inspector editor</summary>
+            public ParentHash(int h, int p) { m_Hash = h; m_ParentHash = p; }
+        }
+        /// <summary>Internal API for the Inspector editor</summary>
+        [HideInInspector][SerializeField] public ParentHash[] m_ParentHash = null;
+
+        /// <summary>Gets a brief debug description of this virtual camera, for use when displayiong debug info</summary>
+        public override string Description 
+        { 
+            get 
+            { 
+                // Show the active camera and blend
+                ICinemachineCamera vcam = LiveChild;
+                if (mActiveBlend == null) 
+                    return (vcam != null) ? "[" + vcam.Name + "]" : "(none)";
+                return mActiveBlend.Description;
+            }
+        }
+        
+        /// <summary>Get the current "best" child virtual camera, that would be chosen
+        /// if the State Driven Camera were active.</summary>
+        public ICinemachineCamera LiveChild { set; get; }
+
+        /// <summary>Return the live child.</summary>
+        public override ICinemachineCamera LiveChildOrSelf { get { return LiveChild; } }
+
+        /// <summary>Check whether the vcam a live child of this camera.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public override bool IsLiveChild(ICinemachineCamera vcam) 
+        { 
+            return vcam == LiveChild 
+                || (mActiveBlend != null && (vcam == mActiveBlend.CamA || vcam == mActiveBlend.CamB));
+        }
+
+        /// <summary>The State of the current live child</summary>
+        public override CameraState State { get { return m_State; } }
+
+        /// <summary>Get the current LookAt target.  Returns parent's LookAt if parent
+        /// is non-null and no specific LookAt defined for this camera</summary>
+        override public Transform LookAt
+        {
+            get { return ResolveLookAt(m_LookAt); }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>Get the current Follow target.  Returns parent's Follow if parent
+        /// is non-null and no specific Follow defined for this camera</summary>
+        override public Transform Follow
+        {
+            get { return ResolveFollow(m_Follow); }
+            set { m_Follow = value; }
+        }
+
+        /// <summary>Remove a Pipeline stage hook callback.
+        /// Make sure it is removed from all the children.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public override void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            base.RemovePostPipelineStageHook(d);
+            UpdateListOfChildren();
+            foreach (var vcam in m_ChildCameras)
+                vcam.RemovePostPipelineStageHook(d);
+        }
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  This implementation
+        /// updates all the children, chooses the best one, and implements any required blending.</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public override void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineStateDrivenCamera.UpdateCameraState");
+            if (!PreviousStateIsValid)
+                deltaTime = -1;
+
+            UpdateListOfChildren();
+            CinemachineVirtualCameraBase best = ChooseCurrentCamera(deltaTime);
+            if (m_ChildCameras != null)
+            {
+                for (int i = 0; i < m_ChildCameras.Length; ++i)
+                {
+                    CinemachineVirtualCameraBase vcam  = m_ChildCameras[i];
+                    if (vcam != null)
+                    {
+                        bool enableChild = m_EnableAllChildCameras || vcam == best;
+                        if (enableChild != vcam.VirtualCameraGameObject.activeInHierarchy)
+                        {
+                            vcam.gameObject.SetActive(enableChild);
+                            if (enableChild)
+                                CinemachineCore.Instance.UpdateVirtualCamera(vcam, worldUp, deltaTime);
+                        }
+                    }
+                }
+            }
+
+            ICinemachineCamera previousCam = LiveChild;
+            LiveChild = best;
+
+            // Are we transitioning cameras?
+            if (previousCam != null && LiveChild != null && previousCam != LiveChild)
+            {
+                // Create a blend (will be null if a cut)
+                float duration = 0;
+                AnimationCurve curve = LookupBlendCurve(previousCam, LiveChild, out duration);
+                mActiveBlend = CreateBlend(
+                        previousCam, LiveChild,
+                        curve, duration, mActiveBlend, deltaTime);
+
+                // Notify incoming camera of transition
+                LiveChild.OnTransitionFromCamera(previousCam, worldUp, deltaTime);
+
+                // Generate Camera Activation event if live
+                CinemachineCore.Instance.GenerateCameraActivationEvent(LiveChild);
+
+                // If cutting, generate a camera cut event if live
+                if (mActiveBlend == null)
+                    CinemachineCore.Instance.GenerateCameraCutEvent(LiveChild);
+            }
+
+            // Advance the current blend (if any)
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.TimeInBlend += (deltaTime >= 0)
+                    ? deltaTime : mActiveBlend.Duration;
+                if (mActiveBlend.IsComplete)
+                    mActiveBlend = null;
+            }
+
+            if (mActiveBlend != null)
+            {
+                mActiveBlend.UpdateCameraState(worldUp, deltaTime);
+                m_State = mActiveBlend.State;
+            }
+            else if (LiveChild != null)
+                m_State =  LiveChild.State;
+
+            PreviousStateIsValid = true;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            InvalidateListOfChildren();
+            mActiveBlend = null;
+        }
+
+        /// <summary>Makes sure the internal child cache is up to date</summary>
+        public void OnTransformChildrenChanged()
+        {
+            InvalidateListOfChildren();
+        }
+
+#if UNITY_EDITOR
+        /// <summary>Displays the current active camera on the game screen, if requested</summary>
+        protected override void OnGUI()
+        {
+            base.OnGUI();
+            if (!m_ShowDebugText)
+                CinemachineGameWindowDebug.ReleaseScreenPos(this);
+            else
+            {
+                string text = Name + ": " + Description;
+                Rect r = CinemachineGameWindowDebug.GetScreenPos(this, text, GUI.skin.box);
+                GUI.Label(r, text, GUI.skin.box);
+            }
+        }
+#endif
+        CameraState m_State = CameraState.Default;
+
+        /// <summary>The list of child cameras.  These are just the immediate children in the hierarchy.</summary>
+        public CinemachineVirtualCameraBase[] ChildCameras { get { UpdateListOfChildren(); return m_ChildCameras; }}
+
+        /// <summary>Is there a blend in progress?</summary>
+        public bool IsBlending { get { return mActiveBlend != null; } }
+
+        /// <summary>API for the inspector editor.  Animation module does not have hashes
+        /// for state parents, so we have to invent them in order to implement nested state
+        /// handling</summary>
+        public static string CreateFakeHashName(int parentHash, string stateName)
+            { return parentHash.ToString() + "_" + stateName; }
+
+        float mActivationTime = 0;
+        Instruction mActiveInstruction;
+        float mPendingActivationTime = 0;
+        Instruction mPendingInstruction;
+        private CinemachineBlend mActiveBlend = null;
+
+        void InvalidateListOfChildren() { m_ChildCameras = null; LiveChild = null; }
+
+        void UpdateListOfChildren()
+        {
+            if (m_ChildCameras != null && mInstructionDictionary != null && mStateParentLookup != null)
+                return;
+            List<CinemachineVirtualCameraBase> list = new List<CinemachineVirtualCameraBase>();
+            CinemachineVirtualCameraBase[] kids = GetComponentsInChildren<CinemachineVirtualCameraBase>(true);
+            foreach (CinemachineVirtualCameraBase k in kids)
+                if (k.transform.parent == transform)
+                    list.Add(k);
+            m_ChildCameras = list.ToArray();
+            ValidateInstructions();
+        }
+
+        private Dictionary<int, int> mInstructionDictionary;
+        private Dictionary<int, int> mStateParentLookup;
+        /// <summary>Internal API for the inspector editor.</summary>
+        public void ValidateInstructions()
+        {
+            if (m_Instructions == null)
+                m_Instructions = new Instruction[0];
+            mInstructionDictionary = new Dictionary<int, int>();
+            for (int i = 0; i < m_Instructions.Length; ++i)
+            {
+                if (m_Instructions[i].m_VirtualCamera != null
+                    && m_Instructions[i].m_VirtualCamera.transform.parent != transform)
+                {
+                    m_Instructions[i].m_VirtualCamera = null;
+                }
+                mInstructionDictionary[m_Instructions[i].m_FullHash] = i;
+            }
+
+            // Create the parent lookup
+            mStateParentLookup = new Dictionary<int, int>();
+            if (m_ParentHash != null)
+                foreach (var i in m_ParentHash)
+                    mStateParentLookup[i.m_Hash] = i.m_ParentHash;
+
+            // Zap the cached current instructions
+            mActivationTime = mPendingActivationTime = 0;
+            mActiveBlend = null;
+        }
+
+        List<AnimatorClipInfo>  m_clipInfoList = new List<AnimatorClipInfo>();
+        private CinemachineVirtualCameraBase ChooseCurrentCamera(float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineStateDrivenCamera.ChooseCurrentCamera");
+            if (m_ChildCameras == null || m_ChildCameras.Length == 0)
+            {
+                mActivationTime = 0;
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return null;
+            }
+            CinemachineVirtualCameraBase defaultCam = m_ChildCameras[0];
+            if (m_AnimatedTarget == null || !m_AnimatedTarget.gameObject.activeSelf 
+                || m_AnimatedTarget.runtimeAnimatorController == null
+                || m_LayerIndex < 0 || m_LayerIndex >= m_AnimatedTarget.layerCount)
+            {
+                mActivationTime = 0;
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return defaultCam;
+            }
+
+            // Get the current state
+            int hash;
+            if (m_AnimatedTarget.IsInTransition(m_LayerIndex))
+            {
+                // Force "current" state to be the state we're transitionaing to
+                AnimatorStateInfo info = m_AnimatedTarget.GetNextAnimatorStateInfo(m_LayerIndex);
+                hash = info.fullPathHash;
+                if (m_AnimatedTarget.GetNextAnimatorClipInfoCount(m_LayerIndex) > 1)
+                {
+                    m_AnimatedTarget.GetNextAnimatorClipInfo(m_LayerIndex, m_clipInfoList);
+                    hash = GetClipHash(info.fullPathHash, m_clipInfoList);
+                }
+            }
+            else 
+            {
+                AnimatorStateInfo info = m_AnimatedTarget.GetCurrentAnimatorStateInfo(m_LayerIndex);
+                hash = info.fullPathHash;
+                if (m_AnimatedTarget.GetCurrentAnimatorClipInfoCount(m_LayerIndex) > 1)
+                {
+                    m_AnimatedTarget.GetCurrentAnimatorClipInfo(m_LayerIndex, m_clipInfoList);
+                    hash = GetClipHash(info.fullPathHash, m_clipInfoList);
+                }
+            }
+
+            // If we don't have an instruction for this state, find a suitable default
+            while (hash != 0 && !mInstructionDictionary.ContainsKey(hash))
+                hash = mStateParentLookup.ContainsKey(hash) ? mStateParentLookup[hash] : 0;
+
+            float now = Time.time;
+            if (mActivationTime != 0)
+            {
+                // Is it active now?
+                if (mActiveInstruction.m_FullHash == hash)
+                {
+                    // Yes, cancel any pending
+                    mPendingActivationTime = 0;
+                    //UnityEngine.Profiling.Profiler.EndSample();
+                    return mActiveInstruction.m_VirtualCamera;
+                }
+
+                // Is it pending?
+                if (deltaTime >= 0)
+                {
+                    if (mPendingActivationTime != 0 && mPendingInstruction.m_FullHash == hash)
+                    {
+                        // Has it been pending long enough, and are we allowed to switch away
+                        // from the active action?
+                        if ((now - mPendingActivationTime) > mPendingInstruction.m_ActivateAfter
+                            && ((now - mActivationTime) > mActiveInstruction.m_MinDuration
+                                || mPendingInstruction.m_VirtualCamera.Priority
+                                > mActiveInstruction.m_VirtualCamera.Priority))
+                        {
+                            // Yes, activate it now
+                            mActiveInstruction = mPendingInstruction;
+                            mActivationTime = now;
+                            mPendingActivationTime = 0;
+                        }
+                        //UnityEngine.Profiling.Profiler.EndSample();
+                        return mActiveInstruction.m_VirtualCamera;
+                    }
+                }
+            }
+            // Neither active nor pending.
+            mPendingActivationTime = 0; // cancel the pending, if any
+
+            if (!mInstructionDictionary.ContainsKey(hash))
+            {
+                // No defaults set, we just ignore this state
+                if (mActivationTime != 0)
+                    return mActiveInstruction.m_VirtualCamera;
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return defaultCam;
+            }
+
+            // Can we activate it now?
+            Instruction newInstr = m_Instructions[mInstructionDictionary[hash]];
+            if (newInstr.m_VirtualCamera == null)
+                newInstr.m_VirtualCamera = defaultCam;
+            if (deltaTime >= 0 && mActivationTime > 0)
+            {
+                if (newInstr.m_ActivateAfter > 0
+                    || ((now - mActivationTime) < mActiveInstruction.m_MinDuration
+                        && newInstr.m_VirtualCamera.Priority
+                        <= mActiveInstruction.m_VirtualCamera.Priority))
+                {
+                    // Too early - make it pending
+                    mPendingInstruction = newInstr;
+                    mPendingActivationTime = now;
+                    if (mActivationTime != 0)
+                        return mActiveInstruction.m_VirtualCamera;
+                    //UnityEngine.Profiling.Profiler.EndSample();
+                    return defaultCam;
+                }
+            }
+            // Activate now
+            mActiveInstruction = newInstr;
+            mActivationTime = now;
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return mActiveInstruction.m_VirtualCamera;
+        }
+
+        int GetClipHash(int hash, List<AnimatorClipInfo> clips)
+        {
+            // Is there an animation clip substate?
+            if (clips.Count > 1)
+            {
+                // Find the strongest-weighted one
+                int bestClip = -1;
+                for (int i = 0; i < clips.Count; ++i)
+                    if (bestClip < 0 || clips[i].weight > clips[bestClip].weight)
+                        bestClip = i;
+
+                // Use its hash
+                if (bestClip >= 0 && clips[bestClip].weight > 0)
+                    hash = Animator.StringToHash(CreateFakeHashName(hash, clips[bestClip].clip.name));
+            }
+            return hash;
+        }
+            
+        private AnimationCurve LookupBlendCurve(
+            ICinemachineCamera fromKey, ICinemachineCamera toKey, out float duration)
+        {
+            // Get the blend curve that's most appropriate for these cameras
+            AnimationCurve blendCurve = m_DefaultBlend.BlendCurve;
+            if (m_CustomBlends != null)
+            {
+                string fromCameraName = (fromKey != null) ? fromKey.Name : string.Empty;
+                string toCameraName = (toKey != null) ? toKey.Name : string.Empty;
+                blendCurve = m_CustomBlends.GetBlendCurveForVirtualCameras(
+                        fromCameraName, toCameraName, blendCurve);
+            }
+            var keys = blendCurve.keys;
+            duration = (keys == null || keys.Length == 0) ? 0 : keys[keys.Length-1].time;
+            return blendCurve;
+        }
+
+        private CinemachineBlend CreateBlend(
+            ICinemachineCamera camA, ICinemachineCamera camB, 
+            AnimationCurve blendCurve, float duration,
+            CinemachineBlend activeBlend, float deltaTime)
+        {
+            if (blendCurve == null || duration <= 0 || (camA == null && camB == null))
+                return null;
+
+            if (camA == null || activeBlend != null)
+            {
+                // Blend from the current camera position
+                CameraState state = (activeBlend != null) ? activeBlend.State : State;
+                camA = new StaticPointVirtualCamera(state, (activeBlend != null) ? "Mid-blend" : "(none)");
+            }
+            return new CinemachineBlend(camA, camB, blendCurve,duration,  0);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..03f5effb4a061204b96e24ba216cc2d386b1c42c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 325a6a3050a061e4b8aa51386c30e8e1
+timeCreated: 1489088095
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b26065a2bf35dd60fceadb0e4eb005ad5a7366d5
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs
@@ -0,0 +1,269 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>Defines a group of target objects, each with a radius and a weight.
+    /// The weight is used when calculating the average position of the target group.
+    /// Higher-weighted members of the group will count more.
+    /// The bounding box is calculated by taking the member positions, weight, 
+    /// and radii into account.
+    /// </summary>
+    [DocumentationSorting(19, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("Cinemachine/CinemachineTargetGroup")]
+    [SaveDuringPlay]
+    [ExecuteInEditMode]
+    public class CinemachineTargetGroup : MonoBehaviour
+    {
+        /// <summary>Holds the information that represents a member of the group</summary>
+        [DocumentationSorting(19.1f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable] public struct Target
+        {
+            /// <summary>The target objects.  This object's position and orientation will contribute to the 
+            /// group's average position and orientation, in accordance with its weight</summary>
+            [Tooltip("The target objects.  This object's position and orientation will contribute to the group's average position and orientation, in accordance with its weight")]
+            public Transform target;
+            /// <summary>How much weight to give the target when averaging.  Cannot be negative</summary>
+            [Tooltip("How much weight to give the target when averaging.  Cannot be negative")]
+            public float weight;
+            /// <summary>The radius of the target, used for calculating the bounding box.  Cannot be negative</summary>
+            [Tooltip("The radius of the target, used for calculating the bounding box.  Cannot be negative")]
+            public float radius;
+        }
+
+        /// <summary>How the group's position is calculated</summary>
+        [DocumentationSorting(19.2f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum PositionMode
+        {
+            ///<summary>Group position will be the center of the group's axis-aligned bounding box</summary>
+            GroupCenter,
+            /// <summary>Group position will be the weighted average of the positions of the members</summary>
+            GroupAverage
+        }
+
+        /// <summary>How the group's position is calculated</summary>
+        [Tooltip("How the group's position is calculated.  Select GroupCenter for the center of the bounding box, and GroupAverage for a weighted average of the positions of the members.")]
+        public PositionMode m_PositionMode = PositionMode.GroupCenter;
+
+        /// <summary>How the group's orientation is calculated</summary>
+        [DocumentationSorting(19.3f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum RotationMode
+        {
+            /// <summary>Manually set in the group's transform</summary>
+            Manual,
+            /// <summary>Weighted average of the orientation of its members.</summary>
+            GroupAverage
+        }
+
+        /// <summary>How the group's orientation is calculated</summary>
+        [Tooltip("How the group's rotation is calculated.  Select Manual to use the value in the group's transform, and GroupAverage for a weighted average of the orientations of the members.")]
+        public RotationMode m_RotationMode = RotationMode.Manual;
+
+        /// <summary>This enum defines the options available for the update method.</summary>
+        public enum UpdateMethod
+        {
+            /// <summary>Updated in normal MonoBehaviour Update.</summary>
+            Update,
+            /// <summary>Updated in sync with the Physics module, in FixedUpdate</summary>
+            FixedUpdate,
+            /// <summary>Updated in MonoBehaviour LateUpdate.</summary>
+            LateUpdate
+        };
+
+        /// <summary>When to update the group's transform based on the position of the group members</summary>
+        [Tooltip("When to update the group's transform based on the position of the group members")]
+        public UpdateMethod m_UpdateMethod = UpdateMethod.LateUpdate;
+
+        /// <summary>The target objects, together with their weights and radii, that will
+        /// contribute to the group's average position, orientation, and size</summary>
+        [NoSaveDuringPlay]
+        [Tooltip("The target objects, together with their weights and radii, that will contribute to the group's average position, orientation, and size.")]
+        public Target[] m_Targets = new Target[0];
+
+        /// Cache of the last valid radius
+        private float m_lastRadius = 0;
+
+        /// <summary>The axis-aligned bounding box of the group, computed using the
+        /// targets positions and radii</summary>
+        public Bounds BoundingBox
+        {
+            get
+            {
+                float averageWeight;
+                Vector3 center = CalculateAveragePosition(out averageWeight);
+                bool gotOne = false;
+                Bounds b = new Bounds(center, new Vector3(m_lastRadius*2, m_lastRadius*2, m_lastRadius*2));
+                if (averageWeight > UnityVectorExtensions.Epsilon)
+                {
+                    for (int i = 0; i < m_Targets.Length; ++i)
+                    {
+                        if (m_Targets[i].target != null)
+                        {
+                            float w = m_Targets[i].weight;
+                            if (w < averageWeight - UnityVectorExtensions.Epsilon)
+                                w = w / averageWeight;
+                            else
+                                w = 1;
+                            float d = m_Targets[i].radius * 2 * w;
+                            Vector3 p = Vector3.Lerp(center, m_Targets[i].target.position, w);
+                            Bounds b2 = new Bounds(p, new Vector3(d, d, d));
+                            if (!gotOne)
+                                b = b2;
+                            else
+                                b.Encapsulate(b2);
+                            gotOne = true;
+                        }
+                    }
+                }
+                Vector3 r = b.extents;
+                m_lastRadius = Mathf.Max(r.x, Mathf.Max(r.y, r.z));
+                return b;
+            }
+        }
+
+        /// <summary>Return true if there are no members with weight > 0</summary>
+        public bool IsEmpty 
+        {
+            get 
+            {
+                for (int i = 0; i < m_Targets.Length; ++i)
+                    if (m_Targets[i].target != null && m_Targets[i].weight > UnityVectorExtensions.Epsilon)
+                        return false;
+                return true;
+            }
+        }
+
+        /// <summary>The axis-aligned bounding box of the group, in a specific reference frame</summary>
+        /// <param name="mView">The frame of reference in which to compute the bounding box</param>
+        /// <returns>The axis-aligned bounding box of the group, in the desired frame of reference</returns>
+        public Bounds GetViewSpaceBoundingBox(Matrix4x4 mView)
+        {
+            Matrix4x4 inverseView = mView.inverse;
+            float averageWeight;
+            Vector3 center = inverseView.MultiplyPoint3x4(CalculateAveragePosition(out averageWeight));
+            bool gotOne = false;
+            Bounds b = new Bounds(center, new Vector3(m_lastRadius*2, m_lastRadius*2, m_lastRadius*2));
+            if (averageWeight > UnityVectorExtensions.Epsilon)
+            {
+                for (int i = 0; i < m_Targets.Length; ++i)
+                {
+                    if (m_Targets[i].target != null)
+                    {
+                        float w = m_Targets[i].weight;
+                        if (w < averageWeight - UnityVectorExtensions.Epsilon)
+                            w = w / averageWeight;
+                        else
+                            w = 1;
+                        float d = m_Targets[i].radius * 2;
+                        Vector4 p = inverseView.MultiplyPoint3x4(m_Targets[i].target.position);
+                        p = Vector3.Lerp(center, p, w);
+                        Bounds b2 = new Bounds(p, new Vector3(d, d, d));
+                        if (!gotOne)
+                            b = b2;
+                        else
+                            b.Encapsulate(b2);
+                        gotOne = true;
+                    }
+                }
+            }
+            Vector3 r = b.extents;
+            m_lastRadius = Mathf.Max(r.x, Mathf.Max(r.y, r.z));
+            return b;
+        }
+
+        Vector3 CalculateAveragePosition(out float averageWeight)
+        {
+            Vector3 pos = Vector3.zero;
+            float weight = 0;
+            int numTargets = 0;
+            for (int i = 0; i < m_Targets.Length; ++i)
+            {
+                if (m_Targets[i].target != null && m_Targets[i].weight > UnityVectorExtensions.Epsilon)
+                {
+                    ++numTargets;
+                    weight += m_Targets[i].weight;
+                    pos += m_Targets[i].target.position * m_Targets[i].weight;
+                }
+            }
+            if (weight > UnityVectorExtensions.Epsilon)
+                pos /= weight;
+            if (numTargets == 0)
+            {
+                averageWeight = 0;
+                return transform.position;
+            }
+            averageWeight = weight / numTargets;
+            return pos;
+        }
+
+        Quaternion CalculateAverageOrientation()
+        {
+            Quaternion r = Quaternion.identity;
+            for (int i = 0; i < m_Targets.Length; ++i)
+            {
+                if (m_Targets[i].target != null)
+                {
+                    float w = m_Targets[i].weight;
+                    Quaternion q = m_Targets[i].target.rotation;
+                    // This is probably bogus
+                    r = new Quaternion(r.x + q.x * w, r.y + q.y * w, r.z + q.z * w, r.w + q.w * w);
+                }
+            }
+            return r.Normalized();
+        }
+
+        private void OnValidate()
+        {
+            for (int i = 0; i < m_Targets.Length; ++i)
+            {
+                if (m_Targets[i].weight < 0)
+                    m_Targets[i].weight = 0;
+                if (m_Targets[i].radius < 0)
+                    m_Targets[i].radius = 0;
+            }
+        }
+
+        void FixedUpdate()
+        {
+            if (m_UpdateMethod == UpdateMethod.FixedUpdate)
+                UpdateTransform();
+        }
+
+        void Update()
+        {
+            if (!Application.isPlaying || m_UpdateMethod == UpdateMethod.Update)
+                UpdateTransform();
+        }
+
+        void LateUpdate()
+        {
+            if (m_UpdateMethod == UpdateMethod.LateUpdate)
+                UpdateTransform();
+        }
+
+        void UpdateTransform()
+        {
+            if (IsEmpty)
+                return;
+            switch (m_PositionMode)
+            {
+                case PositionMode.GroupCenter:
+                    transform.position = BoundingBox.center;
+                    break;
+                case PositionMode.GroupAverage:
+                    float averageWeight;
+                    transform.position = CalculateAveragePosition(out averageWeight);
+                    break;
+            }
+            switch (m_RotationMode)
+            {
+                case RotationMode.Manual:
+                    break;
+                case RotationMode.GroupAverage:
+                    transform.rotation = CalculateAverageOrientation();
+                    break;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..72e50c9196d6e9e3600501d744c2161b7d448347
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e5eb80d8e62d9d145bb50fb783c0f731
+timeCreated: 1496785096
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5d5fe642c2a4bedd489c28c4c72e289f8aed7297
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs
@@ -0,0 +1,464 @@
+using Cinemachine.Utility;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This behaviour is intended to be attached to an empty Transform GameObject, 
+    /// and it represents a Virtual Camera within the Unity scene.
+    /// 
+    /// The Virtual Camera will animate its Transform according to the rules contained
+    /// in its CinemachineComponent pipeline (Aim, Body, and Noise).  When the virtual
+    /// camera is Live, the Unity camera will assume the position and orientation
+    /// of the virtual camera.
+    /// 
+    /// A virtual camera is not a camera. Instead, it can be thought of as a camera controller,
+    /// not unlike a cameraman. It can drive the Unity Camera and control its position, 
+    /// orientation, lens settings, and PostProcessing effects. Each Virtual Camera owns 
+    /// its own Cinemachine Component Pipeline, through which you provide the instructions 
+    /// for dynamically tracking specific game objects. 
+    /// 
+    /// A virtual camera is very lightweight, and does no rendering of its own. It merely 
+    /// tracks interesting GameObjects, and positions itself accordingly. A typical game 
+    /// can have dozens of virtual cameras, each set up to follow a particular character 
+    /// or capture a particular event. 
+    /// 
+    /// A Virtual Camera can be in any of three states: 
+    /// 
+    /// * **Live**: The virtual camera is actively controlling the Unity Camera. The 
+    /// virtual camera is tracking its targets and being updated every frame. 
+    /// * **Standby**: The virtual camera is tracking its targets and being updated 
+    /// every frame, but no Unity Camera is actively being controlled by it. This is 
+    /// the state of a virtual camera that is enabled in the scene but perhaps at a 
+    /// lower priority than the Live virtual camera. 
+    /// * **Disabled**: The virtual camera is present but disabled in the scene. It is 
+    /// not actively tracking its targets and so consumes no processing power. However, 
+    /// the virtual camera can be made live from the Timeline. 
+    /// 
+    /// The Unity Camera can be driven by any virtual camera in the scene. The game 
+    /// logic can choose the virtual camera to make live by manipulating the virtual 
+    /// cameras' enabled flags and their priorities, based on game logic. 
+    ///
+    /// In order to be driven by a virtual camera, the Unity Camera must have a CinemachineBrain 
+    /// behaviour, which will select the most eligible virtual camera based on its priority 
+    /// or on other criteria, and will manage blending. 
+    /// </summary>
+    /// <seealso cref="CinemachineVirtualCameraBase"/>
+    /// <seealso cref="LensSettings"/>
+    /// <seealso cref="CinemachineComposer"/>
+    /// <seealso cref="CinemachineTransposer"/>
+    /// <seealso cref="CinemachineBasicMultiChannelPerlin"/>
+    [DocumentationSorting(1, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode, DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachineVirtualCamera")]
+    public class CinemachineVirtualCamera : CinemachineVirtualCameraBase
+    {
+        /// <summary>The object that the camera wants to look at (the Aim target).
+        /// The Aim component of the CinemachineComponent pipeline
+        /// will refer to this target and orient the vcam in accordance with rules and
+        /// settings that are provided to it.
+        /// If this is null, then the vcam's Transform orientation will be used.</summary>
+        [Tooltip("The object that the camera wants to look at (the Aim target).  If this is null, then the vcam's Transform orientation will define the camera's orientation.")]
+        [NoSaveDuringPlay]
+        public Transform m_LookAt = null;
+
+        /// <summary>The object that the camera wants to move with (the Body target).
+        /// The Body component of the CinemachineComponent pipeline
+        /// will refer to this target and position the vcam in accordance with rules and
+        /// settings that are provided to it.
+        /// If this is null, then the vcam's Transform position will be used.</summary>
+        [Tooltip("The object that the camera wants to move with (the Body target).  If this is null, then the vcam's Transform position will define the camera's position.")]
+        [NoSaveDuringPlay]
+        public Transform m_Follow = null;
+
+        /// <summary>Specifies the LensSettings of this Virtual Camera.
+        /// These settings will be transferred to the Unity camera when the vcam is live.</summary>
+        [FormerlySerializedAs("m_LensAttributes")]
+        [Tooltip("Specifies the lens properties of this Virtual Camera.  This generally mirrors the Unity Camera's lens settings, and will be used to drive the Unity camera when the vcam is active.")]
+        [LensSettingsProperty]
+        public LensSettings m_Lens = LensSettings.Default;
+
+        /// <summary>This is the name of the hidden GameObject that will be created as a child object
+        /// of the virtual camera.  This hidden game object acts as a container for the polymorphic
+        /// CinemachineComponent pipeline.  The Inspector UI for the Virtual Camera
+        /// provides access to this pipleline, as do the CinemachineComponent-family of
+        /// public methods in this class.
+        /// The lifecycle of the pipeline GameObject is managed automatically.</summary>
+        public const string PipelineName = "cm";
+
+        /// <summary>The CameraState object holds all of the information
+        /// necessary to position the Unity camera.  It is the output of this class.</summary>
+        override public CameraState State { get { return m_State; } }
+
+        /// <summary>Get the LookAt target for the Aim component in the CinemachinePipeline.
+        /// If this vcam is a part of a meta-camera collection, then the owner's target
+        /// will be used if the local target is null.</summary>
+        override public Transform LookAt
+        {
+            get { return ResolveLookAt(m_LookAt); }
+            set { m_LookAt = value; }
+        }
+
+        /// <summary>Get the Follow target for the Body component in the CinemachinePipeline.
+        /// If this vcam is a part of a meta-camera collection, then the owner's target
+        /// will be used if the local target is null.</summary>
+        override public Transform Follow
+        {
+            get { return ResolveFollow(m_Follow); }
+            set { m_Follow = value; }
+        }
+
+        /// <summary>Called by CinemachineCore at LateUpdate time
+        /// so the vcam can position itself and track its targets.  This class will
+        /// invoke its pipeline and generate a CameraState for this frame.</summary>
+        override public void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineVirtualCamera.UpdateCameraState");
+            if (!PreviousStateIsValid)
+                deltaTime = -1;
+
+            // Reset the base camera state, in case the game object got moved in the editor
+            if (deltaTime < 0)
+                m_State = PullStateFromVirtualCamera(worldUp); // not in gameplay
+
+            // Update the state by invoking the component pipeline
+            m_State = CalculateNewState(worldUp, deltaTime);
+
+            // Push the raw position back to the game object's transform, so it
+            // moves along with the camera.
+            if (!UserIsDragging)
+            {
+                if (Follow != null)
+                    transform.position = State.RawPosition;
+                if (LookAt != null)
+                    transform.rotation = State.RawOrientation;
+            }
+            PreviousStateIsValid = true;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>Make sure that the pipeline cache is up-to-date.</summary>
+        override protected void OnEnable()
+        {
+            base.OnEnable();
+            InvalidateComponentPipeline();
+
+            // Can't add components during OnValidate
+            if (ValidatingStreamVersion < 20170927)
+            {
+                if (Follow != null && GetCinemachineComponent(CinemachineCore.Stage.Body) == null)
+                    AddCinemachineComponent<CinemachineHardLockToTarget>();
+                if (LookAt != null && GetCinemachineComponent(CinemachineCore.Stage.Aim) == null)
+                    AddCinemachineComponent<CinemachineHardLookAt>();
+            }
+        }
+
+        /// <summary>Calls the DestroyPipelineDelegate for destroying the hidden
+        /// child object, to support undo.</summary>
+        protected override void OnDestroy()
+        {
+            // Make the pipeline visible instead of destroying - this is to keep Undo happy
+            foreach (Transform child in transform)
+                if (child.GetComponent<CinemachinePipeline>() != null)
+                    child.gameObject.hideFlags
+                        &= ~(HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+
+            base.OnDestroy();
+        }
+
+        /// <summary>Enforce bounds for fields, when changed in inspector.</summary>
+        protected override void OnValidate()
+        {
+            base.OnValidate();
+            m_Lens.Validate();
+        }
+
+        void OnTransformChildrenChanged()
+        {
+            InvalidateComponentPipeline();
+        }
+
+        void Reset()
+        {
+            DestroyPipeline();
+        }
+
+        /// <summary>
+        /// Override component pipeline creation.
+        /// This needs to be done by the editor to support Undo.
+        /// The override must do exactly the same thing as the CreatePipeline method in this class.
+        /// </summary>
+        public static CreatePipelineDelegate CreatePipelineOverride;
+
+        /// <summary>
+        /// Override component pipeline creation.
+        /// This needs to be done by the editor to support Undo.
+        /// The override must do exactly the same thing as the CreatePipeline method in
+        /// the CinemachineVirtualCamera class.
+        /// </summary>
+        public delegate Transform CreatePipelineDelegate(
+            CinemachineVirtualCamera vcam, string name, CinemachineComponentBase[] copyFrom);
+
+        /// <summary>
+        /// Override component pipeline destruction.
+        /// This needs to be done by the editor to support Undo.
+        /// </summary>
+        public static DestroyPipelineDelegate DestroyPipelineOverride;
+
+        /// <summary>
+        /// Override component pipeline destruction.
+        /// This needs to be done by the editor to support Undo.
+        /// </summary>
+        public delegate void DestroyPipelineDelegate(GameObject pipeline);
+
+        /// <summary>Destroy any existing pipeline container.</summary>
+        private void DestroyPipeline()
+        {
+            List<Transform> oldPipeline = new List<Transform>();
+            foreach (Transform child in transform)
+                if (child.GetComponent<CinemachinePipeline>() != null)
+                    oldPipeline.Add(child);
+            
+            foreach (Transform child in oldPipeline)
+            {
+                if (DestroyPipelineOverride != null)
+                    DestroyPipelineOverride(child.gameObject);
+                else
+                    Destroy(child.gameObject);
+            }
+            m_ComponentOwner = null;
+            PreviousStateIsValid = false;
+        }
+
+        /// <summary>Create a default pipeline container.</summary>
+        private Transform CreatePipeline(CinemachineVirtualCamera copyFrom)
+        {
+            CinemachineComponentBase[] components = null;
+            if (copyFrom != null)
+            {
+                copyFrom.InvalidateComponentPipeline(); // make sure it's up to date
+                components = copyFrom.GetComponentPipeline();
+            }
+
+            Transform newPipeline = null;
+            if (CreatePipelineOverride != null)
+                newPipeline = CreatePipelineOverride(this, PipelineName, components);
+            else
+            {
+                GameObject go =  new GameObject(PipelineName);
+                go.transform.parent = transform;
+                go.AddComponent<CinemachinePipeline>();
+                newPipeline = go.transform;
+
+                // If copying, transfer the components
+                if (components != null)
+                    foreach (Component c in components)
+                        ReflectionHelpers.CopyFields(c, go.AddComponent(c.GetType()));
+            }
+            PreviousStateIsValid = false;
+            return newPipeline;
+        }
+
+        /// <summary>
+        /// Editor API: Call this when changing the pipeline from the editor.
+        /// Will force a rebuild of the pipeline cache.
+        /// </summary>
+        public void InvalidateComponentPipeline() { m_ComponentPipeline = null; }
+
+        /// <summary>Get the hidden CinemachinePipeline child object.</summary>
+        public Transform GetComponentOwner() { UpdateComponentPipeline(); return m_ComponentOwner; }
+
+        /// <summary>Get the component pipeline owned by the hidden child pipline container.
+        /// For most purposes, it is preferable to use the GetCinemachineComponent method.</summary>
+        public CinemachineComponentBase[] GetComponentPipeline() { UpdateComponentPipeline(); return m_ComponentPipeline; }
+
+        /// <summary>Get the component set for a specific stage.</summary>
+        /// <param name="stage">The stage for which we want the component</param>
+        /// <returns>The Cinemachine component for that stage, or null if not defined</returns>
+        public CinemachineComponentBase GetCinemachineComponent(CinemachineCore.Stage stage)
+        {
+            CinemachineComponentBase[] components = GetComponentPipeline();
+            if (components != null)
+                foreach (var c in components)
+                    if (c.Stage == stage)
+                        return c;
+            return null;
+        }
+
+        /// <summary>Get an existing component of a specific type from the cinemachine pipeline.</summary>
+        public T GetCinemachineComponent<T>() where T : CinemachineComponentBase
+        {
+            CinemachineComponentBase[] components = GetComponentPipeline();
+            if (components != null)
+                foreach (var c in components)
+                    if (c is T)
+                        return c as T;
+            return null;
+        }
+
+        /// <summary>Add a component to the cinemachine pipeline.</summary>
+        public T AddCinemachineComponent<T>() where T : CinemachineComponentBase
+        {
+            // Get the existing components
+            Transform owner = GetComponentOwner();
+            CinemachineComponentBase[] components = owner.GetComponents<CinemachineComponentBase>();
+
+            T component = owner.gameObject.AddComponent<T>();
+            if (component != null && components != null)
+            {
+                // Remove the existing components at that stage
+                CinemachineCore.Stage stage = component.Stage;
+                for (int i = components.Length - 1; i >= 0; --i)
+                {
+                    if (components[i].Stage == stage)
+                    {
+                        components[i].enabled = false;
+                        DestroyImmediate(components[i]);
+                    }
+                }
+            }
+            InvalidateComponentPipeline();
+            return component;
+        }
+
+        /// <summary>Remove a component from the cinemachine pipeline.</summary>
+        public void DestroyCinemachineComponent<T>() where T : CinemachineComponentBase
+        {
+            CinemachineComponentBase[] components = GetComponentPipeline();
+            if (components != null)
+            {
+                foreach (var c in components)
+                {
+                    if (c is T)
+                    {
+                        c.enabled = false;
+                        DestroyImmediate(c);
+                        InvalidateComponentPipeline();
+                    }
+                }
+            }
+        }
+
+        /// <summary>API for the editor, to make the dragging of position handles behave better.</summary>
+        public bool UserIsDragging { get; set; }
+
+        /// <summary>API for the editor, to process a position drag from the user.</summary>
+        public void OnPositionDragged(Vector3 delta)
+        {
+            CinemachineComponentBase[] components = GetComponentPipeline();
+            if (components != null)
+                for (int i = 0; i < components.Length; ++i)
+                    components[i].OnPositionDragged(delta);
+        }
+
+        CameraState m_State = CameraState.Default; // Current state this frame
+
+        CinemachineComponentBase[] m_ComponentPipeline = null;
+        [SerializeField][HideInInspector] private Transform m_ComponentOwner = null;   // serialized to handle copy/paste
+        void UpdateComponentPipeline()
+        {
+            // Did we just get copy/pasted?
+            if (m_ComponentOwner != null && m_ComponentOwner.parent != transform)
+            {
+                CinemachineVirtualCamera copyFrom = (m_ComponentOwner.parent != null)
+                    ? m_ComponentOwner.parent.gameObject.GetComponent<CinemachineVirtualCamera>() : null;
+                DestroyPipeline();
+                m_ComponentOwner = CreatePipeline(copyFrom);
+            }
+
+            // Early out if we're up-to-date
+            if (m_ComponentOwner != null && m_ComponentPipeline != null)
+                return;
+
+            m_ComponentOwner = null;
+            List<CinemachineComponentBase> list = new List<CinemachineComponentBase>();
+            foreach (Transform child in transform)
+            {
+                if (child.GetComponent<CinemachinePipeline>() != null)
+                {
+                    m_ComponentOwner = child;
+                    CinemachineComponentBase[] components = child.GetComponents<CinemachineComponentBase>();
+                    foreach (CinemachineComponentBase c in components)
+                        list.Add(c);
+                }
+            }
+
+            // Make sure we have a pipeline owner
+            if (m_ComponentOwner == null)
+                m_ComponentOwner = CreatePipeline(null);
+
+            // Make sure the pipeline stays hidden, even through prefab
+            if (CinemachineCore.sShowHiddenObjects)
+                m_ComponentOwner.gameObject.hideFlags
+                    &= ~(HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+            else
+                m_ComponentOwner.gameObject.hideFlags
+                    |= (HideFlags.HideInHierarchy | HideFlags.HideInInspector);
+
+            // Sort the pipeline
+            list.Sort((c1, c2) => (int)c1.Stage - (int)c2.Stage);
+            m_ComponentPipeline = list.ToArray();
+        }
+
+        private CameraState CalculateNewState(Vector3 worldUp, float deltaTime)
+        {
+            // Initialize the camera state, in case the game object got moved in the editor
+            CameraState state = PullStateFromVirtualCamera(worldUp);
+
+            if (LookAt != null)
+                state.ReferenceLookAt = LookAt.position;
+
+            // Update the state by invoking the component pipeline
+            CinemachineCore.Stage curStage = CinemachineCore.Stage.Body;
+            UpdateComponentPipeline(); // avoid GetComponentPipeline() here because of GC
+            if (m_ComponentPipeline != null)
+            {
+                for (int i = 0; i < m_ComponentPipeline.Length; ++i)
+                    m_ComponentPipeline[i].PrePipelineMutateCameraState(ref state);
+
+                for (int i = 0; i < m_ComponentPipeline.Length; ++i)
+                {
+                    curStage = AdvancePipelineStage(
+                        ref state, deltaTime, curStage, (int)m_ComponentPipeline[i].Stage);
+                    m_ComponentPipeline[i].MutateCameraState(ref state, deltaTime);
+                }
+            }
+            int numStages = 3; //Enum.GetValues(typeof(CinemachineCore.Stage)).Length;
+            AdvancePipelineStage(ref state, deltaTime, curStage, numStages);
+            return state;
+        }
+
+        private CinemachineCore.Stage AdvancePipelineStage(
+            ref CameraState state, float deltaTime,
+            CinemachineCore.Stage curStage, int maxStage)
+        {
+            while ((int)curStage < maxStage)
+            {
+                InvokePostPipelineStageCallback(this, curStage, ref state, deltaTime);
+                ++curStage;
+            }
+            return curStage;
+        }
+
+        private CameraState PullStateFromVirtualCamera(Vector3 worldUp)
+        {
+            CameraState state = CameraState.Default;
+            state.RawPosition = transform.position;
+            state.RawOrientation = transform.rotation;
+            state.ReferenceUp = worldUp;
+
+            CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(this);
+            m_Lens.Aspect = brain != null ? brain.OutputCamera.aspect : 1;
+            m_Lens.Orthographic = brain != null ? brain.OutputCamera.orthographic : false;
+            state.Lens = m_Lens;
+
+            return state;
+        }
+
+        // This is a hack for FreeLook rigs - to be removed
+        internal void SetStateRawPosition(Vector3 pos) { m_State.RawPosition = pos; }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c1e38c62a7cbbd81afca163925b89e5230c12c9f
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 45e653bab7fb20e499bda25e1b646fea
+timeCreated: 1496775476
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components.meta b/Assets/Cinemachine/Base/Runtime/Components.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2c26f6d0d61647f5beb8eb19e2b6eda01b6f777e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 0fafdc3d4f989ff48803e7d870539b41
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6b43df151db182ff5d1c76da01d61d5e47d36a1e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs
@@ -0,0 +1,113 @@
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// As a part of the Cinemachine Pipeline implementing the Noise stage, this
+    /// component adds Perlin Noise to the Camera state, in the Correction
+    /// channel of the CameraState.
+    /// 
+    /// The noise is created by using a predefined noise profile asset.  This defines the 
+    /// shape of the noise over time.  You can scale this in amplitude or in time, to produce
+    /// a large family of different noises using the same profile.
+    /// </summary>
+    /// <seealso cref="NoiseSettings"/>
+    [DocumentationSorting(8, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineBasicMultiChannelPerlin : CinemachineComponentBase
+    {
+        /// <summary>
+        /// Serialized property for referencing a NoiseSettings asset
+        /// </summary>
+        [HideInInspector]
+        [Tooltip("The asset containing the Noise Profile.  Define the frequencies and amplitudes there to make a characteristic noise profile.  Make your own or just use one of the many presets.")]
+        [FormerlySerializedAs("m_Definition")]
+        public NoiseSettings m_NoiseProfile;
+
+        /// <summary>
+        /// Gain to apply to the amplitudes defined in the settings asset.
+        /// </summary>
+        [Tooltip("Gain to apply to the amplitudes defined in the NoiseSettings asset.  1 is normal.  Setting this to 0 completely mutes the noise.")]
+        public float m_AmplitudeGain = 1f;
+
+        /// <summary>
+        /// Scale factor to apply to the frequencies defined in the settings asset.
+        /// </summary>
+        [Tooltip("Scale factor to apply to the frequencies defined in the NoiseSettings asset.  1 is normal.  Larger magnitudes will make the noise shake more rapidly.")]
+        public float m_FrequencyGain = 1f;
+
+        /// <summary>True if the component is valid, i.e. it has a noise definition and is enabled.</summary>
+        public override bool IsValid { get { return enabled && m_NoiseProfile != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Noise stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Noise; } }
+
+        /// <summary>Applies noise to the Correction channel of the CameraState if the
+        /// delta time is greater than 0.  Otherwise, does nothing.</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">How much to advance the perlin noise generator.
+        /// Noise is only applied if this value is greater than or equal to 0</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (!IsValid || deltaTime < 0)
+                return;
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineBasicMultiChannelPerlin.MutateCameraState");
+            if (!mInitialized)
+                Initialize();
+
+            mNoiseTime += deltaTime * m_FrequencyGain;
+            curState.PositionCorrection += curState.CorrectedOrientation * GetCombinedFilterResults(
+                    m_NoiseProfile.PositionNoise, mNoiseTime, mNoiseOffsets) * m_AmplitudeGain;
+            Quaternion rotNoise = Quaternion.Euler(GetCombinedFilterResults(
+                        m_NoiseProfile.OrientationNoise, mNoiseTime, mNoiseOffsets) * m_AmplitudeGain);
+            curState.OrientationCorrection = curState.OrientationCorrection * rotNoise;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        private bool mInitialized = false;
+        private float mNoiseTime = 0;
+        private Vector3 mNoiseOffsets = Vector3.zero;
+
+        void Initialize()
+        {
+            mInitialized = true;
+            mNoiseTime = 0;
+            mNoiseOffsets = new Vector3(
+                    UnityEngine.Random.Range(-10000f, 10000f),
+                    UnityEngine.Random.Range(-10000f, 10000f),
+                    UnityEngine.Random.Range(-10000f, 10000f));
+        }
+
+        static Vector3 GetCombinedFilterResults(
+            NoiseSettings.TransformNoiseParams[] noiseParams, float time, Vector3 noiseOffsets)
+        {
+            float xPos = 0f;
+            float yPos = 0f;
+            float zPos = 0f;
+            if (noiseParams != null)
+            {
+                for (int i = 0; i < noiseParams.Length; ++i)
+                {
+                    NoiseSettings.TransformNoiseParams param = noiseParams[i];
+                    Vector3 timeVal = new Vector3(param.X.Frequency, param.Y.Frequency, param.Z.Frequency) * time;
+                    timeVal += noiseOffsets;
+
+                    Vector3 noise = new Vector3(
+                            Mathf.PerlinNoise(timeVal.x, 0f) - 0.5f,
+                            Mathf.PerlinNoise(timeVal.y, 0f) - 0.5f,
+                            Mathf.PerlinNoise(timeVal.z, 0f) - 0.5f);
+
+                    xPos += noise.x * param.X.Amplitude;
+                    yPos += noise.y * param.Y.Amplitude;
+                    zPos += noise.z * param.Z.Amplitude;
+                }
+            }
+            return new Vector3(xPos, yPos, zPos);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..aa065b7bc887c00788e22e0eaf983a3fd616baa8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 68bb026fafb42b14791938953eaace77
+timeCreated: 1484001117
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..41125a6cc9f57f68cf8dcdc4677a60c3621aa1a3
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs
@@ -0,0 +1,391 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to aim the camera at the vcam's LookAt target object, with 
+    /// configurable offsets, damping, and composition rules.
+    /// 
+    /// The composer does not change the camera's position.  It will only pan and tilt the 
+    /// camera where it is, in order to get the desired framing.  To move the camera, you have
+    /// to use the virtual camera's Body section.
+    /// </summary>
+    [DocumentationSorting(3, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode] // for OnGUI
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineComposer : CinemachineComponentBase
+    {
+        /// <summary>Used by the Inspector Editor to display on-screen guides.</summary>
+        [NoSaveDuringPlay, HideInInspector]
+        public Action OnGUICallback = null;
+
+        /// <summary>Target offset from the object's center in LOCAL space which
+        /// the Composer tracks. Use this to fine-tune the tracking target position
+        /// when the desired area is not in the tracked object's center</summary>
+        [Tooltip("Target offset from the target object's center in target-local space. Use this to fine-tune the tracking target position when the desired area is not the tracked object's center.")]
+        public Vector3 m_TrackedObjectOffset = Vector3.zero;
+
+        /// <summary>This setting will instruct the composer to adjust its target offset based
+        /// on the motion of the target.  The composer will look at a point where it estimates
+        /// the target will be this many seconds into the future.  Note that this setting is sensitive
+        /// to noisy animation, and can amplify the noise, resulting in undesirable camera jitter.
+        /// If the camera jitters unacceptably when the target is in motion, turn down this setting, 
+        /// or animate the target more smoothly.</summary>
+        [Tooltip("This setting will instruct the composer to adjust its target offset based on the motion of the target.  The composer will look at a point where it estimates the target will be this many seconds into the future.  Note that this setting is sensitive to noisy animation, and can amplify the noise, resulting in undesirable camera jitter.  If the camera jitters unacceptably when the target is in motion, turn down this setting, or animate the target more smoothly.")]
+        [Range(0f, 1f)]
+        public float m_LookaheadTime = 0;
+
+        /// <summary>Controls the smoothness of the lookahead algorithm.  Larger values smooth out 
+        /// jittery predictions and also increase prediction lag</summary>
+        [Tooltip("Controls the smoothness of the lookahead algorithm.  Larger values smooth out jittery predictions and also increase prediction lag")]
+        [Range(3, 30)]
+        public float m_LookaheadSmoothing = 10;
+
+        /// <summary>How aggressively the camera tries to follow the target in the screen-horizontal direction.
+        /// Small numbers are more responsive, rapidly orienting the camera to keep the target in
+        /// the dead zone. Larger numbers give a more heavy slowly responding camera.
+        /// Using different vertical and horizontal settings can yield a wide range of camera behaviors.</summary>
+        [Space]
+        [Range(0f, 20)]
+        [Tooltip("How aggressively the camera tries to follow the target in the screen-horizontal direction. Small numbers are more responsive, rapidly orienting the camera to keep the target in the dead zone. Larger numbers give a more heavy slowly responding camera. Using different vertical and horizontal settings can yield a wide range of camera behaviors.")]
+        public float m_HorizontalDamping = 0.5f;
+
+        /// <summary>How aggressively the camera tries to follow the target in the screen-vertical direction. 
+        /// Small numbers are more responsive, rapidly orienting the camera to keep the target in 
+        /// the dead zone. Larger numbers give a more heavy slowly responding camera. Using different vertical 
+        /// and horizontal settings can yield a wide range of camera behaviors.</summary>
+        [Range(0f, 20)]
+        [Tooltip("How aggressively the camera tries to follow the target in the screen-vertical direction. Small numbers are more responsive, rapidly orienting the camera to keep the target in the dead zone. Larger numbers give a more heavy slowly responding camera. Using different vertical and horizontal settings can yield a wide range of camera behaviors.")]
+        public float m_VerticalDamping = 0.5f;
+
+        /// <summary>Horizontal screen position for target. The camera will rotate to the position the tracked object here</summary>
+        [Space]
+        [Range(0f, 1f)]
+        [Tooltip("Horizontal screen position for target. The camera will rotate to position the tracked object here.")]
+        public float m_ScreenX = 0.5f;
+
+        /// <summary>Vertical screen position for target, The camera will rotate to to position the tracked object here</summary>
+        [Range(0f, 1f)]
+        [Tooltip("Vertical screen position for target, The camera will rotate to position the tracked object here.")]
+        public float m_ScreenY = 0.5f;
+
+        /// <summary>Camera will not rotate horizontally if the target is within this range of the position</summary>
+        [Range(0f, 1f)]
+        [Tooltip("Camera will not rotate horizontally if the target is within this range of the position.")]
+        public float m_DeadZoneWidth = 0.1f;
+
+        /// <summary>Camera will not rotate vertically if the target is within this range of the position</summary>
+        [Range(0f, 1f)]
+        [Tooltip("Camera will not rotate vertically if the target is within this range of the position.")]
+        public float m_DeadZoneHeight = 0.1f;
+
+        /// <summary>When target is within this region, camera will gradually move to re-align
+        /// towards the desired position, depending onm the damping speed</summary>
+        [Range(0f, 2f)]
+        [Tooltip("When target is within this region, camera will gradually rotate horizontally to re-align towards the desired position, depending on the damping speed.")]
+        public float m_SoftZoneWidth = 0.8f;
+
+        /// <summary>When target is within this region, camera will gradually move to re-align
+        /// towards the desired position, depending onm the damping speed</summary>
+        [Range(0f, 2f)]
+        [Tooltip("When target is within this region, camera will gradually rotate vertically to re-align towards the desired position, depending on the damping speed.")]
+        public float m_SoftZoneHeight = 0.8f;
+
+        /// <summary>A non-zero bias will move the targt position away from the center of the soft zone</summary>
+        [Range(-0.5f, 0.5f)]
+        [Tooltip("A non-zero bias will move the target position horizontally away from the center of the soft zone.")]
+        public float m_BiasX = 0f;
+
+        /// <summary>A non-zero bias will move the targt position away from the center of the soft zone</summary>
+        [Range(-0.5f, 0.5f)]
+        [Tooltip("A non-zero bias will move the target position vertically away from the center of the soft zone.")]
+        public float m_BiasY = 0f;
+
+        /// <summary>True if component is enabled and has a LookAt defined</summary>
+        public override bool IsValid { get { return enabled && LookAtTarget != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Aim stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Aim; } }
+
+        /// <summary>Internal API for inspector</summary>
+        public Vector3 TrackedPoint { get; private set; }
+
+        /// <summary>Apply the target offsets to the target location.
+        /// Also set the TrackedPoint property, taking lookahead into account.</summary>
+        /// <param name="lookAt">The unoffset LookAt point</param>
+        /// <returns>The LookAt point with the offset applied</returns>
+        protected virtual Vector3 GetLookAtPointAndSetTrackedPoint(Vector3 lookAt)
+        {
+            Vector3 pos = lookAt;
+            if (LookAtTarget != null)
+                pos += LookAtTarget.transform.rotation * m_TrackedObjectOffset;
+
+            m_Predictor.Smoothing = m_LookaheadSmoothing;
+            m_Predictor.AddPosition(pos);
+            TrackedPoint = (m_LookaheadTime > 0)
+                ? m_Predictor.PredictPosition(m_LookaheadTime) : pos;
+
+            return pos;
+        }
+        
+#if UNITY_EDITOR
+        private void OnGUI() { if (OnGUICallback != null) OnGUICallback(); }
+#endif
+
+        /// <summary>State information for damping</summary>
+        Vector3 m_CameraPosPrevFrame = Vector3.zero;
+        Vector3 m_LookAtPrevFrame = Vector3.zero;
+        Vector2 m_ScreenOffsetPrevFrame = Vector2.zero;
+        Quaternion m_CameraOrientationPrevFrame = Quaternion.identity;
+        PositionPredictor m_Predictor = new PositionPredictor();
+
+        public override void PrePipelineMutateCameraState(ref CameraState curState) 
+        {
+            if (IsValid && curState.HasLookAt)
+                curState.ReferenceLookAt = GetLookAtPointAndSetTrackedPoint(curState.ReferenceLookAt);
+        }
+
+        /// <summary>Applies the composer rules and orients the camera accordingly</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  If less than
+        /// zero, then target will snap to the center of the dead zone.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            // Initialize the state for previous frame if appropriate
+            if (deltaTime < 0)
+                m_Predictor.Reset();
+                
+            if (!IsValid || !curState.HasLookAt)
+                return;
+
+            float targetDistance = (TrackedPoint - curState.CorrectedPosition).magnitude;
+            if (targetDistance < Epsilon)
+            {
+                if (deltaTime >= 0)
+                    curState.RawOrientation = m_CameraOrientationPrevFrame;
+                return;  // navel-gazing, get outa here
+            }
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineComposer.MutateCameraState");
+            float fov, fovH;
+            if (curState.Lens.Orthographic)
+            {
+                // Calculate effective fov - fake it for ortho based on target distance
+                fov = Mathf.Rad2Deg * 2 * Mathf.Atan(curState.Lens.OrthographicSize / targetDistance);
+                fovH = Mathf.Rad2Deg * 2 * Mathf.Atan(
+                    curState.Lens.Aspect * curState.Lens.OrthographicSize / targetDistance);
+            }
+            else 
+            {
+                fov = curState.Lens.FieldOfView;
+                double radHFOV = 2 * Math.Atan(Math.Tan(fov * Mathf.Deg2Rad / 2) * curState.Lens.Aspect);
+                fovH = (float)(Mathf.Rad2Deg * radHFOV);
+            }
+
+            Quaternion rigOrientation = curState.RawOrientation;
+            Rect softGuideFOV = ScreenToFOV(SoftGuideRect, fov, fovH, curState.Lens.Aspect);
+            if (deltaTime < 0)
+            {
+                // No damping, just snap to central bounds, skipping the soft zone
+                Rect rect = new Rect(softGuideFOV.center, Vector2.zero); // Force to center
+                RotateToScreenBounds(ref curState, rect, ref rigOrientation, fov, fovH, -1);
+            }
+            else
+            {
+                // Start with previous frame's orientation (but with current up)
+                Vector3 dir = m_LookAtPrevFrame - (m_CameraPosPrevFrame + curState.PositionDampingBypass);
+                if (dir.AlmostZero())  
+                    rigOrientation = Quaternion.LookRotation(
+                        m_CameraOrientationPrevFrame * Vector3.forward, curState.ReferenceUp);
+                else 
+                {
+                    rigOrientation = Quaternion.LookRotation(dir, curState.ReferenceUp);
+                    rigOrientation = rigOrientation.ApplyCameraRotation(
+                        -m_ScreenOffsetPrevFrame, curState.ReferenceUp);
+                }
+
+                // First force the previous rotation into the hard bounds, no damping, 
+                // then Now move it through the soft zone, with damping
+                Rect hardGuideFOV = ScreenToFOV(HardGuideRect, fov, fovH, curState.Lens.Aspect);
+                if (!RotateToScreenBounds(ref curState, hardGuideFOV, ref rigOrientation, fov, fovH, -1))
+                    RotateToScreenBounds(ref curState, softGuideFOV, ref rigOrientation, fov, fovH, deltaTime);
+            }
+            m_CameraPosPrevFrame = curState.CorrectedPosition;
+            m_LookAtPrevFrame = TrackedPoint;
+            m_CameraOrientationPrevFrame = UnityQuaternionExtensions.Normalized(rigOrientation);
+            m_ScreenOffsetPrevFrame = m_CameraOrientationPrevFrame.GetCameraRotationToTarget(
+                m_LookAtPrevFrame - curState.CorrectedPosition, curState.ReferenceUp);
+
+            curState.RawOrientation = m_CameraOrientationPrevFrame;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>Internal API for the inspector editor</summary>
+        public Rect SoftGuideRect
+        {
+            get
+            {
+                return new Rect(
+                    m_ScreenX - m_DeadZoneWidth / 2, m_ScreenY - m_DeadZoneHeight / 2,
+                    m_DeadZoneWidth, m_DeadZoneHeight);
+            }
+            set
+            {
+                m_DeadZoneWidth = Mathf.Clamp01(value.width);
+                m_DeadZoneHeight = Mathf.Clamp01(value.height);
+                m_ScreenX = Mathf.Clamp01(value.x + m_DeadZoneWidth / 2);
+                m_ScreenY = Mathf.Clamp01(value.y + m_DeadZoneHeight / 2);
+                m_SoftZoneWidth = Mathf.Max(m_SoftZoneWidth, m_DeadZoneWidth);
+                m_SoftZoneHeight = Mathf.Max(m_SoftZoneHeight, m_DeadZoneHeight);
+            }
+        }
+
+        /// <summary>Internal API for the inspector editor</summary>
+        public Rect HardGuideRect
+        {
+            get
+            {
+                Rect r = new Rect(
+                        m_ScreenX - m_SoftZoneWidth / 2, m_ScreenY - m_SoftZoneHeight / 2,
+                        m_SoftZoneWidth, m_SoftZoneHeight);
+                r.position += new Vector2(
+                        m_BiasX * (m_SoftZoneWidth - m_DeadZoneWidth),
+                        m_BiasY * (m_SoftZoneHeight - m_DeadZoneHeight));
+                return r;
+            }
+            set
+            {
+                m_SoftZoneWidth = Mathf.Clamp(value.width, 0, 2f);
+                m_SoftZoneHeight = Mathf.Clamp(value.height, 0, 2f);
+                m_DeadZoneWidth = Mathf.Min(m_DeadZoneWidth, m_SoftZoneWidth);
+                m_DeadZoneHeight = Mathf.Min(m_DeadZoneHeight, m_SoftZoneHeight);
+
+                Vector2 center = value.center;
+                Vector2 bias = center - new Vector2(m_ScreenX, m_ScreenY);
+                float biasWidth = Mathf.Max(0, m_SoftZoneWidth - m_DeadZoneWidth);
+                float biasHeight = Mathf.Max(0, m_SoftZoneHeight - m_DeadZoneHeight);
+                m_BiasX = biasWidth < Epsilon ? 0 : Mathf.Clamp(bias.x / biasWidth, -0.5f, 0.5f);
+                m_BiasY = biasHeight < Epsilon ? 0 : Mathf.Clamp(bias.y / biasHeight, -0.5f, 0.5f);
+            }
+        }
+        
+        // Convert from screen coords to normalized FOV angular coords
+        private Rect ScreenToFOV(Rect rScreen, float fov, float fovH, float aspect)
+        {
+            Rect r = new Rect(rScreen);
+            Matrix4x4 persp = Matrix4x4.Perspective(fov, aspect, 0.01f, 10000f).inverse;
+
+            Vector3 p = persp.MultiplyPoint(new Vector3(0, (r.yMin * 2f) - 1f, 0.1f)); p.z = -p.z;
+            float angle = UnityVectorExtensions.SignedAngle(Vector3.forward, p, Vector3.left);
+            r.yMin = ((fov / 2) + angle) / fov;
+
+            p = persp.MultiplyPoint(new Vector3(0, (r.yMax * 2f) - 1f, 0.1f)); p.z = -p.z;
+            angle = UnityVectorExtensions.SignedAngle(Vector3.forward, p, Vector3.left);
+            r.yMax = ((fov / 2) + angle) / fov;
+
+            p = persp.MultiplyPoint(new Vector3((r.xMin * 2f) - 1f, 0, 0.1f));  p.z = -p.z;
+            angle = UnityVectorExtensions.SignedAngle(Vector3.forward, p, Vector3.up);
+            r.xMin = ((fovH / 2) + angle) / fovH;
+
+            p = persp.MultiplyPoint(new Vector3((r.xMax * 2f) - 1f, 0, 0.1f));  p.z = -p.z;
+            angle = UnityVectorExtensions.SignedAngle(Vector3.forward, p, Vector3.up);
+            r.xMax = ((fovH / 2) + angle) / fovH;
+            return r;
+        }
+
+        /// <summary>
+        /// Adjust the rigOrientation to put the camera within the screen bounds.
+        /// If deltaTime >= 0 then damping will be applied.
+        /// Assumes that currentOrientation fwd is such that input rigOrientation's
+        /// local up is NEVER NEVER NEVER pointing downwards, relative to
+        /// state.ReferenceUp.  If this condition is violated
+        /// then you will see crazy spinning.  That's the symptom.
+        /// </summary>
+        private bool RotateToScreenBounds(
+            ref CameraState state, Rect screenRect,
+            ref Quaternion rigOrientation, float fov, float fovH, float deltaTime)
+        {
+            Vector3 targetDir = TrackedPoint - state.CorrectedPosition;
+            Vector2 rotToRect = rigOrientation.GetCameraRotationToTarget(targetDir, state.ReferenceUp);
+
+            // Bring it to the edge of screenRect, if outside.  Leave it alone if inside.
+            ClampVerticalBounds(ref screenRect, targetDir, state.ReferenceUp, fov);
+            float min = (screenRect.yMin - 0.5f) * fov;
+            float max = (screenRect.yMax - 0.5f) * fov;
+            if (rotToRect.x < min)
+                rotToRect.x -= min;
+            else if (rotToRect.x > max)
+                rotToRect.x -= max;
+            else
+                rotToRect.x = 0;
+
+            min = (screenRect.xMin - 0.5f) * fovH;
+            max = (screenRect.xMax - 0.5f) * fovH;
+            if (rotToRect.y < min)
+                rotToRect.y -= min;
+            else if (rotToRect.y > max)
+                rotToRect.y -= max;
+            else
+                rotToRect.y = 0;
+
+            // Apply damping
+            if (deltaTime >= 0)
+            {
+                rotToRect.x = Damper.Damp(rotToRect.x, m_VerticalDamping, deltaTime);
+                rotToRect.y = Damper.Damp(rotToRect.y, m_HorizontalDamping, deltaTime);
+            }
+
+            // Rotate
+            rigOrientation = rigOrientation.ApplyCameraRotation(rotToRect, state.ReferenceUp);
+#if false
+            // GML this gives false positives when the camera is moving.
+            // The way to address this would be to grow the hard rect by the amount 
+            // that it would be damped
+            return Mathf.Abs(rotToRect.x) > Epsilon || Mathf.Abs(rotToRect.y) > Epsilon;
+#else
+            return false; 
+#endif
+        }
+
+        /// <summary>
+        /// Prevent upside-down camera situation.  This can happen if we have a high
+        /// camera pitch combined with composer settings that cause the camera to tilt
+        /// beyond the vertical in order to produce the desired framing.  We prevent this by
+        /// clamping the composer's vertical settings so that this situation can't happen.
+        /// </summary>
+        private bool ClampVerticalBounds(ref Rect r, Vector3 dir, Vector3 up, float fov)
+        {
+            float angle = Vector3.Angle(dir, up);
+            float halfFov = (fov / 2f) + 1; // give it a little extra to accommodate precision errors
+            if (angle < halfFov)
+            {
+                // looking up
+                float maxY = 1f - (halfFov - angle) / fov;
+                if (r.yMax > maxY)
+                {
+                    r.yMin = Mathf.Min(r.yMin, maxY);
+                    r.yMax = Mathf.Min(r.yMax, maxY);
+                    return true;
+                }
+            }
+            if (angle > (180 - halfFov))
+            {
+                // looking down
+                float minY = (angle - (180 - halfFov)) / fov;
+                if (minY > r.yMin)
+                {
+                    r.yMin = Mathf.Max(r.yMin, minY);
+                    r.yMax = Mathf.Max(r.yMax, minY);
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..eaa21d19480c2634e1237b91838cb292f3f6938a
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f4044717213e31446939f7bd49c896ea
+timeCreated: 1488314898
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..32ca9b35ba946bcb5035cb58ff0c11e5b22476d9
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs
@@ -0,0 +1,497 @@
+using System;
+using Cinemachine.Utility;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a Cinemachine Component in the Body section of the component pipeline. 
+    /// Its job is to position the camera in a fixed screen-space relationship to 
+    /// the vcam's Follow target object, with offsets and damping.
+    /// 
+    /// The camera will be first moved along the camera Z axis until the Follow target
+    /// is at the desired distance from the camera's X-Y plane.  The camera will then
+    /// be moved in its XY plane until the Follow target is at the desired point on
+    /// the camera's screen.
+    /// 
+    /// The FramingTansposer will only change the camera's position in space.  It will not 
+    /// re-orient or otherwise aim the camera.
+    /// 
+    /// For this component to work properly, the vcam's LookAt target must be null.
+    /// The Follow target will define what the camera is looking at.
+    /// 
+    /// If the Follow target is a CinemachineTargetGroup, then additional controls will 
+    /// be available to dynamically adjust the camera’s view in order to frame the entire group.
+    /// 
+    /// Although this component was designed for orthographic cameras, it works equally  
+    /// well with persective cameras and can be used in 3D environments.
+    /// </summary>
+    [DocumentationSorting(5.5f, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode] // for OnGUI
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineFramingTransposer : CinemachineComponentBase
+    {
+        /// <summary>Used by the Inspector Editor to display on-screen guides.</summary>
+        [NoSaveDuringPlay, HideInInspector]
+        public Action OnGUICallback = null;
+
+        /// <summary>This setting will instruct the composer to adjust its target offset based
+        /// on the motion of the target.  The composer will look at a point where it estimates
+        /// the target will be this many seconds into the future.  Note that this setting is sensitive
+        /// to noisy animation, and can amplify the noise, resulting in undesirable camera jitter.
+        /// If the camera jitters unacceptably when the target is in motion, turn down this setting, 
+        /// or animate the target more smoothly.</summary>
+        [Tooltip("This setting will instruct the composer to adjust its target offset based on the motion of the target.  The composer will look at a point where it estimates the target will be this many seconds into the future.  Note that this setting is sensitive to noisy animation, and can amplify the noise, resulting in undesirable camera jitter.  If the camera jitters unacceptably when the target is in motion, turn down this setting, or animate the target more smoothly.")]
+        [Range(0f, 1f)]
+        public float m_LookaheadTime = 0;
+
+        /// <summary>Controls the smoothness of the lookahead algorithm.  Larger values smooth out 
+        /// jittery predictions and also increase prediction lag</summary>
+        [Tooltip("Controls the smoothness of the lookahead algorithm.  Larger values smooth out jittery predictions and also increase prediction lag")]
+        [Range(3, 30)]
+        public float m_LookaheadSmoothing = 10;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the X-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// x-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the X-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's x-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_XDamping = 1f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the Y-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// y-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the Y-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's y-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_YDamping = 1f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the Z-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the
+        /// target's z-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the Z-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's z-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_ZDamping = 1f;
+
+        /// <summary>Horizontal screen position for target. The camera will move to position the tracked object here</summary>
+        [Space]
+        [Range(0f, 1f)]
+        [Tooltip("Horizontal screen position for target. The camera will move to position the tracked object here.")]
+        public float m_ScreenX = 0.5f;
+
+        /// <summary>Vertical screen position for target, The camera will move to to position the tracked object here</summary>
+        [Range(0f, 1f)]
+        [Tooltip("Vertical screen position for target, The camera will move to position the tracked object here.")]
+        public float m_ScreenY = 0.5f;
+
+        /// <summary>The distance along the camera axis that will be maintained from the Follow target</summary>
+        [Tooltip("The distance along the camera axis that will be maintained from the Follow target")]
+        public float m_CameraDistance = 10f;
+
+        /// <summary>Camera will not move horizontally if the target is within this range of the position</summary>
+        [Space]
+        [Range(0f, 1f)]
+        [Tooltip("Camera will not move horizontally if the target is within this range of the position.")]
+        public float m_DeadZoneWidth = 0.1f;
+
+        /// <summary>Camera will not move vertically if the target is within this range of the position</summary>
+        [Range(0f, 1f)]
+        [Tooltip("Camera will not move vertically if the target is within this range of the position.")]
+        public float m_DeadZoneHeight = 0.1f;
+
+        /// <summary>The camera will not move along its z-axis if the Follow target is within this distance of the specified camera distance</summary>
+        [Tooltip("The camera will not move along its z-axis if the Follow target is within this distance of the specified camera distance")]
+        [FormerlySerializedAs("m_DistanceDeadZoneSize")]
+        public float m_DeadZoneDepth = 0;
+
+        [Space]
+        /// <summary>If checked, then then soft zone will be unlimited in size</summary>
+        [Tooltip("If checked, then then soft zone will be unlimited in size.")]
+        public bool m_UnlimitedSoftZone = false;
+
+        /// <summary>When target is within this region, camera will gradually move to re-align
+        /// towards the desired position, depending onm the damping speed</summary>
+        [Range(0f, 2f)]
+        [Tooltip("When target is within this region, camera will gradually move horizontally to re-align towards the desired position, depending on the damping speed.")]
+        public float m_SoftZoneWidth = 0.8f;
+
+        /// <summary>When target is within this region, camera will gradually move to re-align
+        /// towards the desired position, depending onm the damping speed</summary>
+        [Range(0f, 2f)]
+        [Tooltip("When target is within this region, camera will gradually move vertically to re-align towards the desired position, depending on the damping speed.")]
+        public float m_SoftZoneHeight = 0.8f;
+
+        /// <summary>A non-zero bias will move the targt position away from the center of the soft zone</summary>
+        [Range(-0.5f, 0.5f)]
+        [Tooltip("A non-zero bias will move the target position horizontally away from the center of the soft zone.")]
+        public float m_BiasX = 0f;
+
+        /// <summary>A non-zero bias will move the targt position away from the center of the soft zone</summary>
+        [Range(-0.5f, 0.5f)]
+        [Tooltip("A non-zero bias will move the target position vertically away from the center of the soft zone.")]
+        public float m_BiasY = 0f;
+
+        /// <summary>What screen dimensions to consider when framing</summary>
+        [DocumentationSorting(4.01f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum FramingMode
+        {
+            /// <summary>Consider only the horizontal dimension.  Vertical framing is ignored.</summary>
+            Horizontal,
+            /// <summary>Consider only the vertical dimension.  Horizontal framing is ignored.</summary>
+            Vertical,
+            /// <summary>The larger of the horizontal and vertical dimensions will dominate, to get the best fit.</summary>
+            HorizontalAndVertical,
+            /// <summary>Don't do any framing adjustment</summary>
+            None
+        };
+
+        /// <summary>What screen dimensions to consider when framing</summary>
+        [Space]
+        [Tooltip("What screen dimensions to consider when framing.  Can be Horizontal, Vertical, or both")]
+        [FormerlySerializedAs("m_FramingMode")]
+        public FramingMode m_GroupFramingMode = FramingMode.HorizontalAndVertical;
+
+        /// <summary>How to adjust the camera to get the desired framing</summary>
+        public enum AdjustmentMode
+        {
+            /// <summary>Do not move the camera, only adjust the FOV.</summary>
+            ZoomOnly,
+            /// <summary>Just move the camera, don't change the FOV.</summary>
+            DollyOnly,
+            /// <summary>Move the camera as much as permitted by the ranges, then
+            /// adjust the FOV if necessary to make the shot.</summary>
+            DollyThenZoom
+        };
+
+        /// <summary>How to adjust the camera to get the desired framing</summary>
+        [Tooltip("How to adjust the camera to get the desired framing.  You can zoom, dolly in/out, or do both.")]
+        public AdjustmentMode m_AdjustmentMode = AdjustmentMode.DollyThenZoom;
+
+        /// <summary>How much of the screen to fill with the bounding box of the targets.</summary>
+        [Tooltip("The bounding box of the targets should occupy this amount of the screen space.  1 means fill the whole screen.  0.5 means fill half the screen, etc.")]
+        public float m_GroupFramingSize = 0.8f;
+
+        /// <summary>How much closer to the target can the camera go?</summary>
+        [Tooltip("The maximum distance toward the target that this behaviour is allowed to move the camera.")]
+        public float m_MaxDollyIn = 5000f;
+
+        /// <summary>How much farther from the target can the camera go?</summary>
+        [Tooltip("The maximum distance away the target that this behaviour is allowed to move the camera.")]
+        public float m_MaxDollyOut = 5000f;
+
+        /// <summary>Set this to limit how close to the target the camera can get</summary>
+        [Tooltip("Set this to limit how close to the target the camera can get.")]
+        public float m_MinimumDistance = 1;
+
+        /// <summary>Set this to limit how far from the taregt the camera can get</summary>
+        [Tooltip("Set this to limit how far from the target the camera can get.")]
+        public float m_MaximumDistance = 5000f;
+
+        /// <summary>If adjusting FOV, will not set the FOV lower than this</summary>
+        [Range(1, 179)]
+        [Tooltip("If adjusting FOV, will not set the FOV lower than this.")]
+        public float m_MinimumFOV = 3;
+
+        /// <summary>If adjusting FOV, will not set the FOV higher than this</summary>
+        [Range(1, 179)]
+        [Tooltip("If adjusting FOV, will not set the FOV higher than this.")]
+        public float m_MaximumFOV = 60;
+
+        /// <summary>If adjusting Orthographic Size, will not set it lower than this</summary>
+        [Tooltip("If adjusting Orthographic Size, will not set it lower than this.")]
+        public float m_MinimumOrthoSize = 1;
+
+        /// <summary>If adjusting Orthographic Size, will not set it higher than this</summary>
+        [Tooltip("If adjusting Orthographic Size, will not set it higher than this.")]
+        public float m_MaximumOrthoSize = 100;
+
+        /// <summary>Internal API for the inspector editor</summary>
+        public Rect SoftGuideRect
+        {
+            get
+            {
+                return new Rect(
+                    m_ScreenX - m_DeadZoneWidth / 2, m_ScreenY - m_DeadZoneHeight / 2,
+                    m_DeadZoneWidth, m_DeadZoneHeight);
+            }
+            set
+            {
+                m_DeadZoneWidth = Mathf.Clamp01(value.width);
+                m_DeadZoneHeight = Mathf.Clamp01(value.height);
+                m_ScreenX = Mathf.Clamp01(value.x + m_DeadZoneWidth / 2);
+                m_ScreenY = Mathf.Clamp01(value.y + m_DeadZoneHeight / 2);
+                m_SoftZoneWidth = Mathf.Max(m_SoftZoneWidth, m_DeadZoneWidth);
+                m_SoftZoneHeight = Mathf.Max(m_SoftZoneHeight, m_DeadZoneHeight);
+            }
+        }
+
+        /// <summary>Internal API for the inspector editor</summary>
+        public Rect HardGuideRect
+        {
+            get
+            {
+                Rect r = new Rect(
+                        m_ScreenX - m_SoftZoneWidth / 2, m_ScreenY - m_SoftZoneHeight / 2,
+                        m_SoftZoneWidth, m_SoftZoneHeight);
+                r.position += new Vector2(
+                        m_BiasX * (m_SoftZoneWidth - m_DeadZoneWidth),
+                        m_BiasY * (m_SoftZoneHeight - m_DeadZoneHeight));
+                return r;
+            }
+            set
+            {
+                m_SoftZoneWidth = Mathf.Clamp(value.width, 0, 2f);
+                m_SoftZoneHeight = Mathf.Clamp(value.height, 0, 2f);
+                m_DeadZoneWidth = Mathf.Min(m_DeadZoneWidth, m_SoftZoneWidth);
+                m_DeadZoneHeight = Mathf.Min(m_DeadZoneHeight, m_SoftZoneHeight);
+
+                Vector2 center = value.center;
+                Vector2 bias = center - new Vector2(m_ScreenX, m_ScreenY);
+                float biasWidth = Mathf.Max(0, m_SoftZoneWidth - m_DeadZoneWidth);
+                float biasHeight = Mathf.Max(0, m_SoftZoneHeight - m_DeadZoneHeight);
+                m_BiasX = biasWidth < Epsilon ? 0 : Mathf.Clamp(bias.x / biasWidth, -0.5f, 0.5f);
+                m_BiasY = biasHeight < Epsilon ? 0 : Mathf.Clamp(bias.y / biasHeight, -0.5f, 0.5f);
+            }
+        }
+
+        private void OnValidate()
+        {
+            m_CameraDistance = Mathf.Max(m_CameraDistance, kMinimumCameraDistance);
+            m_DeadZoneDepth = Mathf.Max(m_DeadZoneDepth, 0);
+
+            m_GroupFramingSize = Mathf.Max(Epsilon, m_GroupFramingSize);
+            m_MaxDollyIn = Mathf.Max(0, m_MaxDollyIn);
+            m_MaxDollyOut = Mathf.Max(0, m_MaxDollyOut);
+            m_MinimumDistance = Mathf.Max(0, m_MinimumDistance);
+            m_MaximumDistance = Mathf.Max(m_MinimumDistance, m_MaximumDistance);
+            m_MinimumFOV = Mathf.Max(1, m_MinimumFOV);
+            m_MaximumFOV = Mathf.Clamp(m_MaximumFOV, m_MinimumFOV, 179);
+            m_MinimumOrthoSize = Mathf.Max(0.01f, m_MinimumOrthoSize);
+            m_MaximumOrthoSize = Mathf.Max(m_MinimumOrthoSize, m_MaximumOrthoSize);
+        }
+
+#if UNITY_EDITOR
+        private void OnGUI() { if (OnGUICallback != null) OnGUICallback(); }
+#endif
+
+        /// <summary>True if component is enabled and has a valid Follow target</summary>
+        public override bool IsValid { get { return enabled && FollowTarget != null && LookAtTarget == null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Body stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Body; } }
+
+        const float kMinimumCameraDistance = 0.01f;
+
+        /// <summary>State information for damping</summary>
+        Vector3 m_PreviousCameraPosition = Vector3.zero;
+        PositionPredictor m_Predictor = new PositionPredictor();
+
+        /// <summary>Internal API for inspector</summary>
+        public Vector3 TrackedPoint { get; private set; }
+
+        /// <summary>Positions the virtual camera according to the transposer rules.</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for damping.  If less than 0, no damping is done.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (deltaTime < 0)
+            {
+                m_Predictor.Reset();
+                m_PreviousCameraPosition = curState.RawPosition 
+                    + (curState.RawOrientation * Vector3.back) * m_CameraDistance;
+            }
+            if (!IsValid)
+                return;
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineFramingTransposer.MutateCameraState");
+            Vector3 camPosWorld = m_PreviousCameraPosition;
+            curState.ReferenceLookAt = FollowTarget.position;
+            m_Predictor.Smoothing = m_LookaheadSmoothing;
+            m_Predictor.AddPosition(curState.ReferenceLookAt);
+            TrackedPoint = (m_LookaheadTime > 0) 
+                ? m_Predictor.PredictPosition(m_LookaheadTime) : curState.ReferenceLookAt;
+
+            // Work in camera-local space
+            Quaternion localToWorld = curState.RawOrientation;
+            Quaternion worldToLocal = Quaternion.Inverse(localToWorld);
+            Vector3 cameraPos = worldToLocal * camPosWorld;
+            Vector3 targetPos = (worldToLocal * TrackedPoint) - cameraPos;
+
+            // Move along camera z
+            Vector3 cameraOffset = Vector3.zero;
+            float cameraMin = Mathf.Max(kMinimumCameraDistance, m_CameraDistance - m_DeadZoneDepth/2);
+            float cameraMax = Mathf.Max(cameraMin, m_CameraDistance + m_DeadZoneDepth/2);
+            if (targetPos.z < cameraMin)
+                cameraOffset.z = targetPos.z - cameraMin;
+            if (targetPos.z > cameraMax)
+                cameraOffset.z = targetPos.z - cameraMax;
+
+            // Adjust for group framing
+            CinemachineTargetGroup group = TargetGroup;
+            if (group != null && m_GroupFramingMode != FramingMode.None)
+                cameraOffset.z += AdjustCameraDepthAndLensForGroupFraming(
+                    group, targetPos.z - cameraOffset.z, ref curState, deltaTime);
+
+            // Move along the XY plane
+            targetPos.z -= cameraOffset.z;
+            float screenSize = curState.Lens.Orthographic 
+                ? curState.Lens.OrthographicSize 
+                : Mathf.Tan(0.5f * curState.Lens.FieldOfView * Mathf.Deg2Rad) * targetPos.z;
+            Rect softGuideOrtho = ScreenToOrtho(SoftGuideRect, screenSize, curState.Lens.Aspect);
+            if (deltaTime < 0)
+            {
+                // No damping or hard bounds, just snap to central bounds, skipping the soft zone
+                Rect rect = new Rect(softGuideOrtho.center, Vector2.zero); // Force to center
+                cameraOffset += OrthoOffsetToScreenBounds(targetPos, rect);
+            }
+            else
+            {
+                // Move it through the soft zone
+                cameraOffset += OrthoOffsetToScreenBounds(targetPos, softGuideOrtho);
+
+                // Find where it intersects the hard zone
+                Vector3 hard = Vector3.zero;
+                if (!m_UnlimitedSoftZone)
+                {
+                    Rect hardGuideOrtho = ScreenToOrtho(HardGuideRect, screenSize, curState.Lens.Aspect);
+                    hard = OrthoOffsetToScreenBounds(targetPos, hardGuideOrtho);
+                    float t = Mathf.Max(hard.x / (cameraOffset.x + Epsilon), hard.y / (cameraOffset.y + Epsilon));
+                    hard = cameraOffset * t;
+                }
+                // Apply damping, but only to the portion of the move that's inside the hard zone
+                cameraOffset = hard + Damper.Damp(
+                    cameraOffset - hard, new Vector3(m_XDamping, m_YDamping, m_ZDamping), deltaTime);
+            }
+            curState.RawPosition = m_PreviousCameraPosition = localToWorld * (cameraPos + cameraOffset);
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        // Convert from screen coords to normalized orthographic distance coords
+        private Rect ScreenToOrtho(Rect rScreen, float orthoSize, float aspect)
+        {
+            Rect r = new Rect();
+            r.yMax = 2 * orthoSize * ((1f-rScreen.yMin) - 0.5f);
+            r.yMin = 2 * orthoSize * ((1f-rScreen.yMax) - 0.5f);
+            r.xMin = 2 * orthoSize * aspect * (rScreen.xMin - 0.5f);
+            r.xMax = 2 * orthoSize * aspect * (rScreen.xMax - 0.5f);
+            return r;
+        }
+
+        private Vector3 OrthoOffsetToScreenBounds(Vector3 targetPos2D, Rect screenRect)
+        {
+            // Bring it to the edge of screenRect, if outside.  Leave it alone if inside.
+            Vector3 delta = Vector3.zero;
+            if (targetPos2D.x < screenRect.xMin)
+                delta.x += targetPos2D.x - screenRect.xMin;
+            if (targetPos2D.x > screenRect.xMax)
+                delta.x += targetPos2D.x - screenRect.xMax;
+            if (targetPos2D.y < screenRect.yMin)
+                delta.y += targetPos2D.y - screenRect.yMin;
+            if (targetPos2D.y > screenRect.yMax)
+                delta.y += targetPos2D.y - screenRect.yMax;
+            return delta;
+        }
+
+        float m_prevTargetHeight; // State for frame damping
+
+        /// <summary>For editor visulaization of the calculated bounding box of the group</summary>
+        public Bounds m_LastBounds { get; private set; }
+
+        /// <summary>For editor visualization of the calculated bounding box of the group</summary>
+        public Matrix4x4 m_lastBoundsMatrix { get; private set; }
+
+        /// <summary>Get Follow target as CinemachineTargetGroup, or null if target is not a group</summary>
+        public CinemachineTargetGroup TargetGroup 
+        { 
+            get
+            {
+                Transform follow = FollowTarget;
+                if (follow != null)
+                    return follow.GetComponent<CinemachineTargetGroup>();
+                return null;
+            }
+        }
+
+        float AdjustCameraDepthAndLensForGroupFraming(
+            CinemachineTargetGroup group, float targetZ, 
+            ref CameraState curState, float deltaTime)
+        {
+            float cameraOffset = 0;
+
+            // Get the bounding box from that POV in view space, and find its height
+            Bounds bounds = group.BoundingBox;
+            Vector3 fwd = curState.RawOrientation * Vector3.forward;
+            m_lastBoundsMatrix = Matrix4x4.TRS(
+                    bounds.center - (fwd * bounds.extents.magnitude),
+                    curState.RawOrientation, Vector3.one);
+            m_LastBounds = group.GetViewSpaceBoundingBox(m_lastBoundsMatrix);
+            float targetHeight = GetTargetHeight(m_LastBounds);
+
+            // Apply damping
+            if (deltaTime >= 0)
+            {
+                float delta = targetHeight - m_prevTargetHeight;
+                delta = Damper.Damp(delta, m_ZDamping, deltaTime);
+                targetHeight = m_prevTargetHeight + delta;
+            }
+            m_prevTargetHeight = targetHeight;
+
+            // Move the camera
+            if (!curState.Lens.Orthographic && m_AdjustmentMode != AdjustmentMode.ZoomOnly)
+            {
+                // What distance would be needed to get the target height, at the current FOV
+                float desiredDistance 
+                    = targetHeight / (2f * Mathf.Tan(curState.Lens.FieldOfView * Mathf.Deg2Rad / 2f));
+
+                // target the near surface of the bounding box
+                desiredDistance += m_LastBounds.extents.z;
+
+                // Clamp to respect min/max distance settings
+                desiredDistance = Mathf.Clamp(
+                        desiredDistance, targetZ - m_MaxDollyIn, targetZ + m_MaxDollyOut);
+                desiredDistance = Mathf.Clamp(desiredDistance, m_MinimumDistance, m_MaximumDistance);
+
+                // Apply
+                cameraOffset += desiredDistance - targetZ;
+            }
+
+            // Apply zoom
+            if (curState.Lens.Orthographic || m_AdjustmentMode != AdjustmentMode.DollyOnly)
+            {
+                float nearBoundsDistance = (targetZ + cameraOffset) - m_LastBounds.extents.z;
+                float currentFOV = 179;
+                if (nearBoundsDistance > Epsilon)
+                    currentFOV = 2f * Mathf.Atan(targetHeight / (2 * nearBoundsDistance)) * Mathf.Rad2Deg;
+
+                LensSettings lens = curState.Lens;
+                lens.FieldOfView = Mathf.Clamp(currentFOV, m_MinimumFOV, m_MaximumFOV);
+                lens.OrthographicSize = Mathf.Clamp(targetHeight / 2, m_MinimumOrthoSize, m_MaximumOrthoSize);
+                curState.Lens = lens;
+            }
+            return -cameraOffset;
+        }
+
+        float GetTargetHeight(Bounds b)
+        {
+            float framingSize = Mathf.Max(Epsilon, m_GroupFramingSize);
+            switch (m_GroupFramingMode)
+            {
+                case FramingMode.Horizontal:
+                    return b.size.x / (framingSize * VcamState.Lens.Aspect);
+                case FramingMode.Vertical:
+                    return b.size.y / framingSize;
+                default:
+                case FramingMode.HorizontalAndVertical:
+                    return Mathf.Max(
+                        b.size.x / (framingSize * VcamState.Lens.Aspect), 
+                        b.size.y / framingSize);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c3713e2aae5f1e0ecedc84d5612687f90d9b5b93
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6ad980451443d70438faac0bc6c235a0
+timeCreated: 1502038595
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fc59a4a554e314997ce704723ad399c0b5c046ff
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs
@@ -0,0 +1,237 @@
+using UnityEngine;
+using Cinemachine.Utility;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to aim the camera at a target object, with configurable offsets, damping, 
+    /// and composition rules.
+    /// 
+    /// In addition, if the target is a CinemachineTargetGroup, the behaviour
+    /// will adjust the FOV and the camera distance to ensure that the entire group of targets
+    /// is framed properly.
+    /// </summary>
+    [DocumentationSorting(4, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode] // for OnGUI
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineGroupComposer : CinemachineComposer
+    {
+        /// <summary>How much of the screen to fill with the bounding box of the targets.</summary>
+        [Space]
+        [Tooltip("The bounding box of the targets should occupy this amount of the screen space.  1 means fill the whole screen.  0.5 means fill half the screen, etc.")]
+        public float m_GroupFramingSize = 0.8f;
+
+        /// <summary>What screen dimensions to consider when framing</summary>
+        [DocumentationSorting(4.01f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum FramingMode
+        {
+            /// <summary>Consider only the horizontal dimension.  Vertical framing is ignored.</summary>
+            Horizontal,
+            /// <summary>Consider only the vertical dimension.  Horizontal framing is ignored.</summary>
+            Vertical,
+            /// <summary>The larger of the horizontal and vertical dimensions will dominate, to get the best fit.</summary>
+            HorizontalAndVertical
+        };
+
+        /// <summary>What screen dimensions to consider when framing</summary>
+        [Tooltip("What screen dimensions to consider when framing.  Can be Horizontal, Vertical, or both")]
+        public FramingMode m_FramingMode = FramingMode.HorizontalAndVertical;
+
+        /// <summary>How aggressively the camera tries to frame the group.
+        /// Small numbers are more responsive</summary>
+        [Range(0, 20)]
+        [Tooltip("How aggressively the camera tries to frame the group. Small numbers are more responsive, rapidly adjusting the camera to keep the group in the frame.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_FrameDamping = 2f;
+
+        /// <summary>How to adjust the camera to get the desired framing</summary>
+        public enum AdjustmentMode
+        {
+            /// <summary>Do not move the camera, only adjust the FOV.</summary>
+            ZoomOnly,
+            /// <summary>Just move the camera, don't change the FOV.</summary>
+            DollyOnly,
+            /// <summary>Move the camera as much as permitted by the ranges, then
+            /// adjust the FOV if necessary to make the shot.</summary>
+            DollyThenZoom
+        };
+
+        /// <summary>How to adjust the camera to get the desired framing</summary>
+        [Tooltip("How to adjust the camera to get the desired framing.  You can zoom, dolly in/out, or do both.")]
+        public AdjustmentMode m_AdjustmentMode = AdjustmentMode.DollyThenZoom;
+
+        /// <summary>How much closer to the target can the camera go?</summary>
+        [Tooltip("The maximum distance toward the target that this behaviour is allowed to move the camera.")]
+        public float m_MaxDollyIn = 5000f;
+
+        /// <summary>How much farther from the target can the camera go?</summary>
+        [Tooltip("The maximum distance away the target that this behaviour is allowed to move the camera.")]
+        public float m_MaxDollyOut = 5000f;
+
+        /// <summary>Set this to limit how close to the target the camera can get</summary>
+        [Tooltip("Set this to limit how close to the target the camera can get.")]
+        public float m_MinimumDistance = 1;
+
+        /// <summary>Set this to limit how far from the taregt the camera can get</summary>
+        [Tooltip("Set this to limit how far from the target the camera can get.")]
+        public float m_MaximumDistance = 5000f;
+
+        /// <summary>If adjusting FOV, will not set the FOV lower than this</summary>
+        [Range(1, 179)]
+        [Tooltip("If adjusting FOV, will not set the FOV lower than this.")]
+        public float m_MinimumFOV = 3;
+
+        /// <summary>If adjusting FOV, will not set the FOV higher than this</summary>
+        [Range(1, 179)]
+        [Tooltip("If adjusting FOV, will not set the FOV higher than this.")]
+        public float m_MaximumFOV = 60;
+
+        /// <summary>If adjusting Orthographic Size, will not set it lower than this</summary>
+        [Tooltip("If adjusting Orthographic Size, will not set it lower than this.")]
+        public float m_MinimumOrthoSize = 1;
+
+        /// <summary>If adjusting Orthographic Size, will not set it higher than this</summary>
+        [Tooltip("If adjusting Orthographic Size, will not set it higher than this.")]
+        public float m_MaximumOrthoSize = 100;
+
+        private void OnValidate()
+        {
+            m_GroupFramingSize = Mathf.Max(Epsilon, m_GroupFramingSize);
+            m_MaxDollyIn = Mathf.Max(0, m_MaxDollyIn);
+            m_MaxDollyOut = Mathf.Max(0, m_MaxDollyOut);
+            m_MinimumDistance = Mathf.Max(0, m_MinimumDistance);
+            m_MaximumDistance = Mathf.Max(m_MinimumDistance, m_MaximumDistance);
+            m_MinimumFOV = Mathf.Max(1, m_MinimumFOV);
+            m_MaximumFOV = Mathf.Clamp(m_MaximumFOV, m_MinimumFOV, 179);
+            m_MinimumOrthoSize = Mathf.Max(0.01f, m_MinimumOrthoSize);
+            m_MaximumOrthoSize = Mathf.Max(m_MinimumOrthoSize, m_MaximumOrthoSize);
+        }
+
+        /// <summary>Get LookAt target as CinemachineTargetGroup, or null if target is not a group</summary>
+        public CinemachineTargetGroup TargetGroup 
+        { 
+            get
+            {
+                Transform lookAt = LookAtTarget;
+                if (lookAt != null)
+                    return lookAt.GetComponent<CinemachineTargetGroup>();
+                return null;
+            }
+        }
+        
+        /// <summary>Applies the composer rules and orients the camera accordingly</summary>
+        /// <param name="state">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  If less than
+        /// zero, then target will snap to the center of the dead zone.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            // Can't do anything without a group to look at
+            CinemachineTargetGroup group = TargetGroup;
+            if (group == null)
+            {
+                base.MutateCameraState(ref curState, deltaTime);
+                return;
+            }
+
+            if (!IsValid || !curState.HasLookAt)
+            {
+                m_prevTargetHeight = 0;
+                return;
+            }
+
+            curState.ReferenceLookAt = GetLookAtPointAndSetTrackedPoint(group.transform.position);
+            Vector3 currentOffset = TrackedPoint - curState.RawPosition;
+            float currentDistance = currentOffset.magnitude;
+            if (currentDistance < Epsilon)
+                return;  // navel-gazing, get outa here
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineGroupComposer.MutateCameraState");
+
+            // Get the camera axis
+            Vector3 fwd = currentOffset.AlmostZero() ? Vector3.forward : currentOffset.normalized;
+
+            // Get the bounding box from that POV in view space, and find its width
+            Bounds bounds = group.BoundingBox;
+            m_lastBoundsMatrix = Matrix4x4.TRS(
+                    bounds.center - (fwd * bounds.extents.magnitude),
+                    Quaternion.LookRotation(fwd, curState.ReferenceUp), Vector3.one);
+            m_LastBounds = group.GetViewSpaceBoundingBox(m_lastBoundsMatrix);
+            float targetHeight = GetTargetHeight(m_LastBounds);
+            Vector3 targetPos = m_lastBoundsMatrix.MultiplyPoint3x4(m_LastBounds.center);
+
+            // Apply damping
+            if (deltaTime >= 0)
+            {
+                float delta = targetHeight - m_prevTargetHeight;
+                delta = Damper.Damp(delta, m_FrameDamping, deltaTime);
+                targetHeight = m_prevTargetHeight + delta;
+            }
+            m_prevTargetHeight = targetHeight;
+
+            // Move the camera
+            if (!curState.Lens.Orthographic && m_AdjustmentMode != AdjustmentMode.ZoomOnly)
+            {
+                // What distance would be needed to get the target height, at the current FOV
+                float currentFOV = curState.Lens.FieldOfView;
+                float targetDistance = targetHeight / (2f * Mathf.Tan(currentFOV * Mathf.Deg2Rad / 2f));
+
+                // target the near surface of the bounding box
+                float cameraDistance = targetDistance + m_LastBounds.extents.z;
+
+                // Clamp to respect min/max distance settings
+                cameraDistance = Mathf.Clamp(
+                        cameraDistance, currentDistance - m_MaxDollyIn, currentDistance + m_MaxDollyOut);
+                cameraDistance = Mathf.Clamp(cameraDistance, m_MinimumDistance, m_MaximumDistance);
+
+                // Apply
+                curState.PositionCorrection += targetPos - fwd * cameraDistance - curState.RawPosition;
+            }
+
+            // Apply zoom
+            if (curState.Lens.Orthographic || m_AdjustmentMode != AdjustmentMode.DollyOnly)
+            {
+                float nearBoundsDistance = (TrackedPoint - curState.CorrectedPosition).magnitude
+                    - m_LastBounds.extents.z;
+                float currentFOV = 179;
+                if (nearBoundsDistance > Epsilon)
+                    currentFOV = 2f * Mathf.Atan(targetHeight / (2 * nearBoundsDistance)) * Mathf.Rad2Deg;
+
+                LensSettings lens = curState.Lens;
+                lens.FieldOfView = Mathf.Clamp(currentFOV, m_MinimumFOV, m_MaximumFOV);
+                lens.OrthographicSize = Mathf.Clamp(targetHeight / 2, m_MinimumOrthoSize, m_MaximumOrthoSize);
+                curState.Lens = lens;
+            }
+
+            // Now compose normally
+            base.MutateCameraState(ref curState, deltaTime);
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        float m_prevTargetHeight; // State for damping
+
+        /// <summary>For editor visulaization of the calculated bounding box of the group</summary>
+        public Bounds m_LastBounds { get; private set; }
+
+        /// <summary>For editor visualization of the calculated bounding box of the group</summary>
+        public Matrix4x4 m_lastBoundsMatrix { get; private set; }
+
+        float GetTargetHeight(Bounds b)
+        {
+            float framingSize = Mathf.Max(Epsilon, m_GroupFramingSize);
+            switch (m_FramingMode)
+            {
+                case FramingMode.Horizontal:
+                    return Mathf.Max(Epsilon, b.size.x )/ (framingSize * VcamState.Lens.Aspect);
+                case FramingMode.Vertical:
+                    return Mathf.Max(Epsilon, b.size.y) / framingSize;
+                default:
+                case FramingMode.HorizontalAndVertical:
+                    return Mathf.Max(
+                        Mathf.Max(Epsilon, b.size.x) / (framingSize * VcamState.Lens.Aspect), 
+                        Mathf.Max(Epsilon, b.size.y) / framingSize);
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f7bb48423423b4fa5d8371e969e001e9591ce56d
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 0f7633c93f0364a418841eeb8b058634
+timeCreated: 1496696780
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e53ed3264b1004f2391d26b35b4a0d0062eda4fa
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to place the camera on the Follow Target.
+    /// </summary>
+    [DocumentationSorting(23, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineHardLockToTarget : CinemachineComponentBase
+    {
+        /// <summary>True if component is enabled and has a LookAt defined</summary>
+        public override bool IsValid { get { return enabled && FollowTarget != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Aim stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Body; } }
+
+        /// <summary>Applies the composer rules and orients the camera accordingly</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  If less than
+        /// zero, then target will snap to the center of the dead zone.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (IsValid)
+                curState.RawPosition = FollowTarget.position;
+        }
+    }
+}
+
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..da28d51be43bd7172001fe45c0866bcb0ce013cb
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 36d1163fa822e8b418a0a603ec078d5c
+timeCreated: 1506531396
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dfb3855f67bbf53a33f9b89cda0a29aa64450c97
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs
@@ -0,0 +1,42 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to aim the camera hard at the LookAt target.
+    /// </summary>
+    [DocumentationSorting(23, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineHardLookAt : CinemachineComponentBase
+    {
+        /// <summary>True if component is enabled and has a LookAt defined</summary>
+        public override bool IsValid { get { return enabled && LookAtTarget != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Aim stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Aim; } }
+
+        /// <summary>Applies the composer rules and orients the camera accordingly</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  If less than
+        /// zero, then target will snap to the center of the dead zone.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (IsValid && curState.HasLookAt)
+            {
+                Vector3 dir = (curState.ReferenceLookAt - curState.CorrectedPosition);
+                if (dir.magnitude > Epsilon)
+                {
+                    if (Vector3.Cross(dir.normalized, curState.ReferenceUp).magnitude < Epsilon)
+                        curState.RawOrientation = Quaternion.FromToRotation(Vector3.forward, dir);
+                    else
+                        curState.RawOrientation = Quaternion.LookRotation(dir, curState.ReferenceUp);
+                }
+            }
+        }
+    }
+}
+
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..63308547a5614d87e0616e978387917d63fb7a62
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1e8b78ac948f05a46a6d8339a503172b
+timeCreated: 1506531396
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b0363d4b55db02bd704eb3ccf31908ed52e6d4a7
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs
@@ -0,0 +1,530 @@
+using System;
+using UnityEngine;
+using Cinemachine.Utility;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the the Body section of the component pipeline. 
+    /// Its job is to position the camera in a variable relationship to a the vcam's 
+    /// Follow target object, with offsets and damping.
+    /// 
+    /// This component is typically used to implement a camera that follows its target.
+    /// It can accept player input from an input device, which allows the player to 
+    /// dynamically control the relationship between the camera and the target, 
+    /// for example with a joystick.
+    /// 
+    /// The OrbitalTransposer introduces the concept of __Heading__, which is the direction
+    /// in which the target is moving, and the OrbitalTransposer will attempt to position 
+    /// the camera in relationship to the heading, which is by default directly behind the target.
+    /// You can control the default relationship by adjusting the Heading Bias setting.
+    /// 
+    /// If you attach an input controller to the OrbitalTransposer, then the player can also
+    /// control the way the camera positions itself in relation to the target heading.  This allows
+    /// the camera to move to any spot on an orbit around the target.
+    /// </summary>
+    [DocumentationSorting(6, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineOrbitalTransposer : CinemachineTransposer
+    {
+        /// <summary>
+        /// How the "forward" direction is defined.  Orbital offset is in relation to the forward
+        /// direction.
+        /// </summary>
+        [DocumentationSorting(6.2f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct Heading
+        {
+            /// <summary>
+            /// Sets the algorithm for determining the target's heading for purposes
+            /// of re-centering the camera
+            /// </summary>
+            [DocumentationSorting(6.21f, DocumentationSortingAttribute.Level.UserRef)]
+            public enum HeadingDefinition
+            {
+                /// <summary>
+                /// Target heading calculated from the difference between its position on
+                /// the last update and current frame.
+                /// </summary>
+                PositionDelta,
+                /// <summary>
+                /// Target heading calculated from its <b>Rigidbody</b>'s velocity.
+                /// If no <b>Rigidbody</b> exists, it will fall back
+                /// to HeadingDerivationMode.PositionDelta
+                /// </summary>
+                Velocity,
+                /// <summary>
+                /// Target heading calculated from the Target <b>Transform</b>'s euler Y angle
+                /// </summary>
+                TargetForward,
+                /// <summary>
+                /// Default heading is a constant world space heading.
+                /// </summary>
+                WorldForward,
+            }
+            /// <summary>The method by which the 'default heading' is calculated if
+            /// recentering to target heading is enabled</summary>
+            [Tooltip("How 'forward' is defined.  The camera will be placed by default behind the target.  PositionDelta will consider 'forward' to be the direction in which the target is moving.")]
+            public HeadingDefinition m_HeadingDefinition;
+
+            /// <summary>Size of the velocity sampling window for target heading filter.
+            /// Used only if deriving heading from target's movement</summary>
+            [Range(0, 10)]
+            [Tooltip("Size of the velocity sampling window for target heading filter.  This filters out irregularities in the target's movement.  Used only if deriving heading from target's movement (PositionDelta or Velocity)")]
+            public int m_VelocityFilterStrength;
+
+            /// <summary>Additional Y rotation applied to the target heading.
+            /// When this value is 0, the camera will be placed behind the target</summary>
+            [Range(-180f, 180f)]
+            [Tooltip("Where the camera is placed when the X-axis value is zero.  This is a rotation in degrees around the Y axis.  When this value is 0, the camera will be placed behind the target.  Nonzero offsets will rotate the zero position around the target.")]
+            public float m_HeadingBias;
+
+            /// <summary>Constructor</summary>
+            public Heading(HeadingDefinition def, int filterStrength, float bias)
+            {
+                m_HeadingDefinition = def;
+                m_VelocityFilterStrength = filterStrength;
+                m_HeadingBias = bias;
+            }
+        };
+
+        /// <summary>The definition of Forward.  Camera will follow behind.</summary>
+        [Space]
+        [Tooltip("The definition of Forward.  Camera will follow behind.")]
+        public Heading m_Heading = new Heading(Heading.HeadingDefinition.TargetForward, 4, 0);
+
+        /// <summary>Controls how automatic orbit recentering occurs</summary>
+        [DocumentationSorting(6.5f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct Recentering
+        {
+            /// <summary>If checked, will enable automatic recentering of the
+            /// camera based on the heading calculation mode. If FALSE, recenting is disabled.</summary>
+            [Tooltip("If checked, will enable automatic recentering of the camera based on the heading definition. If unchecked, recenting is disabled.")]
+            public bool m_enabled;
+
+            /// <summary>If no input has been detected, the camera will wait
+            /// this long in seconds before moving its heading to the default heading.</summary>
+            [Tooltip("If no input has been detected, the camera will wait this long in seconds before moving its heading to the zero position.")]
+            public float m_RecenterWaitTime;
+
+            /// <summary>Maximum angular speed of recentering.  Will accelerate into and decelerate out of this</summary>
+            [Tooltip("Maximum angular speed of recentering.  Will accelerate into and decelerate out of this.")]
+            public float m_RecenteringTime;
+
+            /// <summary>Constructor with specific field values</summary>
+            public Recentering(bool enabled, float recenterWaitTime,  float recenteringSpeed)
+            {
+                m_enabled = enabled;
+                m_RecenterWaitTime = recenterWaitTime;
+                m_RecenteringTime = recenteringSpeed;
+                m_LegacyHeadingDefinition = m_LegacyVelocityFilterStrength = -1;
+            }
+
+            /// <summary>Call this from OnValidate()</summary>
+            public void Validate()
+            {
+                m_RecenterWaitTime = Mathf.Max(0, m_RecenterWaitTime);
+                m_RecenteringTime = Mathf.Max(0, m_RecenteringTime);
+            }
+
+            // Legacy support
+            [SerializeField] [HideInInspector] [FormerlySerializedAs("m_HeadingDefinition")] private int m_LegacyHeadingDefinition;
+            [SerializeField] [HideInInspector] [FormerlySerializedAs("m_VelocityFilterStrength")] private int m_LegacyVelocityFilterStrength;
+            internal bool LegacyUpgrade(ref Heading.HeadingDefinition heading, ref int velocityFilter)
+            {
+                if (m_LegacyHeadingDefinition != -1 && m_LegacyVelocityFilterStrength != -1)
+                {
+                    heading = (Heading.HeadingDefinition)m_LegacyHeadingDefinition;
+                    velocityFilter = m_LegacyVelocityFilterStrength;
+                    m_LegacyHeadingDefinition = m_LegacyVelocityFilterStrength = -1;
+                    return true;
+                }
+                return false;
+            }
+        };
+
+        /// <summary>Parameters that control Automating Heading Recentering</summary>
+        [Tooltip("Automatic heading recentering.  The settings here defines how the camera will reposition itself in the absence of player input.")]
+        public Recentering m_RecenterToTargetHeading = new Recentering(true, 1, 2);
+
+        /// <summary>Axis representing the current heading.  Value is in degrees
+        /// and represents a rotation about the up vector</summary>
+        [Tooltip("Heading Control.  The settings here control the behaviour of the camera in response to the player's input.")]
+        public AxisState m_XAxis = new AxisState(300f, 2f, 1f, 0f, "Mouse X", true);
+
+        // Legacy support
+        [SerializeField] [HideInInspector] [FormerlySerializedAs("m_Radius")] private float m_LegacyRadius = float.MaxValue;
+        [SerializeField] [HideInInspector] [FormerlySerializedAs("m_HeightOffset")] private float m_LegacyHeightOffset = float.MaxValue;
+        [SerializeField] [HideInInspector] [FormerlySerializedAs("m_HeadingBias")] private float m_LegacyHeadingBias = float.MaxValue;
+        protected override void OnValidate()
+        {
+            // Upgrade after a legacy deserialize
+            if (m_LegacyRadius != float.MaxValue 
+                && m_LegacyHeightOffset != float.MaxValue
+                && m_LegacyHeadingBias != float.MaxValue)
+            {
+                m_FollowOffset = new Vector3(0, m_LegacyHeightOffset, -m_LegacyRadius);
+                m_LegacyHeightOffset = m_LegacyRadius = float.MaxValue;
+
+                m_Heading.m_HeadingBias = m_LegacyHeadingBias;
+                m_XAxis.m_MaxSpeed /= 10;
+                m_XAxis.m_AccelTime /= 10;
+                m_XAxis.m_DecelTime /= 10;
+                m_LegacyHeadingBias = float.MaxValue;
+                m_RecenterToTargetHeading.LegacyUpgrade(
+                    ref m_Heading.m_HeadingDefinition, ref m_Heading.m_VelocityFilterStrength);
+            }
+            m_XAxis.Validate();
+            m_RecenterToTargetHeading.Validate();
+
+            base.OnValidate();
+        }
+
+        /// <summary>
+        /// Drive the x-axis setting programmatically.
+        /// Automatic heading updating will be disabled.
+        /// </summary>
+        [HideInInspector, NoSaveDuringPlay]
+        public bool m_HeadingIsSlave = false;
+
+        /// <summary>
+        /// Delegate that allows the the m_XAxis object to be replaced with another one.
+        /// </summary>
+        internal delegate float UpdateHeadingDelegate(
+            CinemachineOrbitalTransposer orbital, float deltaTime, Vector3 up);
+
+        /// <summary>
+        /// Delegate that allows the the XAxis object to be replaced with another one.
+        /// To use it, just call orbital.UpdateHeading() with a reference to a 
+        /// private AxisState object, and that AxisState object will be updated and
+        /// used to calculate the heading.
+        /// </summary>
+        internal UpdateHeadingDelegate HeadingUpdater 
+            = (CinemachineOrbitalTransposer orbital, float deltaTime, Vector3 up) 
+                => { return orbital.UpdateHeading(deltaTime, up, ref orbital.m_XAxis); };
+
+        /// <summary>
+        /// Update the X axis and calculate the heading.  This can be called by a delegate
+        /// with a custom axis.
+        /// <param name="deltaTime">Used for damping.  If less than 0, no damping is done.</param>
+        /// <param name="up">World Up, set by the CinemachineBrain</param>
+        /// <param name="axis"></param>
+        /// <returns>Axis value</returns>
+        /// </summary>
+        public float UpdateHeading(float deltaTime, Vector3 up, ref AxisState axis)
+        {
+            // Only read joystick when game is playing
+            if (deltaTime >= 0 || CinemachineCore.Instance.IsLive(VirtualCamera))
+            {
+                bool xAxisInput = false;
+                xAxisInput |= axis.Update(deltaTime);
+                if (xAxisInput)
+                {
+                    mLastHeadingAxisInputTime = Time.time;
+                    mHeadingRecenteringVelocity = 0;
+                }
+            }
+            float targetHeading = GetTargetHeading(axis.Value, GetReferenceOrientation(up), deltaTime);
+            if (deltaTime < 0)
+            {
+                mHeadingRecenteringVelocity = 0;
+                if (m_RecenterToTargetHeading.m_enabled)
+                    axis.Value = targetHeading;
+            }
+            else
+            {
+                // Recentering
+                if (m_BindingMode != BindingMode.SimpleFollowWithWorldUp
+                    && m_RecenterToTargetHeading.m_enabled
+                    && (Time.time > (mLastHeadingAxisInputTime + m_RecenterToTargetHeading.m_RecenterWaitTime)))
+                {
+                    // Scale value determined heuristically, to account for accel/decel
+                    float recenterTime = m_RecenterToTargetHeading.m_RecenteringTime / 3f;
+                    if (recenterTime <= deltaTime)
+                        axis.Value = targetHeading;
+                    else
+                    {
+                        float headingError = Mathf.DeltaAngle(axis.Value, targetHeading);
+                        float absHeadingError = Mathf.Abs(headingError);
+                        if (absHeadingError < UnityVectorExtensions.Epsilon)
+                        {
+                            axis.Value = targetHeading;
+                            mHeadingRecenteringVelocity = 0;
+                        }
+                        else 
+                        {
+                            float scale = deltaTime / recenterTime;
+                            float desiredVelocity = Mathf.Sign(headingError)
+                                * Mathf.Min(absHeadingError, absHeadingError * scale);
+                            // Accelerate to the desired velocity
+                            float accel = desiredVelocity - mHeadingRecenteringVelocity;
+                            if ((desiredVelocity < 0 && accel < 0) || (desiredVelocity > 0 && accel > 0))
+                                desiredVelocity = mHeadingRecenteringVelocity + desiredVelocity * scale;
+                            axis.Value += desiredVelocity;
+                            mHeadingRecenteringVelocity = desiredVelocity;
+                        }
+                    }
+                }
+            }
+            float finalHeading = axis.Value;
+            if (m_BindingMode == BindingMode.SimpleFollowWithWorldUp)
+                axis.Value = 0;
+            return finalHeading;
+        }
+
+        private void OnEnable()
+        {
+            m_XAxis.SetThresholds(0f, 360f, true);
+            PreviousTarget = null;
+            mLastTargetPosition = Vector3.zero;
+        }
+
+        private float mLastHeadingAxisInputTime = 0f;
+        private float mHeadingRecenteringVelocity = 0f;
+        private Vector3 mLastTargetPosition = Vector3.zero;
+        private HeadingTracker mHeadingTracker;
+        private Rigidbody mTargetRigidBody = null;
+        private Transform PreviousTarget { get; set; }
+        private Quaternion mHeadingPrevFrame = Quaternion.identity;
+        private Vector3 mOffsetPrevFrame = Vector3.zero;
+
+        /// <summary>Positions the virtual camera according to the transposer rules.</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for damping.  If less than 0, no damping is done.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineOrbitalTransposer.MutateCameraState");
+            InitPrevFrameStateInfo(ref curState, deltaTime);
+
+            // Update the heading
+            if (FollowTarget != PreviousTarget)
+            {
+                PreviousTarget = FollowTarget;
+                mTargetRigidBody = (PreviousTarget == null) ? null : PreviousTarget.GetComponent<Rigidbody>();
+                mLastTargetPosition = (PreviousTarget == null) ? Vector3.zero : PreviousTarget.position;
+                mHeadingTracker = null;
+            }
+            float heading = HeadingUpdater(this, deltaTime, curState.ReferenceUp);
+
+            if (IsValid)
+            {
+                mLastTargetPosition = FollowTarget.position;
+
+                // Calculate the heading
+                if (m_BindingMode != BindingMode.SimpleFollowWithWorldUp)
+                    heading += m_Heading.m_HeadingBias;
+                Quaternion headingRot = Quaternion.AngleAxis(heading, curState.ReferenceUp);
+
+                // Track the target, with damping
+                Vector3 offset = EffectiveOffset;
+                Vector3 pos;
+                Quaternion orient;
+                TrackTarget(deltaTime, curState.ReferenceUp, headingRot * offset, out pos, out orient);
+
+                // Place the camera
+                curState.ReferenceUp = orient * Vector3.up;
+                if (deltaTime >= 0)
+                {
+                    Vector3 bypass = (headingRot * offset) - mHeadingPrevFrame * mOffsetPrevFrame;
+                    bypass = orient * bypass;
+                    curState.PositionDampingBypass = bypass;
+                }
+                orient = orient * headingRot;
+                curState.RawPosition = pos + orient * offset;
+
+                mHeadingPrevFrame = (m_BindingMode == BindingMode.SimpleFollowWithWorldUp) ? Quaternion.identity : headingRot;
+                mOffsetPrevFrame = offset;
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>API for the editor, to process a position drag from the user.
+        /// This implementation adds the delta to the follow offset, after zeroing out local x.</summary>
+        /// <param name="delta">The amount dragged this frame</param>
+        public override void OnPositionDragged(Vector3 delta)
+        {
+            Quaternion targetOrientation = GetReferenceOrientation(VcamState.ReferenceUp);
+            Vector3 localOffset = Quaternion.Inverse(targetOrientation) * delta;
+            localOffset.x = 0;
+            m_FollowOffset += localOffset;
+            m_FollowOffset = EffectiveOffset;
+        }
+        
+        static string GetFullName(GameObject current)
+        {
+            if (current == null)
+                return "";
+            if (current.transform.parent == null)
+                return "/" + current.name;
+            return GetFullName(current.transform.parent.gameObject) + "/" + current.name;
+        }
+
+        // Make sure this is calld only once per frame
+        private float GetTargetHeading(
+            float currentHeading, Quaternion targetOrientation, float deltaTime)
+        {
+            if (m_BindingMode == BindingMode.SimpleFollowWithWorldUp)
+                return 0;
+            if (FollowTarget == null)
+                return currentHeading;
+
+            if (m_Heading.m_HeadingDefinition == Heading.HeadingDefinition.Velocity
+                && mTargetRigidBody == null)
+            {
+                Debug.Log(string.Format(
+                        "Attempted to use HeadingDerivationMode.Velocity to calculate heading for {0}. No RigidBody was present on '{1}'. Defaulting to position delta",
+                        GetFullName(VirtualCamera.VirtualCameraGameObject), FollowTarget));
+                m_Heading.m_HeadingDefinition = Heading.HeadingDefinition.PositionDelta;
+            }
+
+            Vector3 velocity = Vector3.zero;
+            switch (m_Heading.m_HeadingDefinition)
+            {
+                case Heading.HeadingDefinition.PositionDelta:
+                    velocity = FollowTarget.position - mLastTargetPosition;
+                    break;
+                case Heading.HeadingDefinition.Velocity:
+                    velocity = mTargetRigidBody.velocity;
+                    break;
+                case Heading.HeadingDefinition.TargetForward:
+                    velocity = FollowTarget.forward;
+                    break;
+                default:
+                case Heading.HeadingDefinition.WorldForward:
+                    return 0;
+            }
+
+            // Process the velocity and derive the heading from it.
+            int filterSize = m_Heading.m_VelocityFilterStrength * 5;
+            if (mHeadingTracker == null || mHeadingTracker.FilterSize != filterSize)
+                mHeadingTracker = new HeadingTracker(filterSize);
+            mHeadingTracker.DecayHistory();
+            Vector3 up = targetOrientation * Vector3.up;
+            velocity = velocity.ProjectOntoPlane(up);
+            if (!velocity.AlmostZero())
+                mHeadingTracker.Add(velocity);
+
+            velocity = mHeadingTracker.GetReliableHeading();
+            if (!velocity.AlmostZero())
+                return UnityVectorExtensions.SignedAngle(targetOrientation * Vector3.forward, velocity, up);
+
+            // If no reliable heading, then stay where we are.
+            return currentHeading;
+        }
+
+        class HeadingTracker
+        {
+            struct Item
+            {
+                public Vector3 velocity;
+                public float weight;
+                public float time;
+            };
+            Item[] mHistory;
+            int mTop;
+            int mBottom;
+            int mCount;
+
+            Vector3 mHeadingSum;
+            float mWeightSum = 0;
+            float mWeightTime = 0;
+
+            Vector3 mLastGoodHeading = Vector3.zero;
+
+            public HeadingTracker(int filterSize)
+            {
+                mHistory = new Item[filterSize];
+                float historyHalfLife = filterSize / 5f; // somewhat arbitrarily
+                mDecayExponent = -Mathf.Log(2f) / historyHalfLife;
+                ClearHistory();
+            }
+
+            public int FilterSize { get { return mHistory.Length; } }
+
+            void ClearHistory()
+            {
+                mTop = mBottom = mCount = 0;
+                mWeightSum = 0;
+                mHeadingSum = Vector3.zero;
+            }
+
+            static float mDecayExponent;
+            static float Decay(float time) { return Mathf.Exp(time * mDecayExponent); }
+
+            public void Add(Vector3 velocity)
+            {
+                if (FilterSize == 0)
+                {
+                    mLastGoodHeading = velocity;
+                    return;
+                }
+                float weight = velocity.magnitude;
+                if (weight > UnityVectorExtensions.Epsilon)
+                {
+                    Item item = new Item();
+                    item.velocity = velocity;
+                    item.weight = weight;
+                    item.time = Time.time;
+                    if (mCount == FilterSize)
+                        PopBottom();
+                    ++mCount;
+                    mHistory[mTop] = item;
+                    if (++mTop == FilterSize)
+                        mTop = 0;
+
+                    mWeightSum *= Decay(item.time - mWeightTime);
+                    mWeightTime = item.time;
+                    mWeightSum += weight;
+                    mHeadingSum += item.velocity;
+                }
+            }
+
+            void PopBottom()
+            {
+                if (mCount > 0)
+                {
+                    float time = Time.time;
+                    Item item = mHistory[mBottom];
+                    if (++mBottom == FilterSize)
+                        mBottom = 0;
+                    --mCount;
+
+                    float decay = Decay(time - item.time);
+                    mWeightSum -= item.weight * decay;
+                    mHeadingSum -= item.velocity * decay;
+                    if (mWeightSum <= UnityVectorExtensions.Epsilon || mCount == 0)
+                        ClearHistory();
+                }
+            }
+
+            public void DecayHistory()
+            {
+                float time = Time.time;
+                float decay = Decay(time - mWeightTime);
+                mWeightSum *= decay;
+                mWeightTime = time;
+                if (mWeightSum < UnityVectorExtensions.Epsilon)
+                    ClearHistory();
+                else
+                    mHeadingSum = mHeadingSum * decay;
+            }
+
+            public Vector3 GetReliableHeading()
+            {
+                // Update Last Good Heading
+                if (mWeightSum > UnityVectorExtensions.Epsilon
+                    && (mCount == mHistory.Length || mLastGoodHeading.AlmostZero()))
+                {
+                    Vector3  h = mHeadingSum / mWeightSum;
+                    if (!h.AlmostZero())
+                        mLastGoodHeading = h.normalized;
+                }
+                return mLastGoodHeading;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..46d7ca2ac0875ceb187dbfeb4bb22377f6a98c54
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9384ab8608cdc3d479fe89cd51eed48f
+timeCreated: 1485281954
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ebd357d01264891b1a0db22777878bf7a6173079
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs
@@ -0,0 +1,70 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to aim the camera in response to the user's mouse or joystick input.
+    /// 
+    /// The composer does not change the camera's position.  It will only pan and tilt the 
+    /// camera where it is, in order to get the desired framing.  To move the camera, you have
+    /// to use the virtual camera's Body section.
+    /// </summary>
+    [DocumentationSorting(23, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachinePOV : CinemachineComponentBase
+    {
+        /// <summary>The Vertical axis.  Value is -90..90. Controls the vertical orientation</summary>
+        [Tooltip("The Vertical axis.  Value is -90..90. Controls the vertical orientation")]
+        public AxisState m_VerticalAxis = new AxisState(300f, 0.1f, 0.1f, 0f, "Mouse Y", true);
+
+        /// <summary>The Horizontal axis.  Value is -180..180.  Controls the horizontal orientation</summary>
+        [Tooltip("The Horizontal axis.  Value is -180..180.  Controls the horizontal orientation")]
+        public AxisState m_HorizontalAxis = new AxisState(300f, 0.1f, 0.1f, 0f, "Mouse X", false);
+
+        /// <summary>True if component is enabled and has a LookAt defined</summary>
+        public override bool IsValid { get { return enabled; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Aim stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Aim; } }
+
+        private void OnValidate()
+        {
+            m_HorizontalAxis.Validate();
+            m_VerticalAxis.Validate();
+        }
+
+        private void OnEnable()
+        {
+            m_HorizontalAxis.SetThresholds(-180f, 180f, true);
+            m_VerticalAxis.SetThresholds(-90, 90, false);
+        }
+        
+        /// <summary>Applies the axis values and orients the camera accordingly</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  Not used.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (!IsValid)
+                return;
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePOV.MutateCameraState");
+
+            // Only read joystick when game is playing
+            if (deltaTime >= 0 || CinemachineCore.Instance.IsLive(VirtualCamera))
+            {
+                m_HorizontalAxis.Update(deltaTime);
+                m_VerticalAxis.Update(deltaTime);
+            }
+            Quaternion rot = Quaternion.Euler(m_VerticalAxis.Value, m_HorizontalAxis.Value, 0);
+            rot = rot * Quaternion.FromToRotation(Vector3.up, curState.ReferenceUp);
+            curState.OrientationCorrection = curState.OrientationCorrection * rot;
+
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+    }
+}
+
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e673e0e408cf24dd9eeeab13e060d99a416b9667
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3c9beda531928fc40968802117a5d256
+timeCreated: 1504204894
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9d1e41034805871c20f50387d782bc607df9306c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Aim section of the component pipeline.
+    /// Its job is to aim the camera hard at the LookAt target.
+    /// </summary>
+    [DocumentationSorting(27, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineSameAsFollowObject : CinemachineComponentBase
+    {
+        /// <summary>True if component is enabled and has a Follow target defined</summary>
+        public override bool IsValid { get { return enabled && FollowTarget != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Aim stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Aim; } }
+
+        /// <summary>Applies the composer rules and orients the camera accordingly</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for calculating damping.  If less than
+        /// zero, then target will snap to the center of the dead zone.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            if (IsValid)
+                curState.RawOrientation = FollowTarget.transform.rotation;
+        }
+    }
+}
+
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2309dcd196f73a9ced9c95eaf471de73f0598803
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a4c41ac9245b87c4192012080077d830
+timeCreated: 1511551300
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3ce9b142a42e411941c39fa5d2f845a8643e1044
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs
@@ -0,0 +1,312 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// A Cinemachine Virtual Camera Body component that constrains camera motion
+    /// to a CinemachinePath.  The camera can move along the path.
+    /// 
+    /// This behaviour can operate in two modes: manual positioning, and Auto-Dolly positioning.  
+    /// In Manual mode, the camera's position is specified by animating the Path Position field.  
+    /// In Auto-Dolly mode, the Path Position field is animated automatically every frame by finding
+    /// the position on the path that's closest to the virtual camera's Follow target.
+    /// </summary>
+    [DocumentationSorting(7, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineTrackedDolly : CinemachineComponentBase
+    {
+        /// <summary>The path to which the camera will be constrained.  This must be non-null.</summary>
+        [Tooltip("The path to which the camera will be constrained.  This must be non-null.")]
+        public CinemachinePathBase m_Path;
+
+        /// <summary>The position along the path at which the camera will be placed.
+        /// This can be animated directly, or set automatically by the Auto-Dolly feature
+        /// to get as close as possible to the Follow target.</summary>
+        [Tooltip("The position along the path at which the camera will be placed.  This can be animated directly, or set automatically by the Auto-Dolly feature to get as close as possible to the Follow target.  The value is interpreted according to the Position Units setting.")]
+        public float m_PathPosition;
+
+        /// <summary>How to interpret the Path Position</summary>
+        [Tooltip("How to interpret Path Position.  If set to Path Units, values are as follows: 0 represents the first waypoint on the path, 1 is the second, and so on.  Values in-between are points on the path in between the waypoints.  If set to Distance, then Path Position represents distance along the path.")]
+        public CinemachinePathBase.PositionUnits m_PositionUnits = CinemachinePathBase.PositionUnits.PathUnits;
+
+        /// <summary>Where to put the camera realtive to the path postion.  X is perpendicular to the path, Y is up, and Z is parallel to the path.</summary>
+        [Tooltip("Where to put the camera relative to the path position.  X is perpendicular to the path, Y is up, and Z is parallel to the path.  This allows the camera to be offset from the path itself (as if on a tripod, for example).")]
+        public Vector3 m_PathOffset = Vector3.zero;
+
+        /// <summary>How aggressively the camera tries to maintain the offset perpendicular to the path.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// x-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain its position in a direction perpendicular to the path.  Small numbers are more responsive, rapidly translating the camera to keep the target's x-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_XDamping = 0f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the path-local up direction.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// y-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain its position in the path-local up direction.  Small numbers are more responsive, rapidly translating the camera to keep the target's y-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_YDamping = 0f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset parallel to the path.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the
+        /// target's z-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain its position in a direction parallel to the path.  Small numbers are more responsive, rapidly translating the camera to keep the target's z-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_ZDamping = 1f;
+
+        /// <summary>Different ways to set the camera's up vector</summary>
+        [DocumentationSorting(7.1f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum CameraUpMode
+        {
+            /// <summary>Leave the camera's up vector alone.  It will be set according to the Brain's WorldUp.</summary>
+            Default,
+            /// <summary>Take the up vector from the path's up vector at the current point</summary>
+            Path,
+            /// <summary>Take the up vector from the path's up vector at the current point, but with the roll zeroed out</summary>
+            PathNoRoll,
+            /// <summary>Take the up vector from the Follow target's up vector</summary>
+            FollowTarget,
+            /// <summary>Take the up vector from the Follow target's up vector, but with the roll zeroed out</summary>
+            FollowTargetNoRoll,
+        };
+
+        /// <summary>How to set the virtual camera's Up vector.  This will affect the screen composition.</summary>
+        [Tooltip("How to set the virtual camera's Up vector.  This will affect the screen composition, because the camera Aim behaviours will always try to respect the Up direction.")]
+        public CameraUpMode m_CameraUp = CameraUpMode.Default;
+
+        /// <summary>"How aggressively the camera tries to track the target rotation's X angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's X angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_PitchDamping = 0;
+
+        /// <summary>How aggressively the camera tries to track the target rotation's Y angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's Y angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_YawDamping = 0;
+
+        /// <summary>How aggressively the camera tries to track the target rotation's Z angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's Z angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_RollDamping = 0f;
+
+        /// <summary>Controls how automatic dollying occurs</summary>
+        [DocumentationSorting(7.2f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct AutoDolly
+        {
+            /// <summary>If checked, will enable automatic dolly, which chooses a path position
+            /// that is as close as possible to the Follow target.</summary>
+            [Tooltip("If checked, will enable automatic dolly, which chooses a path position that is as close as possible to the Follow target.  Note: this can have significant performance impact")]
+            public bool m_Enabled;
+
+            /// <summary>Offset, in current position units, from the closest point on the path to the follow target.</summary>
+            [Tooltip("Offset, in current position units, from the closest point on the path to the follow target")]
+            public float m_PositionOffset;
+
+            /// <summary>Search up to how many waypoints on either side of the current position.  Use 0 for Entire path</summary>
+            [Tooltip("Search up to how many waypoints on either side of the current position.  Use 0 for Entire path.")]
+            public int m_SearchRadius;
+
+            /// <summary>We search between waypoints by dividing the segment into this many straight pieces.
+            /// The higher the number, the more accurate the result, but performance is
+            /// proportionally slower for higher numbers</summary>
+            [FormerlySerializedAs("m_StepsPerSegment")]
+            [Tooltip("We search between waypoints by dividing the segment into this many straight pieces.  The higher the number, the more accurate the result, but performance is proportionally slower for higher numbers")]
+            public int m_SearchResolution;
+
+            /// <summary>Constructor with specific field values</summary>
+            public AutoDolly(bool enabled, float positionOffset, int searchRadius, int stepsPerSegment)
+            {
+                m_Enabled = enabled;
+                m_PositionOffset = positionOffset;
+                m_SearchRadius = searchRadius;
+                m_SearchResolution = stepsPerSegment;
+            }
+        };
+
+        /// <summary>Controls how automatic dollying occurs</summary>
+        [Tooltip("Controls how automatic dollying occurs.  A Follow target is necessary to use this feature.")]
+        public AutoDolly m_AutoDolly = new AutoDolly(false, 0, 2, 5);
+
+        /// <summary>True if component is enabled and has a path</summary>
+        public override bool IsValid { get { return enabled && m_Path != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Body stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Body; } }
+
+        /// <summary>Positions the virtual camera according to the transposer rules.</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for damping.  If less that 0, no damping is done.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            // Init previous frame state info
+            if (deltaTime < 0)
+            {
+                m_PreviousPathPosition = m_PathPosition;
+                m_PreviousCameraPosition = curState.RawPosition;
+            }
+
+            if (!IsValid)
+                return;
+
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineTrackedDolly.MutateCameraState");
+            // Get the new ideal path base position
+            if (m_AutoDolly.m_Enabled && FollowTarget != null)
+            {
+                float prevPos = m_PreviousPathPosition;
+                if (m_PositionUnits == CinemachinePathBase.PositionUnits.Distance)
+                    prevPos = m_Path.GetPathPositionFromDistance(prevPos);
+                // This works in path units
+                m_PathPosition = m_Path.FindClosestPoint(
+                    FollowTarget.transform.position,
+                    Mathf.FloorToInt(prevPos),
+                    (deltaTime < 0 || m_AutoDolly.m_SearchRadius <= 0) 
+                        ? -1 : m_AutoDolly.m_SearchRadius,
+                    m_AutoDolly.m_SearchResolution);
+                if (m_PositionUnits == CinemachinePathBase.PositionUnits.Distance)
+                    m_PathPosition = m_Path.GetPathDistanceFromPosition(m_PathPosition);
+
+                // Apply the path position offset
+                m_PathPosition += m_AutoDolly.m_PositionOffset;
+            }
+            float newPathPosition = m_PathPosition;
+
+            if (deltaTime >= 0)
+            {
+                // Normalize previous position to find the shortest path
+                float maxUnit = m_Path.MaxUnit(m_PositionUnits);
+                if (maxUnit > 0)
+                {
+                    float prev = m_Path.NormalizeUnit(m_PreviousPathPosition, m_PositionUnits);
+                    float next = m_Path.NormalizeUnit(newPathPosition, m_PositionUnits);
+                    if (m_Path.Looped && Mathf.Abs(next - prev) > maxUnit / 2)
+                    {
+                        if (next > prev)
+                            prev += maxUnit;
+                        else
+                            prev -= maxUnit;
+                    }
+                    m_PreviousPathPosition = prev;
+                    newPathPosition = next;
+                }
+
+                // Apply damping along the path direction
+                float offset = m_PreviousPathPosition - newPathPosition;
+                offset = Damper.Damp(offset, m_ZDamping, deltaTime);
+                newPathPosition = m_PreviousPathPosition - offset;
+            }
+            m_PreviousPathPosition = newPathPosition;
+            Quaternion newPathOrientation = m_Path.EvaluateOrientationAtUnit(newPathPosition, m_PositionUnits);
+
+            // Apply the offset to get the new camera position
+            Vector3 newCameraPos = m_Path.EvaluatePositionAtUnit(newPathPosition, m_PositionUnits);
+            Vector3 offsetX = newPathOrientation * Vector3.right;
+            Vector3 offsetY = newPathOrientation * Vector3.up;
+            Vector3 offsetZ = newPathOrientation * Vector3.forward;
+            newCameraPos += m_PathOffset.x * offsetX;
+            newCameraPos += m_PathOffset.y * offsetY;
+            newCameraPos += m_PathOffset.z * offsetZ;
+
+            // Apply damping to the remaining directions
+            if (deltaTime >= 0)
+            {
+                Vector3 currentCameraPos = m_PreviousCameraPosition;
+                Vector3 delta = (currentCameraPos - newCameraPos);
+                Vector3 delta1 = Vector3.Dot(delta, offsetY) * offsetY;
+                Vector3 delta0 = delta - delta1;
+                delta0 = Damper.Damp(delta0, m_XDamping, deltaTime);
+                delta1 = Damper.Damp(delta1, m_YDamping, deltaTime);
+                newCameraPos = currentCameraPos - (delta0 + delta1);
+            }
+            curState.RawPosition = m_PreviousCameraPosition = newCameraPos;
+
+            // Set the orientation and up
+            Quaternion newOrientation 
+                = GetTargetOrientationAtPathPoint(newPathOrientation, curState.ReferenceUp);
+            if (deltaTime < 0)
+                m_PreviousOrientation = newOrientation;
+            else 
+            {
+                if (deltaTime >= 0)
+                {
+                    Vector3 relative = (Quaternion.Inverse(m_PreviousOrientation) 
+                        * newOrientation).eulerAngles;
+                    for (int i = 0; i < 3; ++i)
+                        if (relative[i] > 180)
+                            relative[i] -= 360;
+                    relative = Damper.Damp(relative, AngularDamping, deltaTime);
+                    newOrientation = m_PreviousOrientation * Quaternion.Euler(relative);
+                }
+                m_PreviousOrientation = newOrientation;
+            }
+
+            curState.RawOrientation = newOrientation;
+            curState.ReferenceUp = curState.RawOrientation * Vector3.up;
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>API for the editor, to process a position drag from the user.
+        /// This implementation adds the delta to the follow offset.</summary>
+        /// <param name="delta">The amount dragged this frame</param>
+        public override void OnPositionDragged(Vector3 delta)
+        {
+            Quaternion targetOrientation = m_Path.EvaluateOrientationAtUnit(m_PathPosition, m_PositionUnits);
+            Vector3 localOffset = Quaternion.Inverse(targetOrientation) * delta;
+            m_PathOffset += localOffset;
+        }
+        
+        private Quaternion GetTargetOrientationAtPathPoint(Quaternion pathOrientation, Vector3 up)
+        {
+            switch (m_CameraUp)
+            {
+                default:
+                case CameraUpMode.Default: break;
+                case CameraUpMode.Path: return pathOrientation;
+                case CameraUpMode.PathNoRoll: 
+                    return Quaternion.LookRotation(pathOrientation * Vector3.forward, up);
+                case CameraUpMode.FollowTarget:
+                    if (FollowTarget != null)
+                        return FollowTarget.rotation;
+                    break;
+                case CameraUpMode.FollowTargetNoRoll:
+                    if (FollowTarget != null)
+                        return Quaternion.LookRotation(FollowTarget.rotation * Vector3.forward, up);
+                    break;
+            }
+            return Quaternion.LookRotation(transform.rotation * Vector3.forward, up);
+        }
+
+        private Vector3 AngularDamping
+        {
+            get 
+            { 
+                switch (m_CameraUp)
+                {
+                    case CameraUpMode.PathNoRoll:
+                    case CameraUpMode.FollowTargetNoRoll:
+                        return new Vector3(m_PitchDamping, m_YawDamping, 0); 
+                    case CameraUpMode.Default:
+                        return Vector3.zero;
+                    default:
+                        return new Vector3(m_PitchDamping, m_YawDamping, m_RollDamping); 
+                }
+            } 
+        }
+        
+        private float m_PreviousPathPosition = 0;
+        Quaternion m_PreviousOrientation = Quaternion.identity;
+        private Vector3 m_PreviousCameraPosition = Vector3.zero;
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4530830a899ff072633b66c02e79511d6868bb34
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 418e42c7d0405cc48a7b83f63ea53bb3
+timeCreated: 1493213884
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9537d58b085f2d8a643f524b2101abbe77164443
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs
@@ -0,0 +1,310 @@
+using Cinemachine.Utility;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is a CinemachineComponent in the Body section of the component pipeline. 
+    /// Its job is to position the camera in a fixed relationship to the vcam's Follow 
+    /// target object, with offsets and damping.
+    /// 
+    /// The Tansposer will only change the camera's position in space.  It will not 
+    /// re-orient or otherwise aim the camera.  To to that, you need to instruct 
+    /// the vcam in the Aim section of its pipeline.
+    /// </summary>
+    [DocumentationSorting(5, DocumentationSortingAttribute.Level.UserRef)]
+    [AddComponentMenu("")] // Don't display in add component menu
+    [RequireComponent(typeof(CinemachinePipeline))]
+    [SaveDuringPlay]
+    public class CinemachineTransposer : CinemachineComponentBase
+    {
+        /// <summary>
+        /// The coordinate space to use when interpreting the offset from the target
+        /// </summary>
+        [DocumentationSorting(5.01f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum BindingMode
+        {
+            /// <summary>
+            /// Camera will be bound to the Follow target using a frame of reference consisting
+            /// of the target's local frame at the moment when the virtual camera was enabled,
+            /// or when the target was assigned.
+            /// </summary>
+            LockToTargetOnAssign = 0,
+            /// <summary>
+            /// Camera will be bound to the Follow target using a frame of reference consisting
+            /// of the target's local frame, with the tilt and roll zeroed out.
+            /// </summary>
+            LockToTargetWithWorldUp = 1,
+            /// <summary>
+            /// Camera will be bound to the Follow target using a frame of reference consisting
+            /// of the target's local frame, with the roll zeroed out.
+            /// </summary>
+            LockToTargetNoRoll = 2,
+            /// <summary>
+            /// Camera will be bound to the Follow target using the target's local frame.
+            /// </summary>
+            LockToTarget = 3,
+            /// <summary>Camera will be bound to the Follow target using a world space offset.</summary>
+            WorldSpace = 4,
+            /// <summary>Offsets will be calculated relative to the target, using Camera-local axes</summary>
+            SimpleFollowWithWorldUp = 5
+        }
+        /// <summary>The coordinate space to use when interpreting the offset from the target</summary>
+        [Tooltip("The coordinate space to use when interpreting the offset from the target.  This is also used to set the camera's Up vector, which will be maintained when aiming the camera.")]
+        public BindingMode m_BindingMode = BindingMode.LockToTargetWithWorldUp;
+
+        /// <summary>The distance which the transposer will attempt to maintain from the transposer subject</summary>
+        [Tooltip("The distance vector that the transposer will attempt to maintain from the Follow target")]
+        public Vector3 m_FollowOffset = Vector3.back * 10f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the X-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// x-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the X-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's x-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_XDamping = 1f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the Y-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the target's
+        /// y-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the Y-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's y-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_YDamping = 1f;
+
+        /// <summary>How aggressively the camera tries to maintain the offset in the Z-axis.
+        /// Small numbers are more responsive, rapidly translating the camera to keep the
+        /// target's z-axis offset.  Larger numbers give a more heavy slowly responding camera.
+        /// Using different settings per axis can yield a wide range of camera behaviors</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to maintain the offset in the Z-axis.  Small numbers are more responsive, rapidly translating the camera to keep the target's z-axis offset.  Larger numbers give a more heavy slowly responding camera. Using different settings per axis can yield a wide range of camera behaviors.")]
+        public float m_ZDamping = 1f;
+
+        /// <summary>How aggressively the camera tries to track the target rotation's X angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's X angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_PitchDamping = 0;
+
+        /// <summary>How aggressively the camera tries to track the target rotation's Y angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's Y angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_YawDamping = 0;
+
+        /// <summary>How aggressively the camera tries to track the target rotation's Z angle.  
+        /// Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.</summary>
+        [Range(0f, 20f)]
+        [Tooltip("How aggressively the camera tries to track the target rotation's Z angle.  Small numbers are more responsive.  Larger numbers give a more heavy slowly responding camera.")]
+        public float m_RollDamping = 0f;
+
+        protected virtual void OnValidate()
+        {
+            m_FollowOffset = EffectiveOffset;
+        }
+        
+        /// <summary>Get the target offset, with sanitization</summary>
+        protected Vector3 EffectiveOffset 
+        { 
+            get 
+            { 
+                Vector3 offset = m_FollowOffset; 
+                if (m_BindingMode == BindingMode.SimpleFollowWithWorldUp)
+                {
+                    offset.x = 0;
+                    offset.z = -Mathf.Abs(offset.z);
+                }
+                return offset;
+            } 
+        }
+        
+        /// <summary>True if component is enabled and has a valid Follow target</summary>
+        public override bool IsValid { get { return enabled && FollowTarget != null; } }
+
+        /// <summary>Get the Cinemachine Pipeline stage that this component implements.
+        /// Always returns the Body stage</summary>
+        public override CinemachineCore.Stage Stage { get { return CinemachineCore.Stage.Body; } }
+
+        /// <summary>Positions the virtual camera according to the transposer rules.</summary>
+        /// <param name="curState">The current camera state</param>
+        /// <param name="deltaTime">Used for damping.  If less than 0, no damping is done.</param>
+        public override void MutateCameraState(ref CameraState curState, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineTransposer.MutateCameraState");
+            InitPrevFrameStateInfo(ref curState, deltaTime);
+            if (IsValid)
+            {
+                Vector3 pos;
+                Quaternion orient;
+                Vector3 offset = EffectiveOffset;
+                TrackTarget(deltaTime, curState.ReferenceUp, offset, out pos, out orient);
+                curState.RawPosition = pos + orient * offset;
+                curState.ReferenceUp = orient * Vector3.up;
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>API for the editor, to process a position drag from the user.
+        /// This implementation adds the delta to the follow offset.</summary>
+        /// <param name="delta">The amount dragged this frame</param>
+        public override void OnPositionDragged(Vector3 delta)
+        {
+            Quaternion targetOrientation = GetReferenceOrientation(VcamState.ReferenceUp);
+            Vector3 localOffset = Quaternion.Inverse(targetOrientation) * delta;
+            m_FollowOffset += localOffset;
+            m_FollowOffset = EffectiveOffset;
+        }
+
+        /// <summary>Initializes the state for previous frame if appropriate.</summary>
+        protected void InitPrevFrameStateInfo(
+            ref CameraState curState, float deltaTime)
+        {
+            if (m_previousTarget != FollowTarget || deltaTime < 0)
+            {
+                m_previousTarget = FollowTarget;
+                m_targetOrientationOnAssign 
+                    = (m_previousTarget == null) ? Quaternion.identity : FollowTarget.rotation;
+            }
+            if (deltaTime < 0)
+            {
+                m_PreviousTargetPosition = curState.RawPosition;
+                m_PreviousReferenceOrientation = GetReferenceOrientation(curState.ReferenceUp);
+            }
+        }
+
+        /// <summary>Positions the virtual camera according to the transposer rules.</summary>
+        /// <param name="deltaTime">Used for damping.  If less than 0, no damping is done.</param>
+        /// <param name="up">Current camera up</param>
+        /// <param name="desiredCameraOffset">Where we want to put the camera relative to the follow target</param>
+        /// <param name="outTargetPosition">Resulting camera position</param>
+        /// <param name="outTargetOrient">Damped target orientation</param>
+        protected void TrackTarget(
+            float deltaTime, Vector3 up, Vector3 desiredCameraOffset,
+            out Vector3 outTargetPosition, out Quaternion outTargetOrient)
+        {
+            Quaternion targetOrientation = GetReferenceOrientation(up);
+            Quaternion dampedOrientation = targetOrientation;
+            if (deltaTime >= 0)
+            {
+                Vector3 relative = (Quaternion.Inverse(m_PreviousReferenceOrientation) 
+                    * targetOrientation).eulerAngles;
+                for (int i = 0; i < 3; ++i)
+                    if (relative[i] > 180)
+                        relative[i] -= 360;
+                relative = Damper.Damp(relative, AngularDamping, deltaTime);
+                dampedOrientation = m_PreviousReferenceOrientation * Quaternion.Euler(relative);
+            }
+            m_PreviousReferenceOrientation = dampedOrientation;
+
+            Vector3 targetPosition = FollowTarget.position;
+            Vector3 currentPosition = m_PreviousTargetPosition;
+            Vector3 worldOffset = targetPosition - currentPosition;
+
+            // Adjust for damping, which is done in camera-offset-local coords
+            if (deltaTime >= 0)
+            {
+                Quaternion dampingSpace;
+                if (desiredCameraOffset.AlmostZero())
+                    dampingSpace = VcamState.RawOrientation;
+                else
+                    dampingSpace = Quaternion.LookRotation(dampedOrientation * desiredCameraOffset.normalized, up);
+                Vector3 localOffset = Quaternion.Inverse(dampingSpace) * worldOffset;
+                localOffset = Damper.Damp(localOffset, Damping, deltaTime);
+                worldOffset = dampingSpace * localOffset;
+            }
+            outTargetPosition = m_PreviousTargetPosition = currentPosition + worldOffset;
+            outTargetOrient = dampedOrientation;
+        }
+
+        /// <summary>
+        /// Damping speeds for each of the 3 axes of the offset from target
+        /// </summary>
+        protected Vector3 Damping
+        {
+            get 
+            { 
+                switch (m_BindingMode)
+                {
+                    case BindingMode.SimpleFollowWithWorldUp:
+                        return new Vector3(0, m_YDamping, m_ZDamping); 
+                    default:
+                        return new Vector3(m_XDamping, m_YDamping, m_ZDamping); 
+                }
+            } 
+        }
+
+        /// <summary>
+        /// Damping speeds for each of the 3 axes of the target's rotation
+        /// </summary>
+        protected Vector3 AngularDamping
+        {
+            get 
+            { 
+                switch (m_BindingMode)
+                {
+                    case BindingMode.LockToTargetNoRoll:
+                        return new Vector3(m_PitchDamping, m_YawDamping, 0); 
+                    case BindingMode.LockToTargetWithWorldUp:
+                        return new Vector3(0, m_YawDamping, 0); 
+                    case BindingMode.LockToTargetOnAssign:
+                    case BindingMode.WorldSpace:
+                    case BindingMode.SimpleFollowWithWorldUp:
+                        return Vector3.zero;
+                    default:
+                        return new Vector3(m_PitchDamping, m_YawDamping, m_RollDamping); 
+                }
+            } 
+        }
+
+        /// <summary>Internal API for the Inspector Editor, so it can draw a marker at the target</summary>
+        public Vector3 GeTargetCameraPosition(Vector3 worldUp)
+        {
+            if (!IsValid)
+                return Vector3.zero;
+            return FollowTarget.position + GetReferenceOrientation(worldUp) * EffectiveOffset;
+        }
+
+        /// <summary>State information for damping</summary>
+        Vector3 m_PreviousTargetPosition = Vector3.zero;
+        Quaternion m_PreviousReferenceOrientation = Quaternion.identity;
+        Quaternion m_targetOrientationOnAssign = Quaternion.identity;
+        Transform m_previousTarget = null;
+
+        /// <summary>Internal API for the Inspector Editor, so it can draw a marker at the target</summary>
+        public Quaternion GetReferenceOrientation(Vector3 worldUp)
+        {
+            if (FollowTarget != null)
+            {
+                Quaternion targetOrientation = FollowTarget.rotation;
+                switch (m_BindingMode)
+                {
+                    case BindingMode.LockToTargetOnAssign:
+                        return m_targetOrientationOnAssign;
+                    case BindingMode.LockToTargetWithWorldUp:
+                        return Uppify(targetOrientation, worldUp);
+                    case BindingMode.LockToTargetNoRoll:
+                        return Quaternion.LookRotation(targetOrientation * Vector3.forward, worldUp);
+                    case BindingMode.LockToTarget:
+                        return targetOrientation;
+                    case BindingMode.SimpleFollowWithWorldUp:
+                    {
+                        Vector3 dir = FollowTarget.position - VcamState.RawPosition;
+                        if (dir.AlmostZero())
+                            break;
+                        return Uppify(Quaternion.LookRotation(dir, worldUp), worldUp);
+                    }
+                    default:
+                        break;
+                }
+            }
+            return Quaternion.identity; 
+        }
+
+        static Quaternion Uppify(Quaternion q, Vector3 up)
+        {
+            Quaternion r = Quaternion.FromToRotation(q * Vector3.up, up);
+            return r * q;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs.meta b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..08c5af47bfe7d751d6828d9e053b24cba14d564f
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fa7155796051b734daa718462081dc5f
+timeCreated: 1484001119
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core.meta b/Assets/Cinemachine/Base/Runtime/Core.meta
new file mode 100644
index 0000000000000000000000000000000000000000..25d813b4c5e2b34efbbdfe79532ac938e70c64c4
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 3d53800f587b60a4191877d7713cd17c
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs b/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bad769fb8cae9f3041dae0bf00f4b54703c3a384
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs
@@ -0,0 +1,200 @@
+using UnityEngine;
+using System;
+using Cinemachine.Utility;
+using UnityEngine.Serialization;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Axis state for defining to react to player input.  
+    /// The settings here control the responsiveness of the axis to player input.
+    /// </summary>
+    [DocumentationSorting(6.4f, DocumentationSortingAttribute.Level.UserRef)]
+    [Serializable]
+    public struct AxisState
+    {
+        /// <summary>The current value of the axis</summary>
+        [NoSaveDuringPlay]
+        [Tooltip("The current value of the axis.")]
+        public float Value;
+
+        /// <summary>How fast the axis value can travel.  Increasing this number
+        /// makes the behaviour more responsive to joystick input</summary>
+        [Tooltip("The maximum speed of this axis in units/second")]
+        public float m_MaxSpeed;
+
+        /// <summary>The amount of time in seconds it takes to accelerate to
+        /// MaxSpeed with the supplied Axis at its maximum value</summary>
+        [Tooltip("The amount of time in seconds it takes to accelerate to MaxSpeed with the supplied Axis at its maximum value")]
+        public float m_AccelTime;
+
+        /// <summary>The amount of time in seconds it takes to decelerate
+        /// the axis to zero if the supplied axis is in a neutral position</summary>
+        [Tooltip("The amount of time in seconds it takes to decelerate the axis to zero if the supplied axis is in a neutral position")]
+        public float m_DecelTime;
+
+        /// <summary>The name of this axis as specified in Unity Input manager.
+        /// Setting to an empty string will disable the automatic updating of this axis</summary>
+        [FormerlySerializedAs("m_AxisName")]
+        [Tooltip("The name of this axis as specified in Unity Input manager. Setting to an empty string will disable the automatic updating of this axis")]
+        public string m_InputAxisName;
+
+        /// <summary>The value of the input axis.  A value of 0 means no input
+        /// You can drive this directly from a
+        /// custom input system, or you can set the Axis Name and have the value
+        /// driven by the internal Input Manager</summary>
+        [NoSaveDuringPlay]
+        [Tooltip("The value of the input axis.  A value of 0 means no input.  You can drive this directly from a custom input system, or you can set the Axis Name and have the value driven by the internal Input Manager")]
+        public float m_InputAxisValue;
+
+        /// <summary>If checked, then the raw value of the input axis will be inverted 
+        /// before it is used.</summary>
+        [NoSaveDuringPlay]
+        [Tooltip("If checked, then the raw value of the input axis will be inverted before it is used")]
+        public bool m_InvertAxis;
+
+        private float mCurrentSpeed;
+        private float mMinValue;
+        private float mMaxValue;
+        private bool mWrapAround;
+
+        /// <summary>Constructor with specific values</summary>
+        public AxisState(
+            float maxSpeed, float accelTime, float decelTime, float val, string name, bool invert)
+        {
+            m_MaxSpeed = maxSpeed;
+            m_AccelTime = accelTime;
+            m_DecelTime = decelTime;
+            Value = val;
+            m_InputAxisName = name;
+            m_InputAxisValue = 0;
+            m_InvertAxis = invert;
+
+            mCurrentSpeed = 0f;
+            mMinValue = 0f;
+            mMaxValue = 0f;
+            mWrapAround = false;
+        }
+
+        /// <summary>Call from OnValidate: Make sure the fields are sensible</summary>
+        public void Validate()
+        {
+            m_MaxSpeed = Mathf.Max(0, m_MaxSpeed);
+            m_AccelTime = Mathf.Max(0, m_AccelTime);
+            m_DecelTime = Mathf.Max(0, m_DecelTime);
+        }
+
+        /// <summary>
+        /// Sets the constraints by which this axis will operate on
+        /// </summary>
+        /// <param name="minValue">The lowest value this axis can achieve</param>
+        /// <param name="maxValue">The highest value this axis can achieve</param>
+        /// <param name="wrapAround">If <b>true</b>, values commanded greater
+        /// than mMaxValue or less than mMinValue will wrap around.
+        /// If <b>false</b>, the value will be clamped within the range.</param>
+        public void SetThresholds(float minValue, float maxValue, bool wrapAround)
+        {
+            mMinValue = minValue;
+            mMaxValue = maxValue;
+            mWrapAround = wrapAround;
+        }
+
+        const float Epsilon = UnityVectorExtensions.Epsilon;
+
+        /// <summary>
+        /// Updates the state of this axis based on the axis defined
+        /// by AxisState.m_AxisName
+        /// </summary>
+        /// <param name="deltaTime">Delta time in seconds</param>
+        /// <returns>Returns <b>true</b> if this axis' input was non-zero this Update,
+        /// <b>flase</b> otherwise</returns>
+        public bool Update(float deltaTime)
+        {
+            if (!string.IsNullOrEmpty(m_InputAxisName))
+            {
+                try
+                {
+                    m_InputAxisValue = CinemachineCore.GetInputAxis(m_InputAxisName);
+                }
+                catch (ArgumentException e)
+                {
+                    Debug.LogError(e.ToString());
+                }
+            }
+
+            float input = m_InputAxisValue;
+            if (m_InvertAxis)
+                input *= -1f;
+
+            if (m_MaxSpeed > Epsilon)
+            {
+                float targetSpeed = input * m_MaxSpeed;
+                if (Mathf.Abs(targetSpeed) < Epsilon
+                    || (Mathf.Sign(mCurrentSpeed) == Mathf.Sign(targetSpeed)
+                        && Mathf.Abs(targetSpeed) <  Mathf.Abs(mCurrentSpeed)))
+                {
+                    // Need to decelerate
+                    float a = Mathf.Abs(targetSpeed - mCurrentSpeed) / Mathf.Max(Epsilon, m_DecelTime);
+                    float delta = Mathf.Min(a * deltaTime, Mathf.Abs(mCurrentSpeed));
+                    mCurrentSpeed -= Mathf.Sign(mCurrentSpeed) * delta;
+                }
+                else 
+                {
+                    // Accelerate to the target speed
+                    float a = Mathf.Abs(targetSpeed - mCurrentSpeed) / Mathf.Max(Epsilon, m_AccelTime);
+                    mCurrentSpeed += Mathf.Sign(targetSpeed) * a * deltaTime;
+                    if (Mathf.Sign(mCurrentSpeed) == Mathf.Sign(targetSpeed) 
+                        && Mathf.Abs(mCurrentSpeed) > Mathf.Abs(targetSpeed))
+                    {
+                        mCurrentSpeed = targetSpeed;
+                    }
+                }
+            }
+
+            // Clamp our max speeds so we don't go crazy
+            float maxSpeed = GetMaxSpeed();
+            mCurrentSpeed = Mathf.Clamp(mCurrentSpeed, -maxSpeed, maxSpeed);
+
+            Value += mCurrentSpeed * deltaTime;
+            bool isOutOfRange = (Value > mMaxValue) || (Value < mMinValue);
+            if (isOutOfRange)
+            {
+                if (mWrapAround)
+                {
+                    if (Value > mMaxValue)
+                        Value = mMinValue + (Value - mMaxValue);
+                    else
+                        Value = mMaxValue + (Value - mMinValue);
+                }
+                else
+                {
+                    Value = Mathf.Clamp(Value, mMinValue, mMaxValue);
+                    mCurrentSpeed = 0f;
+                }
+            }
+            return Mathf.Abs(input) > Epsilon;
+        }
+
+        // MaxSpeed may be limited as we approach the range ends, in order
+        // to prevent a hard bump
+        private float GetMaxSpeed()
+        {
+            float range = mMaxValue - mMinValue;
+            if (!mWrapAround && range > 0)
+            {
+                float threshold = range / 10f;
+                if (mCurrentSpeed > 0 && (mMaxValue - Value) < threshold)
+                {
+                    float t = (mMaxValue - Value) / threshold;
+                    return Mathf.Lerp(0, m_MaxSpeed, t);
+                }
+                else if (mCurrentSpeed < 0 && (Value - mMinValue) < threshold)
+                {
+                    float t = (Value - mMinValue) / threshold;
+                    return Mathf.Lerp(0, m_MaxSpeed, t);
+                }
+            }
+            return m_MaxSpeed;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d86b4b897eade4586cd214c87a7be2d5230058dc
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/AxisState.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 557c6f70a7173744abaa3967b6da6f5d
+timeCreated: 1504195334
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs b/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bfd9851df8223ef0e35a539d43bcb66a7120389b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs
@@ -0,0 +1,352 @@
+using UnityEngine;
+using Cinemachine.Utility;
+using System.Collections.Generic;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// The output of the Cinemachine engine for a specific virtual camera.  The information
+    /// in this struct can be blended, and provides what is needed to calculate an
+    /// appropriate camera position, orientation, and lens setting.
+    /// 
+    /// Raw values are what the Cinemachine behaviours generate.  The correction channel
+    /// holds perturbations to the raw values - e.g. noise or smoothing, or obstacle
+    /// avoidance corrections.  Coirrections are not considered when making time-based
+    /// calculations such as damping.
+    /// 
+    /// The Final position and orientation is the comination of the raw values and
+    /// their corrections.
+    /// </summary>
+    public struct CameraState
+    {
+        /// <summary>
+        /// Camera Lens Settings.
+        /// </summary>
+        public LensSettings Lens { get; set; }
+
+        /// <summary>
+        /// Which way is up.  World space unit vector.
+        /// </summary>
+        public Vector3 ReferenceUp { get; set; }
+
+        /// <summary>
+        /// The world space focus point of the camera.  What the camera wants to look at.
+        /// There is a special constant define to represent "nothing".  Be careful to 
+        /// check for that (or check the HasLookAt property).
+        /// </summary>
+        public Vector3 ReferenceLookAt { get; set; }
+
+        /// <summary>
+        /// Returns true if this state has a valid ReferenceLookAt value.
+        /// </summary>
+        public bool HasLookAt { get { return ReferenceLookAt == ReferenceLookAt; } } // will be false if NaN
+
+        /// <summary>
+        /// This constant represents "no point in space" or "no direction".
+        /// </summary>
+        public static Vector3 kNoPoint = new Vector3(float.NaN, float.NaN, float.NaN);
+
+        /// <summary>
+        /// Raw (un-corrected) world space position of this camera
+        /// </summary>
+        public Vector3 RawPosition { get; set; }
+
+        /// <summary>
+        /// Raw (un-corrected) world space orientation of this camera
+        /// </summary>
+        public Quaternion RawOrientation { get; set; }
+
+        /// <summary>This is a way for the Body component to bypass aim damping,
+        /// useful for when the body need to rotate its point of view, but does not
+        /// want interference from the aim damping</summary>
+        internal Vector3 PositionDampingBypass { get; set; }
+
+        /// <summary>
+        /// Subjective estimation of how "good" the shot is.
+        /// Larger values mean better quality.  Default is 1.
+        /// </summary>
+        public float ShotQuality { get; set; }
+
+        /// <summary>
+        /// Position correction.  This will be added to the raw position.
+        /// This value doesn't get fed back into the system when calculating the next frame.
+        /// Can be noise, or smoothing, or both, or something else.
+        /// </summary>
+        public Vector3 PositionCorrection { get; set; }
+
+        /// <summary>
+        /// Orientation correction.  This will be added to the raw orientation.
+        /// This value doesn't get fed back into the system when calculating the next frame.
+        /// Can be noise, or smoothing, or both, or something else.
+        /// </summary>
+        public Quaternion OrientationCorrection { get; set; }
+
+        /// <summary>
+        /// Position with correction applied.
+        /// </summary>
+        public Vector3 CorrectedPosition { get { return RawPosition + PositionCorrection; } }
+
+        /// <summary>
+        /// Orientation with correction applied.
+        /// </summary>
+        public Quaternion CorrectedOrientation { get { return RawOrientation * OrientationCorrection; } }
+
+        /// <summary>
+        /// Position with correction applied.  This is what the final camera gets.
+        /// </summary>
+        public Vector3 FinalPosition { get { return RawPosition + PositionCorrection; } }
+
+        /// <summary>
+        /// Orientation with correction and dutch applied.  This is what the final camera gets.
+        /// </summary>
+        public Quaternion FinalOrientation
+        {
+            get
+            {
+                if (Mathf.Abs(Lens.Dutch) > UnityVectorExtensions.Epsilon)
+                    return CorrectedOrientation * Quaternion.AngleAxis(Lens.Dutch, Vector3.forward);
+                return CorrectedOrientation;
+            }
+        }
+
+        /// <summary>
+        /// State with default values
+        /// </summary>
+        public static CameraState Default
+        {
+            get
+            {
+                CameraState state = new CameraState();
+                state.Lens = LensSettings.Default;
+                state.ReferenceUp = Vector3.up;
+                state.ReferenceLookAt = kNoPoint;
+                state.RawPosition = Vector3.zero;
+                state.RawOrientation = Quaternion.identity;
+                state.ShotQuality = 1;
+                state.PositionCorrection = Vector3.zero;
+                state.OrientationCorrection = Quaternion.identity;
+                state.PositionDampingBypass = Vector3.zero;
+                return state;
+            }
+        }
+
+        /// <summary>Opaque structure represent extra blendable stuff and its weight.
+        /// The base system ignores this data - it is intended for extension modules</summary>
+        public struct CustomBlendable 
+        { 
+            /// <summary>The custom stuff that the extention module will consider</summary>
+            public Object m_Custom; 
+            /// <summary>The weight of the custom stuff.  Must be 0...1</summary>
+            public float m_Weight; 
+
+            /// <summary>Constructor with specific values</summary>
+            /// <param name="custom">The custom stuff that the extention module will consider</param>
+            /// <param name="weight">The weight of the custom stuff.  Must be 0...1</param>
+            public CustomBlendable(Object custom, float weight) 
+                { m_Custom = custom; m_Weight = weight; }
+        };
+
+        // This is to avoid excessive GC allocs
+        CustomBlendable mCustom0;
+        CustomBlendable mCustom1;
+        CustomBlendable mCustom2;
+        CustomBlendable mCustom3;
+        List<CustomBlendable> m_CustomOverflow;
+
+        /// <summary>The number of custom blendables that will be applied to the camera.  
+        /// The base system manages but otherwise ignores this data - it is intended for 
+        /// extension modules</summary>
+        public int NumCustomBlendables { get; private set; }
+
+        /// <summary>Get a custom blendable that will be applied to the camera.  
+        /// The base system manages but otherwise ignores this data - it is intended for 
+        /// extension modules</summary>
+        /// <param name="index">Which one to get.  Must be in range [0...NumCustomBlendables)</param>
+        /// <returns>The custom blendable at the specified index.</returns>
+        public CustomBlendable GetCustomBlendable(int index)
+        {
+            switch (index)
+            {
+                case 0: return mCustom0;
+                case 1: return mCustom1;
+                case 2: return mCustom2;
+                case 3: return mCustom3;
+                default: 
+                {
+                    index -= 4;
+                    if (m_CustomOverflow != null && index < m_CustomOverflow.Count)
+                        return m_CustomOverflow[index];
+                    return new CustomBlendable(null, 0);
+                }
+            }
+        }
+
+        int FindCustomBlendable(Object custom)
+        {
+            if (mCustom0.m_Custom == custom)
+                return 0;
+            if (mCustom1.m_Custom == custom)
+                return 1;
+            if (mCustom2.m_Custom == custom)
+                return 2;
+            if (mCustom3.m_Custom == custom)
+                return 3;
+            if (m_CustomOverflow != null)
+            {
+                for (int i = 0; i < m_CustomOverflow.Count; ++i)
+                    if (m_CustomOverflow[i].m_Custom == custom)
+                        return i + 4;
+            }
+            return -1;
+        }
+
+        /// <summary>Add a custom blendable to the pot for eventual application to the camera.
+        /// The base system manages but otherwise ignores this data - it is intended for 
+        /// extension modules</summary>
+        /// <param name="b">The custom blendable to add.  If b.m_Custom is the same as an 
+        /// already-added custom blendable, then they will be merged and the weights combined.</param>
+        public void AddCustomBlendable(CustomBlendable b)
+        {
+            // Attempt to merge common blendables to avoid growth
+            int index = FindCustomBlendable(b.m_Custom);
+            if (index >= 0)
+                b.m_Weight += GetCustomBlendable(index).m_Weight;
+            else
+            {
+                index = NumCustomBlendables;
+                NumCustomBlendables = index + 1;
+            }
+            switch (index)
+            {
+                case 0: mCustom0 = b; break;
+                case 1: mCustom1 = b; break;
+                case 2: mCustom2 = b; break;
+                case 3: mCustom3 = b; break;
+                default: 
+                {
+                    if (m_CustomOverflow == null)
+                        m_CustomOverflow = new List<CustomBlendable>();
+                    m_CustomOverflow.Add(b);
+                    break;
+                }
+            }
+         }
+
+        /// <summary>Intelligently blend the contents of two states.</summary>
+        /// <param name="stateA">The first state, corresponding to t=0</param>
+        /// <param name="stateB">The second state, corresponding to t=1</param>
+        /// <param name="t">How much to interpolate.  Internally clamped to 0..1</param>
+        /// <returns>Linearly interpolated CameraState</returns>
+        public static CameraState Lerp(CameraState stateA, CameraState stateB, float t)
+        {
+            t = Mathf.Clamp01(t);
+            float adjustedT = t;
+
+            CameraState state = new CameraState();
+            state.Lens = LensSettings.Lerp(stateA.Lens, stateB.Lens, t);
+            state.ReferenceUp = Vector3.Slerp(stateA.ReferenceUp, stateB.ReferenceUp, t);
+            state.RawPosition = Vector3.Lerp(stateA.RawPosition, stateB.RawPosition, t);
+
+            state.ShotQuality = Mathf.Lerp(stateA.ShotQuality, stateB.ShotQuality, t);
+            state.PositionCorrection = Vector3.Lerp(
+                    stateA.PositionCorrection, stateB.PositionCorrection, t);
+            // GML todo: is this right?  Can it introduce a roll?
+            state.OrientationCorrection = Quaternion.Slerp(
+                    stateA.OrientationCorrection, stateB.OrientationCorrection, t);
+
+            Vector3 dirTarget = Vector3.zero;
+            if (!stateA.HasLookAt || !stateB.HasLookAt)
+                state.ReferenceLookAt = kNoPoint;   // can't interpolate if undefined
+            else
+            {
+                // Re-interpolate FOV to preserve target composition, if possible
+                float fovA = stateA.Lens.FieldOfView;
+                float fovB = stateB.Lens.FieldOfView;
+                if (!state.Lens.Orthographic && !Mathf.Approximately(fovA, fovB))
+                {
+                    LensSettings lens = state.Lens;
+                    lens.FieldOfView = state.InterpolateFOV(
+                            fovA, fovB,
+                            Mathf.Max((stateA.ReferenceLookAt - stateA.CorrectedPosition).magnitude, stateA.Lens.NearClipPlane),
+                            Mathf.Max((stateB.ReferenceLookAt - stateB.CorrectedPosition).magnitude, stateB.Lens.NearClipPlane), t);
+                    state.Lens = lens;
+
+                    // Make sure we preserve the screen composition through FOV changes
+                    adjustedT = Mathf.Abs((lens.FieldOfView - fovA) / (fovB - fovA));
+                }
+
+                // Linear interpolation of lookAt target point
+                state.ReferenceLookAt = Vector3.Lerp(
+                        stateA.ReferenceLookAt, stateB.ReferenceLookAt, adjustedT);
+                
+                // If orientations are different, use LookAt to blend them
+                float angle = Quaternion.Angle(stateA.RawOrientation, stateB.RawOrientation);
+                if (angle > UnityVectorExtensions.Epsilon)
+                    dirTarget = state.ReferenceLookAt - state.CorrectedPosition;
+            }
+
+            // Clever orientation interpolation
+            if (dirTarget.AlmostZero())
+            {
+                // Don't know what we're looking at - can only slerp
+                state.RawOrientation = UnityQuaternionExtensions.SlerpWithReferenceUp(
+                        stateA.RawOrientation, stateB.RawOrientation, t, state.ReferenceUp);
+            }
+            else
+            {
+                // Rotate while preserving our lookAt target
+                dirTarget = dirTarget.normalized;
+                if ((dirTarget - state.ReferenceUp).AlmostZero()
+                    || (dirTarget + state.ReferenceUp).AlmostZero())
+                {
+                    // Looking up or down at the pole
+                    state.RawOrientation = UnityQuaternionExtensions.SlerpWithReferenceUp(
+                            stateA.RawOrientation, stateB.RawOrientation, t, state.ReferenceUp);
+                }
+                else
+                {
+                    // Put the target in the center
+                    state.RawOrientation = Quaternion.LookRotation(dirTarget, state.ReferenceUp);
+
+                    // Blend the desired offsets from center
+                    Vector2 deltaA = -stateA.RawOrientation.GetCameraRotationToTarget(
+                            stateA.ReferenceLookAt - stateA.CorrectedPosition, stateA.ReferenceUp);
+                    Vector2 deltaB = -stateB.RawOrientation.GetCameraRotationToTarget(
+                            stateB.ReferenceLookAt - stateB.CorrectedPosition, stateB.ReferenceUp);
+                    state.RawOrientation = state.RawOrientation.ApplyCameraRotation(
+                            Vector2.Lerp(deltaA, deltaB, adjustedT), state.ReferenceUp);
+                }
+            }
+
+            // Accumulate the custom blendables and apply the weights
+            for (int i = 0; i < stateA.NumCustomBlendables; ++i)
+            {
+                CustomBlendable b = stateA.GetCustomBlendable(i);
+                b.m_Weight *= (1-t);
+                if (b.m_Weight > UnityVectorExtensions.Epsilon)
+                    state.AddCustomBlendable(b);
+            }
+            for (int i = 0; i < stateB.NumCustomBlendables; ++i)
+            {
+                CustomBlendable b = stateB.GetCustomBlendable(i);
+                b.m_Weight *= t;
+                if (b.m_Weight > UnityVectorExtensions.Epsilon)
+                    state.AddCustomBlendable(b);
+            }
+            return state;
+        }
+
+        float InterpolateFOV(float fovA, float fovB, float dA, float dB, float t)
+        {
+            // We interpolate shot height
+            float hA = dA * 2f * Mathf.Tan(fovA * Mathf.Deg2Rad / 2f);
+            float hB = dB * 2f * Mathf.Tan(fovB * Mathf.Deg2Rad / 2f);
+            float h = Mathf.Lerp(hA, hB, t);
+            float fov = 179f;
+            float d = Mathf.Lerp(dA, dB, t);
+            if (d > UnityVectorExtensions.Epsilon)
+                fov = 2f * Mathf.Atan(h / (2 * d)) * Mathf.Rad2Deg;
+            return Mathf.Clamp(fov, Mathf.Min(fovA, fovB), Mathf.Max(fovA, fovB));
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4000a136795bb91fc5d64916cf59e844438e62b7
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CameraState.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c2a918f460a69394eb9726b31e1d404c
+timeCreated: 1488314898
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2e8da481a27a495130712b0df75359d671c2a059
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs
@@ -0,0 +1,207 @@
+using System;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Describes a blend between 2 Cinemachine Virtual Cameras, and holds the
+    /// current state of the blend.
+    /// </summary>
+    public class CinemachineBlend
+    {
+        /// <summary>First camera in the blend</summary>
+        public ICinemachineCamera CamA { get; set; }
+
+        /// <summary>Second camera in the blend</summary>
+        public ICinemachineCamera CamB { get; set; }
+
+        /// <summary>The curve that describes the way the blend transitions over time
+        /// from the first camera to the second.  X-axis is time in seconds over which
+        /// the blend takes place and Y axis is blend weight (0..1)</summary>
+        public AnimationCurve BlendCurve { get; set; }
+
+        /// <summary>The current time relative to the start of the blend</summary>
+        public float TimeInBlend { get; set; }
+
+        /// <summary>The current weight of the blend.  This is an evaluation of the
+        /// BlendCurve at the current time relative to the start of the blend.
+        /// 0 means camA, 1 means camB.</summary>
+        public float BlendWeight
+        { 
+            get { return BlendCurve != null ? BlendCurve.Evaluate(TimeInBlend) : 0; } 
+        }
+
+        /// <summary>Validity test for the blend.  True if both cameras are defined.</summary>
+        public bool IsValid
+        {
+            get { return (CamA != null || CamB != null); }
+        }
+
+        /// <summary>Duration in seconds of the blend.
+        /// This is given read from the BlendCurve.</summary>
+        public float Duration { get; set; }
+
+        /// <summary>True if the time relative to the start of the blend is greater
+        /// than or equal to the blend duration</summary>
+        public bool IsComplete { get { return TimeInBlend >= Duration; } }
+
+        /// <summary>Text description of the blend, for debugging</summary>
+        public string Description
+        {
+            get
+            {
+                string fromName = (CamA != null) ? "[" + CamA.Name + "]": "(none)";
+                string toName = (CamB != null) ? "[" + CamB.Name + "]" : "(none)";
+                int percent = (int)(BlendWeight * 100f);
+                return string.Format("{0} {1}% from {2}", toName, percent, fromName);
+            }
+        }
+
+        /// <summary>Does the blend use a specific Cinemachine Virtual Camera?</summary>
+        /// <param name="cam">The camera to test</param>
+        /// <returns>True if the camera is involved in the blend</returns>
+        public bool Uses(ICinemachineCamera cam)
+        {
+            if (cam == CamA || cam == CamB)
+                return true;
+            BlendSourceVirtualCamera b = CamA as BlendSourceVirtualCamera;
+            if (b != null && b.Blend.Uses(cam))
+                return true;
+            b = CamB as BlendSourceVirtualCamera;
+            if (b != null && b.Blend.Uses(cam))
+                return true;
+            return false;
+        }
+
+        /// <summary>Construct a blend</summary>
+        /// <param name="a">First camera</param>
+        /// <param name="b">Second camera</param>
+        /// <param name="curve">Blend curve</param>
+        /// <param name="t">Current time in blend, relative to the start of the blend</param>
+        public CinemachineBlend(
+            ICinemachineCamera a, ICinemachineCamera b, AnimationCurve curve, float duration, float t)
+        {
+            if (a == null || b == null)
+                throw new ArgumentException("Blend cameras cannot be null");
+            CamA = a;
+            CamB = b;
+            BlendCurve = curve;
+            TimeInBlend = t;
+            Duration = duration;
+        }
+
+        /// <summary>Make sure the source cameras get updated.</summary>
+        /// <param name="worldUp">Default world up.  Individual vcams may modify this</param>
+        /// <param name="deltaTime">Time increment used for calculating time-based behaviours (e.g. damping)</param>
+        public void UpdateCameraState(Vector3 worldUp, float deltaTime)
+        {
+            // Make sure both cameras have been updated (they are not necessarily
+            // enabled, and only enabled cameras get updated automatically
+            // every frame)
+            CinemachineCore.Instance.UpdateVirtualCamera(CamA, worldUp, deltaTime);
+            CinemachineCore.Instance.UpdateVirtualCamera(CamB, worldUp, deltaTime);
+        }
+
+        /// <summary>Compute the blended CameraState for the current time in the blend.</summary>
+        public CameraState State { get { return CameraState.Lerp(CamA.State, CamB.State, BlendWeight); } }
+    }
+
+    /// <summary>Definition of a Camera blend.  This struct holds the information
+    /// necessary to generate a suitable AnimationCurve for a Cinemachine Blend.</summary>
+    [Serializable]
+    [DocumentationSorting(10.2f, DocumentationSortingAttribute.Level.UserRef)]
+    public struct CinemachineBlendDefinition
+    {
+        /// <summary>Supported predefined shapes for the blend curve.</summary>
+        [DocumentationSorting(10.21f, DocumentationSortingAttribute.Level.UserRef)]
+        public enum Style
+        {
+            /// <summary>Zero-length blend</summary>
+            Cut,
+            /// <summary>S-shaped curve, giving a gentle and smooth transition</summary>
+            EaseInOut,
+            /// <summary>Linear out of the outgoing shot, and easy into the incoming</summary>
+            EaseIn,
+            /// <summary>Easy out of the outgoing shot, and linear into the incoming</summary>
+            EaseOut,
+            /// <summary>Easy out of the outgoing, and hard into the incoming</summary>
+            HardIn,
+            /// <summary>Hard out of the outgoing, and easy into the incoming</summary>
+            HardOut,
+            /// <summary>Linear blend.  Mechanical-looking.</summary>
+            Linear
+        };
+
+        /// <summary>The shape of the blend curve.</summary>
+        [Tooltip("Shape of the blend curve")]
+        public Style m_Style;
+
+        /// <summary>The duration (in seconds) of the blend</summary>
+        [Tooltip("Duration of the blend, in seconds")]
+        public float m_Time;
+
+        /// <summary>Constructor</summary>
+        /// <param name="style">The shape of the blend curve.</param>
+        /// <param name="time">The duration (in seconds) of the blend</param>
+        public CinemachineBlendDefinition(Style style, float time)
+        {
+            m_Style = style;
+            m_Time = time;
+        }
+
+        /// <summary>
+        /// An AnimationCurve specifying the interpolation duration and value
+        /// for this camera blend. The time of the last key frame is assumed to the be the
+        /// duration of the blend. Y-axis values must be in range [0,1] (internally clamped
+        /// within Blender) and time must be in range of [0, +infinity)
+        /// </summary>
+        public AnimationCurve BlendCurve
+        {
+            get
+            {
+                float time = Mathf.Max(0, m_Time);
+                switch (m_Style)
+                {
+                    default:
+                    case Style.Cut: return new AnimationCurve();
+                    case Style.EaseInOut: return AnimationCurve.EaseInOut(0f, 0f, time, 1f);
+                    case Style.EaseIn:
+                    {
+                        AnimationCurve curve = AnimationCurve.Linear(0f, 0f, time, 1f);
+                        Keyframe[] keys = curve.keys;
+                        keys[1].inTangent = 0;
+                        curve.keys = keys;
+                        return curve;
+                    }
+                    case Style.EaseOut:
+                    {
+                        AnimationCurve curve = AnimationCurve.Linear(0f, 0f, time, 1f);
+                        Keyframe[] keys = curve.keys;
+                        keys[0].outTangent = 0;
+                        curve.keys = keys;
+                        return curve;
+                    }
+                    case Style.HardIn:
+                    {
+                        AnimationCurve curve = AnimationCurve.Linear(0f, 0f, time, 1f);
+                        Keyframe[] keys = curve.keys;
+                        keys[0].outTangent = 0;
+                        keys[1].inTangent = 1.5708f; // pi/2 = up
+                        curve.keys = keys;
+                        return curve;
+                    }
+                    case Style.HardOut:
+                    {
+                        AnimationCurve curve = AnimationCurve.Linear(0f, 0f, time, 1f);
+                        Keyframe[] keys = curve.keys;
+                        keys[0].outTangent = 1.5708f; // pi/2 = up
+                        keys[1].inTangent = 0;
+                        curve.keys = keys;
+                        return curve;
+                    }
+                    case Style.Linear: return AnimationCurve.Linear(0f, 0f, time, 1f);
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..71ba1aacbeaeb64285be97cedf1a50df6b887f04
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3fed8968b96eb924891cf86f5c51f661
+timeCreated: 1484407000
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8abb672e6e1095bda66d6bb80b69b0e24e0ca221
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs
@@ -0,0 +1,95 @@
+using UnityEngine;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Asset that defines the rules for blending between Virtual Cameras.
+    /// </summary>
+    [DocumentationSorting(10, DocumentationSortingAttribute.Level.UserRef)]
+    [Serializable]
+    public sealed class CinemachineBlenderSettings : ScriptableObject
+    {
+        /// <summary>
+        /// Container specifying how two specific Cinemachine Virtual Cameras
+        /// blend together.
+        /// </summary>
+        [DocumentationSorting(10.1f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct CustomBlend
+        {
+            [Tooltip("When blending from this camera")]
+            public string m_From;
+
+            [Tooltip("When blending to this camera")]
+            public string m_To;
+
+            [Tooltip("Blend curve definition")]
+            public CinemachineBlendDefinition m_Blend;
+        }
+        /// <summary>The array containing explicitly defined blends between two Virtual Cameras</summary>
+        [Tooltip("The array containing explicitly defined blends between two Virtual Cameras")]
+        public CustomBlend[] m_CustomBlends = null;
+
+        /// <summary>Internal API for the inspector editopr: a label to represent any camera</summary>
+        public const string kBlendFromAnyCameraLabel = "**ANY CAMERA**";
+
+        /// <summary>
+        /// Attempts to find a blend curve which matches the to and from cameras as specified.
+        /// If no match is found, the function returns either the
+        /// default blend for this Blender or NULL depending on the state
+        /// of <b>returnDefaultOnNoMatch</b>.
+        /// </summary>
+        /// <param name="fromCameraName">The game object name of the from camera</param>
+        /// <param name="toCameraName">The game object name of the to camera</param>
+        /// <param name="defaultCurve">Curve to return if no curve found.  Can be NULL.</param>
+        /// <returns></returns>
+        public AnimationCurve GetBlendCurveForVirtualCameras(
+            string fromCameraName, string toCameraName, AnimationCurve defaultCurve)
+        {
+            AnimationCurve anyToMe = null;
+            AnimationCurve meToAny = null;
+            if (m_CustomBlends != null)
+            {
+                for (int i = 0; i < m_CustomBlends.Length; ++i)
+                {
+                    // Attempt to find direct name first
+                    CustomBlend blendParams = m_CustomBlends[i];
+                    if ((blendParams.m_From == fromCameraName)
+                        && (blendParams.m_To == toCameraName))
+                    {
+                        return blendParams.m_Blend.BlendCurve;
+                    }
+                    // If we come across default applicable wildcards, remember them
+                    if (blendParams.m_From == kBlendFromAnyCameraLabel)
+                    {
+                        if (!string.IsNullOrEmpty(toCameraName)
+                            && blendParams.m_To == toCameraName)
+                        {
+                            anyToMe = blendParams.m_Blend.BlendCurve;
+                        }
+                        else if (blendParams.m_To == kBlendFromAnyCameraLabel)
+                            defaultCurve = blendParams.m_Blend.BlendCurve;
+                    }
+                    else if (blendParams.m_To == kBlendFromAnyCameraLabel
+                             && !string.IsNullOrEmpty(fromCameraName)
+                             && blendParams.m_From == fromCameraName)
+                    {
+                        meToAny = blendParams.m_Blend.BlendCurve;
+                    }
+                }
+            }
+
+            // If nothing is found try to find wild card blends from any
+            // camera to our new one
+            if (anyToMe != null)
+                return anyToMe;
+
+            // Still have nothing? Try from our camera to any camera
+            if (meToAny != null)
+                return meToAny;
+
+            return defaultCurve;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..7a50b50b31c44d6ce9c6ffa455c83a0721d273e8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 36baaa8bdcb9d8b49b9199833965d2c3
+timeCreated: 1486497606
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cfcbaf8c902f93d4e92dda88ec22dea108358d6a
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs
@@ -0,0 +1,77 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An abstract representation of a mutator acting on a Cinemachine Virtual Camera
+    /// </summary>
+    [DocumentationSorting(24, DocumentationSortingAttribute.Level.API)]
+    public abstract class CinemachineComponentBase : MonoBehaviour
+    {
+        /// <summary>Useful constant for very small floats</summary>
+        protected const float Epsilon = Utility.UnityVectorExtensions.Epsilon;
+
+        /// <summary>Get the associated CinemachineVirtualCameraBase</summary>
+        public CinemachineVirtualCameraBase VirtualCamera 
+        { 
+            get
+            {
+                if (m_vcamOwner == null)
+                    m_vcamOwner = gameObject.transform.parent.gameObject.GetComponent<CinemachineVirtualCameraBase>();
+                return m_vcamOwner;
+            }
+        }
+        CinemachineVirtualCameraBase m_vcamOwner;
+
+        /// <summary>Returns the owner vcam's Follow target.</summary>
+        public Transform FollowTarget 
+        {
+            get 
+            {
+                CinemachineVirtualCameraBase vcam = VirtualCamera;
+                return vcam == null ? null : vcam.Follow;
+            }
+        }
+
+        /// <summary>Returns the owner vcam's LookAt target.</summary>
+        public Transform LookAtTarget 
+        {
+            get 
+            {
+                CinemachineVirtualCameraBase vcam = VirtualCamera;
+                return vcam == null ? null : vcam.LookAt;
+            }
+        }
+
+        /// <summary>Returns the owner vcam's CameraState.</summary>
+        public CameraState VcamState
+        {
+            get
+            {
+                CinemachineVirtualCameraBase vcam = VirtualCamera;
+                return vcam == null ? CameraState.Default : vcam.State;
+            }
+        }
+
+        /// <summary>Returns true if this object is enabled and set up to produce results.</summary>
+        public abstract bool IsValid { get; }
+
+        /// <summary>Override this to do such things as offset the RefereceLookAt.
+        /// Base class implementation does nothing.</summary>
+        /// <param name="curState">Input state that must be mutated</param>
+        public virtual void PrePipelineMutateCameraState(ref CameraState state) {}
+
+        /// <summary>What part of the pipeline this fits into</summary>
+        public abstract CinemachineCore.Stage Stage { get; }
+
+        /// <summary>Mutates the camera state.  This state will later be applied to the camera.</summary>
+        /// <param name="curState">Input state that must be mutated</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        public abstract void MutateCameraState(ref CameraState curState, float deltaTime);
+
+        /// <summary>API for the editor, to process a position drag from the user.
+        /// Base class implementation does nothing.</summary>
+        /// <param name="delta">The amount dragged this frame</param>
+        public virtual void OnPositionDragged(Vector3 delta) {}
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9d675372ee1202caeafc439c0d377748a24b36f8
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b2f73bdc979030e419f33c10913639cc
+timeCreated: 1510078351
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8bf68770bf1cd08834ab8cd9d37535e017381338
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs
@@ -0,0 +1,429 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+namespace Cinemachine
+{
+    /// <summary>A singleton that manages complete lists of CinemachineBrain and,
+    /// Cinemachine Virtual Cameras, and the priority queue.  Provides
+    /// services to keeping track of whether Cinemachine Virtual Cameras have
+    /// been updated each frame.</summary>
+    public sealed class CinemachineCore
+    {
+        /// <summary>Data version string.  Used to upgrade from legacy projects</summary>
+        public static readonly int kStreamingVersion = 20170927;
+
+        /// <summary>Human-readable Cinemachine Version</summary>
+        public static readonly string kVersionString = "2.1";
+
+        /// <summary>
+        /// Stages in the Cinemachine Component pipeline, used for
+        /// UI organization>.  This enum defines the pipeline order.
+        /// </summary>
+        public enum Stage
+        {
+            /// <summary>Second stage: position the camera in space</summary>
+            Body,
+
+            /// <summary>Third stage: orient the camera to point at the target</summary>
+            Aim,
+
+            /// <summary>Final stage: apply noise (this is done separately, in the
+            /// Correction channel of the CameraState)</summary>
+            Noise
+        };
+
+        private static CinemachineCore sInstance = null;
+
+        /// <summary>Get the singleton instance</summary>
+        public static CinemachineCore Instance
+        {
+            get
+            {
+                if (sInstance == null)
+                    sInstance = new CinemachineCore();
+                return sInstance;
+            }
+        }
+
+        /// <summary>
+        /// If true, show hidden Cinemachine objects, to make manual script mapping possible.
+        /// </summary>
+        public static bool sShowHiddenObjects = false;
+
+        /// <summary>Delegate for overriding Unity's default input system.  Returns the value
+        /// of the named axis.</summary>
+        public delegate float AxisInputDelegate(string axisName);
+
+        /// <summary>Delegate for overriding Unity's default input system.
+        /// If you set this, then your delegate will be called instead of
+        /// System.Input.GetAxis(axisName) whenever in-game user input is needed.</summary>
+        public static AxisInputDelegate GetInputAxis = UnityEngine.Input.GetAxis;
+
+        /// <summary>List of all active CinemachineBrains.</summary>
+        private List<CinemachineBrain> mActiveBrains = new List<CinemachineBrain>();
+
+        /// <summary>Access the array of active CinemachineBrains in the scene</summary>
+        public int BrainCount { get { return mActiveBrains.Count; } }
+
+        /// <summary>Access the array of active CinemachineBrains in the scene 
+        /// without gebnerating garbage</summary>
+        /// <param name="index">Index of the brain to access, range 0-BrainCount</param>
+        /// <returns>The brain at the specified index</returns>
+        public CinemachineBrain GetActiveBrain(int index)
+        {
+            return mActiveBrains[index];
+        }
+
+        /// <summary>Called when a CinemachineBrain is enabled.</summary>
+        internal void AddActiveBrain(CinemachineBrain brain)
+        {
+            // First remove it, just in case it's being added twice
+            RemoveActiveBrain(brain);
+            mActiveBrains.Insert(0, brain);
+        }
+
+        /// <summary>Called when a CinemachineBrain is disabled.</summary>
+        internal void RemoveActiveBrain(CinemachineBrain brain)
+        {
+            mActiveBrains.Remove(brain);
+        }
+
+        /// <summary>List of all active ICinemachineCameras.</summary>
+        private List<ICinemachineCamera> mActiveCameras = new List<ICinemachineCamera>();
+
+        /// <summary>
+        /// List of all active Cinemachine Virtual Cameras for all brains.
+        /// This list is kept sorted by priority.
+        /// </summary>
+        public int VirtualCameraCount { get { return mActiveCameras.Count; } }
+
+        /// <summary>Access the array of active ICinemachineCamera in the scene 
+        /// without gebnerating garbage</summary>
+        /// <param name="index">Index of the camera to access, range 0-VirtualCameraCount</param>
+        /// <returns>The virtual camera at the specified index</returns>
+        public ICinemachineCamera GetVirtualCamera(int index)
+        {
+            return mActiveCameras[index];
+        }
+
+        /// <summary>Called when a Cinemachine Virtual Camera is enabled.</summary>
+        internal void AddActiveCamera(ICinemachineCamera vcam)
+        {
+            // Bring it to the top of the list
+            RemoveActiveCamera(vcam);
+
+            // Keep list sorted by priority
+            int insertIndex;
+            for (insertIndex = 0; insertIndex < mActiveCameras.Count; ++insertIndex)
+                if (vcam.Priority >= mActiveCameras[insertIndex].Priority)
+                    break;
+
+            mActiveCameras.Insert(insertIndex, vcam);
+        }
+
+        /// <summary>Called when a Cinemachine Virtual Camera is disabled.</summary>
+        internal void RemoveActiveCamera(ICinemachineCamera vcam)
+        {
+            mActiveCameras.Remove(vcam);
+        }
+
+        // Registry of all vcams that are parented (i.e. slaves of) to other vcams
+        private List<List<ICinemachineCamera>> mChildCameras = new List<List<ICinemachineCamera>>();
+
+        /// <summary>Called when a child vcam is enabled.</summary>
+        internal void AddChildCamera(ICinemachineCamera vcam)
+        {
+            RemoveChildCamera(vcam);
+
+            int parentLevel = 0;
+            for (ICinemachineCamera p = vcam; p != null; p = p.ParentCamera)
+                ++parentLevel;
+            while (mChildCameras.Count < parentLevel)
+                mChildCameras.Add(new List<ICinemachineCamera>());
+            mChildCameras[parentLevel-1].Add(vcam);
+        }
+
+        /// <summary>Called when a child vcam is disabled.</summary>
+        internal void RemoveChildCamera(ICinemachineCamera vcam)
+        {
+            for (int i = 0; i < mChildCameras.Count; ++i)
+                mChildCameras[i].Remove(vcam);
+        }
+
+        /// <summary>Update all the active vcams in the scene, in the correct dependency order.</summary>
+        internal void UpdateAllActiveVirtualCameras(Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineCore.UpdateAllActiveVirtualCameras");
+            int numCameras;
+
+            // Update the leaf-most cameras first
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineCore.UpdateAllActiveVirtualCameras.leaf-most");
+            for (int i = mChildCameras.Count-1; i >= 0; --i)
+            {
+                numCameras = mChildCameras[i].Count;
+                for (int j = 0; j < numCameras; ++j)
+                    UpdateVirtualCamera(mChildCameras[i][j], worldUp, deltaTime);
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+
+            // Then all the top-level cameras
+            numCameras = VirtualCameraCount;
+            for (int i = 0; i < numCameras; ++i)
+                UpdateVirtualCamera(GetVirtualCamera(i), worldUp, deltaTime);
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        /// <summary>
+        /// Update a single Cinemachine Virtual Camera if and only if it
+        /// hasn't already been updated this frame.  Always update vcams via this method.
+        /// Calling this more than once per frame for the same camera will have no effect.
+        /// </summary>
+        internal bool UpdateVirtualCamera(ICinemachineCamera vcam, Vector3 worldUp, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachineCore.UpdateVirtualCamera");
+            int now = Time.frameCount;
+            UpdateFilter filter = CurrentUpdateFilter;
+            bool isSmartUpdate = filter != UpdateFilter.ForcedFixed 
+                && filter != UpdateFilter.ForcedLate;
+            bool isSmartLateUpdate = filter == UpdateFilter.Late;
+            if (!isSmartUpdate)
+            {
+                if (filter == UpdateFilter.ForcedFixed)
+                    filter = UpdateFilter.Fixed;
+                if (filter == UpdateFilter.ForcedLate)
+                    filter = UpdateFilter.Late;
+            }
+
+            if (mUpdateStatus == null)
+                mUpdateStatus = new Dictionary<ICinemachineCamera, UpdateStatus>();
+            if (vcam.VirtualCameraGameObject == null)
+            {
+                if (mUpdateStatus.ContainsKey(vcam))
+                    mUpdateStatus.Remove(vcam);
+                //UnityEngine.Profiling.Profiler.EndSample();
+                return false; // camera was deleted
+            }
+            UpdateStatus status;
+            if (!mUpdateStatus.TryGetValue(vcam, out status))
+            {
+                status = new UpdateStatus(now);
+                mUpdateStatus.Add(vcam, status);
+            }
+
+            int subframes = isSmartLateUpdate ? 1 : CinemachineBrain.GetSubframeCount();
+            if (status.lastUpdateFrame != now)
+                status.lastUpdateSubframe = 0;
+
+            // If we're in smart update mode and the target moved, then we must examine
+            // how the target has been moving recently in order to figure out whether to
+            // update now
+            bool updateNow = !isSmartUpdate;
+            if (isSmartUpdate)
+            {
+                Matrix4x4 targetPos;
+                if (!GetTargetPosition(vcam, out targetPos))
+                    updateNow = isSmartLateUpdate; // no target
+                else
+                    updateNow = status.ChoosePreferredUpdate(now, targetPos, filter) 
+                        == filter;
+            }
+
+            if (updateNow)
+            {
+                status.preferredUpdate = filter;
+                while (status.lastUpdateSubframe < subframes)
+                {
+//Debug.Log(vcam.Name + ": frame " + Time.frameCount + "." + status.lastUpdateSubframe + ", " + CurrentUpdateFilter + ", deltaTime = " + deltaTime);
+                    vcam.UpdateCameraState(worldUp, deltaTime);
+                    ++status.lastUpdateSubframe;
+                }
+                status.lastUpdateFrame = now;
+            }
+
+            mUpdateStatus[vcam] = status;
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return true;
+        }
+
+        struct UpdateStatus
+        {
+            const int kWindowSize = 30;
+
+            public int lastUpdateFrame;
+            public int lastUpdateSubframe;
+
+            public int windowStart;
+            public int numWindowLateUpdateMoves;
+            public int numWindowFixedUpdateMoves;
+            public int numWindows;
+            public UpdateFilter preferredUpdate;
+
+            public Matrix4x4 targetPos;
+
+            public UpdateStatus(int currentFrame)
+            {
+                lastUpdateFrame = -1;
+                lastUpdateSubframe = 0;
+                windowStart = currentFrame;
+                numWindowLateUpdateMoves = 0;
+                numWindowFixedUpdateMoves = 0;
+                numWindows = 0;
+                preferredUpdate = UpdateFilter.Late;
+                targetPos = Matrix4x4.zero;
+            }
+
+            // Important: updateFilter may ONLY be Late or Fixed
+            public UpdateFilter ChoosePreferredUpdate(
+                int currentFrame, Matrix4x4 pos, UpdateFilter updateFilter)
+            {
+                if (targetPos != pos)
+                {
+                    if (updateFilter == UpdateFilter.Late)
+                        ++numWindowLateUpdateMoves;
+                    else if (lastUpdateSubframe == 0)
+                        ++numWindowFixedUpdateMoves;
+                    targetPos = pos;
+                }
+                //Debug.Log("Fixed=" + numWindowFixedUpdateMoves + ", Late=" + numWindowLateUpdateMoves);
+                UpdateFilter choice = preferredUpdate;
+                bool inconsistent = numWindowLateUpdateMoves > 0 && numWindowFixedUpdateMoves > 0;
+                if (inconsistent || numWindowLateUpdateMoves >= numWindowFixedUpdateMoves)
+                    choice = UpdateFilter.Late;
+                else
+                    choice = UpdateFilter.Fixed;
+                if (numWindows == 0)
+                    preferredUpdate = choice;
+ 
+                if (windowStart + kWindowSize <= currentFrame)
+                {
+                    preferredUpdate = choice;
+                    ++numWindows;
+                    windowStart = currentFrame;
+                    numWindowLateUpdateMoves = numWindowFixedUpdateMoves = 0;
+                }
+                return preferredUpdate;
+            }
+        }
+        Dictionary<ICinemachineCamera, UpdateStatus> mUpdateStatus;
+
+        /// <summary>Internal use only</summary>
+        public enum UpdateFilter { Fixed, ForcedFixed, Late, ForcedLate };
+        internal UpdateFilter CurrentUpdateFilter { get; set; }
+        private static bool GetTargetPosition(ICinemachineCamera vcam, out Matrix4x4 targetPos)
+        {
+            ICinemachineCamera vcamTarget = vcam.LiveChildOrSelf;
+            if (vcamTarget == null || vcamTarget.VirtualCameraGameObject == null)
+            {
+                targetPos = Matrix4x4.identity;
+                return false;
+            }
+            targetPos = vcamTarget.VirtualCameraGameObject.transform.localToWorldMatrix;
+            if (vcamTarget.LookAt != null)
+            {
+                targetPos = vcamTarget.LookAt.localToWorldMatrix;
+                return true;
+            }
+            if (vcamTarget.Follow != null)
+            {
+                targetPos = vcamTarget.Follow.localToWorldMatrix;
+                return true;
+            }
+            // If no target, use the vcam itself
+            targetPos = vcam.VirtualCameraGameObject.transform.localToWorldMatrix;
+            return true;
+        }
+
+        /// <summary>Internal use only</summary>
+        public UpdateFilter GetVcamUpdateStatus(ICinemachineCamera vcam)
+        {
+            UpdateStatus status;
+            if (mUpdateStatus == null || !mUpdateStatus.TryGetValue(vcam, out status))
+                return UpdateFilter.Late;
+            return status.preferredUpdate;
+        }
+
+        /// <summary>
+        /// Is this virtual camera currently actively controlling any Camera?
+        /// </summary>
+        public bool IsLive(ICinemachineCamera vcam)
+        {
+            if (vcam != null)
+            {
+                for (int i = 0; i < BrainCount; ++i)
+                {
+                    CinemachineBrain b = GetActiveBrain(i);
+                    if (b != null && b.IsLive(vcam))
+                        return true;
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Signal that the virtual has been activated.
+        /// If the camera is live, then all CinemachineBrains that are showing it will
+        /// send an activation event.
+        /// </summary>
+        public void GenerateCameraActivationEvent(ICinemachineCamera vcam)
+        {
+            if (vcam != null)
+            {
+                for (int i = 0; i < BrainCount; ++i)
+                {
+                    CinemachineBrain b = GetActiveBrain(i);
+                    if (b != null && b.IsLive(vcam))
+                        b.m_CameraActivatedEvent.Invoke(vcam);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Signal that the virtual camera's content is discontinuous WRT the previous frame.
+        /// If the camera is live, then all CinemachineBrains that are showing it will send a cut event.
+        /// </summary>
+        public void GenerateCameraCutEvent(ICinemachineCamera vcam)
+        {
+            if (vcam != null)
+            {
+                for (int i = 0; i < BrainCount; ++i)
+                {
+                    CinemachineBrain b = GetActiveBrain(i);
+                    if (b != null && b.IsLive(vcam))
+                        b.m_CameraCutEvent.Invoke(b);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Try to find a CinemachineBrain to associate with a
+        /// Cinemachine Virtual Camera.  The first CinemachineBrain
+        /// in which this Cinemachine Virtual Camera is live will be used.
+        /// If none, then the first active CinemachineBrain will be used.
+        /// Brains with OutputCamera == null will not be returned.
+        /// Final result may be null.
+        /// </summary>
+        /// <param name="vcam">Virtual camera whose potential brain we need.</param>
+        /// <returns>First CinemachineBrain found that might be
+        /// appropriate for this vcam, or null</returns>
+        public CinemachineBrain FindPotentialTargetBrain(ICinemachineCamera vcam)
+        {
+            int numBrains = BrainCount;
+            if (vcam != null && numBrains > 1)
+            {
+                for (int i = 0; i < numBrains; ++i)
+                {
+                    CinemachineBrain b = GetActiveBrain(i);
+                    if (b != null && b.OutputCamera != null && b.IsLive(vcam))
+                        return b;
+                }
+            }
+            for (int i = 0; i < numBrains; ++i)
+            {
+                CinemachineBrain b = GetActiveBrain(i);
+                if (b != null && b.OutputCamera != null)
+                    return b;
+            }
+            return null;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..84800d96294721cab269fcc35bc173ddea6af8b2
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c7d73314dfe49f8458398c6dc8edcda8
+timeCreated: 1484001119
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs
new file mode 100644
index 0000000000000000000000000000000000000000..77c4912d371465d165914dbc88e0cf2a04725f29
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs
@@ -0,0 +1,47 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+namespace Cinemachine.Utility
+{
+    /// <summary>Manages onscreen positions for Cinemachine debugging output</summary>
+    public class CinemachineGameWindowDebug
+    {
+        static HashSet<Object> mClients;
+
+        /// <summary>Release a screen rectangle previously obtained through GetScreenPos()</summary>
+        /// <param name="client">The client caller.  Used as a handle.</param>
+        public static void ReleaseScreenPos(Object client)
+        {
+            if (mClients != null && mClients.Contains(client))
+                mClients.Remove(client);
+        }
+
+        /// <summary>Reserve an on-screen rectangle for debugging output.</summary>
+        /// <param name="client">The client caller.  This is used as a handle.</param>
+        /// <param name="text">Sample text, for determining rectangle size</param>
+        /// <param name="style">What style will be used to draw, used here for
+        /// determining rect size</param>
+        /// <returns>An area on the game screen large enough to print the text
+        /// in the style indicated</returns>
+        public static Rect GetScreenPos(Object client, string text, GUIStyle style)
+        {
+            if (mClients == null)
+                mClients = new HashSet<Object>();
+            if (!mClients.Contains(client))
+                mClients.Add(client);
+
+            Vector2 pos = new Vector2(0, 0);
+            Vector2 size = style.CalcSize(new GUIContent(text));
+            if (mClients != null)
+            {
+                foreach (var c in mClients)
+                {
+                    if (c == client)
+                        break;
+                    pos.y += size.y;
+                }
+            }
+            return new Rect(pos, size);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..763e6f2044171ead6140cb3b93f58ea7c966221e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 10e6f8c815d3c4d45b1d98b951d53912
+timeCreated: 1481654954
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a993882620d6f69a2357fe71e7f7cbb7b7ec58c7
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs
@@ -0,0 +1,89 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Base class for a Cinemachine Virtual Camera extension module.
+    /// Hooks into the Cinemachine Pipeline.
+    /// </summary>
+    [DocumentationSorting(23, DocumentationSortingAttribute.Level.API)]
+    public abstract class CinemachineExtension : MonoBehaviour
+    {
+        /// <summary>Useful constant for very small floats</summary>
+        protected const float Epsilon = Utility.UnityVectorExtensions.Epsilon;
+
+        /// <summary>Get the associated CinemachineVirtualCameraBase</summary>
+        public CinemachineVirtualCameraBase VirtualCamera 
+        { 
+            get
+            {
+                if (m_vcamOwner == null)
+                    m_vcamOwner = GetComponent<CinemachineVirtualCameraBase>();
+                return m_vcamOwner;
+            }
+        }
+        CinemachineVirtualCameraBase m_vcamOwner;
+
+        /// <summary>Connect to virtual camera pipeline.
+        /// Override implementations must call this base implementation</summary>
+        protected virtual void Awake()
+        {
+            ConnectToVcam();
+        }
+
+        /// <summary>Disconnect from virtual camera pipeline.
+        /// Override implementations must call this base implementation</summary>
+        protected virtual void OnDestroy()
+        {
+            if (VirtualCamera != null)
+                VirtualCamera.RemovePostPipelineStageHook(PostPipelineStageCallback);
+        }
+
+        void ConnectToVcam()
+        {
+            if (VirtualCamera == null)
+                Debug.LogError("CinemachineExtension requires a Cinemachine Virtual Camera component");
+            else
+                VirtualCamera.AddPostPipelineStageHook(PostPipelineStageCallback);
+            mExtraState = null;
+        }
+
+        /// <summary>
+        /// This callback will be called after the virtual camera has implemented
+        /// each stage in the pipeline.  This method may modify the referenced state.
+        /// If deltaTime less than 0, reset all state info and perform no damping. 
+        /// </summary>
+        protected abstract void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime);
+
+        /// <summary>Because extensions can be placed on manager cams and will in that
+        /// case be called for all the vcam children, vcam-specific state information
+        /// should be stored here.  Just define a class to hold your state info
+        /// and use it exclusively when calling this.</summary>
+        protected T GetExtraState<T>(ICinemachineCamera vcam) where T : class, new()
+        {
+            if (mExtraState == null)
+                mExtraState = new Dictionary<ICinemachineCamera, System.Object>();
+            System.Object extra = null;
+            if (!mExtraState.TryGetValue(vcam, out extra))
+                extra = mExtraState[vcam] = new T();
+            return extra as T;
+        }
+
+        /// <summary>Ineffeicient method to get all extra state infor for all vcams.  
+        /// Intended for Editor use only, not runtime!
+        /// </summary>
+        protected List<T> GetAllExtraStates<T>() where T : class, new()
+        {
+            var list = new List<T>();
+            if (mExtraState != null)
+                foreach (var v in mExtraState)
+                    list.Add(v.Value as T);
+            return list;
+        }
+
+        private Dictionary<ICinemachineCamera, System.Object> mExtraState;
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..afa0ba245a50e56f9723c9ff38effbcd758e578c
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4fa53a91a43ae1a4bbf6b29961b45c38
+timeCreated: 1504804419
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6254b25fd4e89048b1c080a41dfeb647454c1c54
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs
@@ -0,0 +1,356 @@
+using UnityEngine;
+using Cinemachine.Utility;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>Abstract base class for a world-space path,
+    /// suitable for a camera dolly track.</summary>
+    public abstract class CinemachinePathBase : MonoBehaviour
+    {
+        /// <summary>Path samples per waypoint</summary>
+        [Tooltip("Path samples per waypoint.  This is used for calculating path distances.")]
+        [Range(1, 100)]
+        public int m_Resolution = 20;
+
+        /// <summary>This class holds the settings that control how the path
+        /// will appear in the editor scene view.  The path is not visible in the game view</summary>
+        [DocumentationSorting(18.1f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable] public class Appearance
+        {
+            [Tooltip("The color of the path itself when it is active in the editor")]
+            public Color pathColor = Color.green;
+            [Tooltip("The color of the path itself when it is inactive in the editor")]
+            public Color inactivePathColor = Color.gray;
+            [Tooltip("The width of the railroad-tracks that are drawn to represent the path")]
+            [Range(0f, 10f)]
+            public float width = 0.2f;
+        }
+        /// <summary>The settings that control how the path
+        /// will appear in the editor scene view.</summary>
+        [Tooltip("The settings that control how the path will appear in the editor scene view.")]
+        public Appearance m_Appearance = new Appearance();
+
+        /// <summary>The minimum value for the path position</summary>
+        public abstract float MinPos { get; }
+
+        /// <summary>The maximum value for the path position</summary>
+        public abstract float MaxPos { get; }
+
+        /// <summary>True if the path ends are joined to form a continuous loop</summary>
+        public abstract bool Looped { get; }
+
+        /// <summary>Get a normalized path position, taking spins into account if looped</summary>
+        /// <param name="pos">Position along the path</param>
+        /// <returns>Normalized position, between MinPos and MaxPos</returns>
+        public virtual float NormalizePos(float pos)
+        {
+            if (MaxPos == 0)
+                return 0;
+            if (Looped)
+            {
+                pos = pos % MaxPos;
+                if (pos < 0)
+                    pos += MaxPos;
+                return pos;
+            }
+            return Mathf.Clamp(pos, 0, MaxPos);
+        }
+
+        /// <summary>Get a worldspace position of a point along the path</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space position of the point along at path at pos</returns>
+        public abstract Vector3 EvaluatePosition(float pos);
+
+        /// <summary>Get the tangent of the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space direction of the path tangent.
+        /// Length of the vector represents the tangent strength</returns>
+        public abstract Vector3 EvaluateTangent(float pos);
+
+        /// <summary>Get the orientation the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <returns>World-space orientation of the path</returns>
+        public abstract Quaternion EvaluateOrientation(float pos);
+
+        /// <summary>Find the closest point on the path to a given worldspace target point.</summary>
+        /// <remarks>Performance could be improved by checking the bounding polygon of each segment,
+        /// and only entering the best segment(s)</remarks>
+        /// <param name="p">Worldspace target that we want to approach</param>
+        /// <param name="startSegment">In what segment of the path to start the search.
+        /// A Segment is a section of path between 2 waypoints.</param>
+        /// <param name="searchRadius">How many segments on either side of the startSegment
+        /// to search.  -1 means no limit, i.e. search the entire path</param>
+        /// <param name="stepsPerSegment">We search a segment by dividing it into this many
+        /// straight pieces.  The higher the number, the more accurate the result, but performance
+        /// is proportionally slower for higher numbers</param>
+        /// <returns>The position along the path that is closest to the target point.  
+        /// The value is in Path Units, not Distance units.</returns>
+        public virtual float FindClosestPoint(
+            Vector3 p, int startSegment, int searchRadius, int stepsPerSegment)
+        {
+            float start = MinPos;
+            float end = MaxPos;
+            if (searchRadius >= 0)
+            {
+                int r = Mathf.FloorToInt(Mathf.Min(searchRadius, (end - start) / 2f));
+                start = startSegment - r;
+                end = startSegment + r + 1;
+                if (!Looped)
+                {
+                    start = Mathf.Max(start, MinPos);
+                    end = Mathf.Max(end, MaxPos);
+                }
+            }
+            stepsPerSegment = Mathf.RoundToInt(Mathf.Clamp(stepsPerSegment, 1f, 100f));
+            float stepSize = 1f / stepsPerSegment;
+            float bestPos = startSegment;
+            float bestDistance = float.MaxValue;
+            int iterations = (stepsPerSegment == 1) ? 1 : 3;
+            for (int i = 0; i < iterations; ++i)
+            {
+                Vector3 v0 = EvaluatePosition(start);
+                for (float f = start + stepSize; f <= end; f += stepSize)
+                {
+                    Vector3 v = EvaluatePosition(f);
+                    float t = p.ClosestPointOnSegment(v0, v);
+                    float d = Vector3.SqrMagnitude(p - Vector3.Lerp(v0, v, t));
+                    if (d < bestDistance)
+                    {
+                        bestDistance = d;
+                        bestPos = f - (1 - t) * stepSize;
+                    }
+                    v0 = v;
+                }
+                start = bestPos - stepSize;
+                end = bestPos + stepSize;
+                stepSize /= stepsPerSegment;
+            }
+            return bestPos;
+        }
+
+        /// <summary>How to interpret the Path Position</summary>
+        public enum PositionUnits
+        {
+            /// <summary>Use PathPosition units, where 0 is first waypoint, 1 is second waypoint, etc</summary>
+            PathUnits,
+            /// <summary>Use Distance Along Path.  Path will be sampled according to its Resolution
+            /// setting, and a distance lookup table will be cached internally</summary>
+            Distance
+        }
+
+        /// <summary>Get the minimum value, for the given unity type</summary>
+        /// <param name="units">The uniot type</param>
+        /// <returns>The minimum allowable value for this path</returns>
+        public float MinUnit(PositionUnits units)
+        { 
+            return units == PositionUnits.Distance ? 0 : MinPos; 
+        }
+
+        /// <summary>Get the maximum value, for the given unity type</summary>
+        /// <param name="units">The uniot type</param>
+        /// <returns>The maximum allowable value for this path</returns>
+        public float MaxUnit(PositionUnits units)
+        { 
+            return units == PositionUnits.Distance ? PathLength : MaxPos; 
+        }
+
+        /// <summary>Normalize the unit, so that it lies between MinUmit and MaxUnit</summary>
+        /// <param name="pos">The value to be normalized</param>
+        /// <param name="units">The unit type</param>
+        /// <returns>The normalized value of pos, between MinUnit and MaxUnit</returns>
+        public virtual float NormalizeUnit(float pos, PositionUnits units)
+        {
+            if (units == PositionUnits.Distance)
+                return NormalizePathDistance(pos);
+            return NormalizePos(pos);
+        }
+
+        /// <summary>Get a worldspace position of a point along the path</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <param name="units">The unit to use when interpreting the value of pos.</param>
+        /// <returns>World-space position of the point along at path at pos</returns>
+        public Vector3 EvaluatePositionAtUnit(float pos, PositionUnits units)
+        {
+            if (units == PositionUnits.Distance)
+                pos = GetPathPositionFromDistance(pos);
+            return EvaluatePosition(pos);
+        }
+
+        /// <summary>Get the tangent of the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <param name="units">The unit to use when interpreting the value of pos.</param>
+        /// <returns>World-space direction of the path tangent.
+        /// Length of the vector represents the tangent strength</returns>
+        public Vector3 EvaluateTangentAtUnit(float pos, PositionUnits units)
+        {
+            if (units == PositionUnits.Distance)
+                pos = GetPathPositionFromDistance(pos);
+            return EvaluateTangent(pos);
+        }
+
+        /// <summary>Get the orientation the curve at a point along the path.</summary>
+        /// <param name="pos">Postion along the path.  Need not be normalized.</param>
+        /// <param name="units">The unit to use when interpreting the value of pos.</param>
+        /// <returns>World-space orientation of the path</returns>
+        public Quaternion EvaluateOrientationAtUnit(float pos, PositionUnits units)
+        {
+            if (units == PositionUnits.Distance)
+                pos = GetPathPositionFromDistance(pos);
+            return EvaluateOrientation(pos);
+        }
+
+        /// <summary>When calculating the distance cache, sample the path this many 
+        /// times between points</summary>
+        public abstract int DistanceCacheSampleStepsPerSegment { get; }
+
+        /// <summary>Call this if the path changes in such a way as to affect distances
+        /// or other cached path elements</summary>
+        public virtual void InvalidateDistanceCache() 
+        { 
+            m_DistanceToPos = null; 
+            m_PosToDistance = null; 
+            m_CachedSampleSteps = 0;
+            m_PathLength = 0; 
+        }
+
+        /// <summary>See whether the distance cache is valid.  If it's not valid,
+        /// then any call to GetPathLength() or GetPathPositionFromDistance() will
+        /// trigger a potentially costly regeneration of the path distance cache</summary>
+        /// <param name="stepsPerSegment">The number of steps to take between path points</param>
+        /// <returns>Whether the cache is valid for this sampling rate</returns>
+        public bool DistanceCacheIsValid()
+        {
+            return (MaxPos == MinPos)
+                || (m_DistanceToPos != null && m_PosToDistance != null
+                    && m_CachedSampleSteps == DistanceCacheSampleStepsPerSegment 
+                    && m_CachedSampleSteps > 0);
+        }
+
+        /// <summary>Get the length of the path in distance units.  
+        /// If the distance cache is not valid, then calling this will 
+        /// trigger a potentially costly regeneration of the path distance cache</summary>
+        /// <returns>The length of the path in distance units, when sampled at this rate</returns>
+        public float PathLength
+        { 
+            get 
+            {
+                if (DistanceCacheSampleStepsPerSegment < 1)
+                    return 0;
+                if (!DistanceCacheIsValid())
+                    ResamplePath(DistanceCacheSampleStepsPerSegment);
+                return m_PathLength;
+            }
+        }
+
+        /// <summary>Normalize a distance along the path based on the path length.  
+        /// If the distance cache is not valid, then calling this will 
+        /// trigger a potentially costly regeneration of the path distance cache</summary>
+        /// <param name="distance">The distance to normalize</param>
+        /// <returns>The normalized distance, ranging from 0 to path length</returns>
+        public float NormalizePathDistance(float distance)
+        {
+            float length = PathLength;
+            if (length < Vector3.kEpsilon)
+                return 0;
+            if (Looped)
+            {
+                distance = distance % length;
+                if (distance < 0)
+                    distance += length;
+            }
+            return Mathf.Clamp(distance, 0, length);
+        }
+
+        /// <summary>Get the path position (in path units) corresponding to this distance along the path.  
+        /// If the distance cache is not valid, then calling this will 
+        /// trigger a potentially costly regeneration of the path distance cache</summary>
+        /// <returns>The length of the path in distance units, when sampled at this rate</returns>
+        public float GetPathPositionFromDistance(float distance)
+        {
+            if (DistanceCacheSampleStepsPerSegment < 1 || PathLength < UnityVectorExtensions.Epsilon)
+                return MinPos;
+            distance = NormalizePathDistance(distance);
+            float d = distance / m_cachedDistanceStepSize;
+            int i = Mathf.FloorToInt(d);
+            if (i >= m_DistanceToPos.Length-1)
+                return MaxPos;
+            float t = d - (float)i;
+            return MinPos + Mathf.Lerp(m_DistanceToPos[i], m_DistanceToPos[i+1], t);
+        }
+
+        /// <summary>Get the path position (in path units) corresponding to this distance along the path.  
+        /// If the distance cache is not valid, then calling this will 
+        /// trigger a potentially costly regeneration of the path distance cache</summary>
+        /// <returns>The length of the path in distance units, when sampled at this rate</returns>
+        public float GetPathDistanceFromPosition(float pos)
+        {
+            if (DistanceCacheSampleStepsPerSegment < 1 || PathLength < UnityVectorExtensions.Epsilon)
+                return 0;
+            pos = NormalizePos(pos);
+            float d = pos / m_cachedPosStepSize;
+            int i = Mathf.FloorToInt(d);
+            if (i >= m_PosToDistance.Length-1)
+                return m_PathLength;
+            float t = d - (float)i;
+            return Mathf.Lerp(m_PosToDistance[i], m_PosToDistance[i+1], t);
+        }
+
+        private float[] m_DistanceToPos;
+        private float[] m_PosToDistance;
+        private int m_CachedSampleSteps;
+        private float m_PathLength;
+        private float m_cachedPosStepSize;
+        private float m_cachedDistanceStepSize;
+
+        private void ResamplePath(int stepsPerSegment)
+        {
+            InvalidateDistanceCache();
+
+            float minPos = MinPos;
+            float maxPos = MaxPos;
+            float stepSize = 1f / Mathf.Max(1, stepsPerSegment);
+
+            // Sample the positions
+            int numKeys = Mathf.RoundToInt((maxPos - minPos) / stepSize) + 1;
+            m_PosToDistance = new float[numKeys];
+            m_CachedSampleSteps = stepsPerSegment;
+            m_cachedPosStepSize = stepSize;
+
+            Vector3 p0 = EvaluatePosition(0);
+            m_PosToDistance[0] = 0;
+            float pos = minPos;
+            for (int i = 1; i < numKeys; ++i)
+            {
+                pos += stepSize;
+                Vector3 p = EvaluatePosition(pos);
+                float d = Vector3.Distance(p0, p);
+                m_PathLength += d;
+                p0 = p;
+                m_PosToDistance[i] = m_PathLength;
+            }
+
+            // Resample the distances
+            m_DistanceToPos = new float[numKeys];
+            m_DistanceToPos[0] = 0;
+            if (numKeys > 1)
+            {
+                stepSize = m_PathLength / (numKeys - 1);
+                m_cachedDistanceStepSize = stepSize;
+                float distance = 0;
+                int posIndex = 1;
+                for (int i = 1; i < numKeys; ++i)
+                {
+                    distance += stepSize;
+                    float d = m_PosToDistance[posIndex];
+                    while (d < distance && posIndex < numKeys-1)
+                         d = m_PosToDistance[++posIndex];
+                    float d0 =  m_PosToDistance[posIndex-1];
+                    float delta = d - d0;
+                    float t = (distance - d0) / delta;
+                    m_DistanceToPos[i] = m_cachedPosStepSize * (t + posIndex - 1);
+                }
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..42afc1c8801dd55335cdb220ef4c4327116b000b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a73149a4b6c41d741bc5e4e3b7711c0d
+timeCreated: 1494359378
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3d640921ebf0dd014696496a2f76fa22fa81d0f3
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs
@@ -0,0 +1,70 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Property applied to LensSettings.  Used for custom drawing in the inspector.
+    /// </summary>
+    public sealed class LensSettingsPropertyAttribute : PropertyAttribute
+    {
+    }
+    
+    /// <summary>
+    /// Property applied to CinemachineBlendDefinition.  Used for custom drawing in the inspector.
+    /// </summary>
+    public sealed class CinemachineBlendDefinitionPropertyAttribute : PropertyAttribute
+    {
+    }
+
+    /// <summary>
+    /// Invoke play-mode-save for a class.  This class's fields will be scanned
+    /// upon exiting play mode, and its property values will be applied to the scene object.
+    /// This is a stopgap measure that will become obsolete once Unity implements
+    /// play-mode-save in a more general way.
+    /// </summary>
+    public sealed class SaveDuringPlayAttribute : System.Attribute
+    {
+    }
+
+    /// <summary>
+    /// Suppresses play-mode-save for a field.  Use it if the calsee has [SaveDuringPlay] 
+    /// attribute but there are fields in the class that shouldn't be saved.
+    /// </summary>
+    public sealed class NoSaveDuringPlayAttribute : PropertyAttribute
+    {
+    }
+
+    /// <summary>Property field is a Tag.</summary>
+    public sealed class TagFieldAttribute : PropertyAttribute
+    {
+    }
+
+    /// <summary>
+    /// Atrtribute to control the automatic generation of documentation.
+    /// </summary>
+    [DocumentationSorting(0f, DocumentationSortingAttribute.Level.Undoc)]
+    public sealed class DocumentationSortingAttribute : System.Attribute
+    {
+        /// <summary>Refinement level of the documentation</summary>
+        public enum Level 
+        { 
+            /// <summary>Type is excluded from documentation</summary>
+            Undoc, 
+            /// <summary>Type is documented in the API reference</summary>
+            API, 
+            /// <summary>Type is documented in the highly-refined User Manual</summary>
+            UserRef 
+        };
+        /// <summary>Where this type appears in the manual.  Smaller number sort earlier.</summary>
+        public float SortOrder { get; private set; }
+        /// <summary>Refinement level of the documentation.  The more refined, the more is excluded.</summary>
+        public Level Category { get; private set; }
+
+        /// <summary>Contructor with specific values</summary>
+        public DocumentationSortingAttribute(float sortOrder, Level category)
+        {
+            SortOrder = sortOrder;
+            Category = category;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0198cbb9a6f0667a712f6f9ae4b9aa3f7cf421da
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2c760cb7073c57e44959f36cbed8ed39
+timeCreated: 1486510400
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs b/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fb4288572edf7f2e4b0263fdefb4161006b4418b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs
@@ -0,0 +1,360 @@
+using System;
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Base class for a Monobehaviour that represents a Virtual Camera within the Unity scene.
+    ///
+    /// This is intended to be attached to an empty Transform GameObject.
+    /// Inherited classes can be either standalone virtual cameras such
+    /// as CinemachineVirtualCamera, or meta-cameras such as
+    /// CinemachineClearShot or CinemachineFreeLook.
+    ///
+    /// A CinemachineVirtualCameraBase exposes a Priority property.  When the behaviour is
+    /// enabled in the game, the Virtual Camera is automatically placed in a queue
+    /// maintained by the static CinemachineCore singleton.
+    /// The queue is sorted by priority.  When a Unity camera is equipped with a
+    /// CinemachineBrain behaviour, the brain will choose the camera
+    /// at the head of the queue.  If you have multiple Unity cameras with CinemachineBrain
+    /// behaviours (say in a split-screen context), then you can filter the queue by
+    /// setting the culling flags on the virtual cameras.  The culling mask of the
+    /// Unity Camera will then act as a filter for the brain.  Apart from this,
+    /// there is nothing that prevents a virtual camera from controlling multiple
+    /// Unity cameras simultaneously.
+    /// </summary>
+    [SaveDuringPlay]
+    public abstract class CinemachineVirtualCameraBase : MonoBehaviour, ICinemachineCamera
+    {
+        /// <summary>This is deprecated.  It is here to support the soon-to-be-removed
+        /// Cinemachine Debugger in the Editor.</summary>
+        [HideInInspector, NoSaveDuringPlay]
+        public Action CinemachineGUIDebuggerCallback = null;
+
+        /// <summary>Inspector control - Use for hiding sections of the Inspector UI.</summary>
+        [HideInInspector, SerializeField, NoSaveDuringPlay]
+        public string[] m_ExcludedPropertiesInInspector = new string[] { "m_Script" };
+
+        /// <summary>Inspector control - Use for enabling sections of the Inspector UI.</summary>
+        [HideInInspector, SerializeField, NoSaveDuringPlay]
+        public CinemachineCore.Stage[] m_LockStageInInspector;
+
+        /// <summary>Version that was last streamed, for upgrading legacy</summary>
+        public int ValidatingStreamVersion 
+        { 
+            get { return m_OnValidateCalled ? m_ValidatingStreamVersion : CinemachineCore.kStreamingVersion; }
+            private set { m_ValidatingStreamVersion = value; } 
+        }
+        private int m_ValidatingStreamVersion = 0;
+        private bool m_OnValidateCalled = false;
+
+        [HideInInspector, SerializeField, NoSaveDuringPlay]
+        private int m_StreamingVersion;
+
+        /// <summary>The priority will determine which camera becomes active based on the
+        /// state of other cameras and this camera.  Higher numbers have greater priority.
+        /// </summary>
+        [NoSaveDuringPlay]
+        [Tooltip("The priority will determine which camera becomes active based on the state of other cameras and this camera.  Higher numbers have greater priority.")]
+        public int m_Priority = 10;
+
+        /// <summary>
+        /// A delegate to hook into the state calculation pipeline.
+        /// This will be called after each pipeline stage, to allow others to hook into the pipeline.
+        /// See CinemachineCore.Stage.
+        /// </summary>
+        /// <param name="d">The delegate to call.</param>
+        public virtual void AddPostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            OnPostPipelineStage -= d;
+            OnPostPipelineStage += d;
+        }
+
+        /// <summary>Remove a Pipeline stage hook callback.</summary>
+        /// <param name="d">The delegate to remove.</param>
+        public virtual void RemovePostPipelineStageHook(OnPostPipelineStageDelegate d)
+        {
+            OnPostPipelineStage -= d;
+        }
+
+        /// <summary>
+        /// A delegate to hook into the state calculation pipeline.
+        /// This will be called after each pipeline stage, to allow other
+        /// services to hook into the pipeline.
+        /// See CinemachineCore.Stage.
+        /// 
+        /// Parameters:
+        /// 
+        /// * CinemachineVirtualCameraBase vcam: the virtual camera being updated
+        /// * CinemachineCore.Stage stage: what stage in the pipeline has just been updated
+        /// * ref CameraState newState: the current state of the vcam
+        /// * float deltaTime: the frame timestep.  Less than 0 means "don't consider the previous frame"
+        /// </summary>
+        public delegate void OnPostPipelineStageDelegate(
+            CinemachineVirtualCameraBase vcam, CinemachineCore.Stage stage,
+            ref CameraState newState, float deltaTime);
+
+        /// <summary>
+        /// A delegate to hook into the state calculation pipeline.
+        /// Implementaion must be sure to call this after each pipeline stage, to allow
+        /// other services to hook into the pipeline.
+        /// See CinemachineCore.Stage.
+        /// </summary>
+        protected OnPostPipelineStageDelegate OnPostPipelineStage;
+
+        /// <summary>
+        /// Invokes the PostPipelineStageDelegate for this camera, and up the hierarchy for all
+        /// parent cameras (if any).
+        /// </summary>
+        protected void InvokePostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam, CinemachineCore.Stage stage,
+            ref CameraState newState, float deltaTime)
+        {
+            if (OnPostPipelineStage != null)
+                OnPostPipelineStage(vcam, stage, ref newState, deltaTime);
+            CinemachineVirtualCameraBase parent = ParentCamera as CinemachineVirtualCameraBase;
+            if (parent != null)
+                parent.InvokePostPipelineStageCallback(vcam, stage, ref newState, deltaTime);
+        }
+
+        /// <summary>Get the name of the Virtual Camera.  Base implementation
+        /// returns the owner GameObject's name.</summary>
+        public string Name { get { return name; } }
+
+        /// <summary>Gets a brief debug description of this virtual camera, for use when displayiong debug info</summary>
+        public virtual string Description { get { return ""; }}
+
+        /// <summary>Get the Priority of the virtual camera.  This determines its placement
+        /// in the CinemachineCore's queue of eligible shots.</summary>
+        public int Priority { get { return m_Priority; } set { m_Priority = value; } }
+
+        /// <summary>The GameObject owner of the Virtual Camera behaviour.</summary>
+        public GameObject VirtualCameraGameObject
+        {
+            get
+            {
+                if (this == null)
+                    return null; // object deleted
+                return gameObject;
+            }
+        }
+
+        /// <summary>The CameraState object holds all of the information
+        /// necessary to position the Unity camera.  It is the output of this class.</summary>
+        public abstract CameraState State { get; }
+
+        /// <summary>Just returns self.</summary>
+        public virtual ICinemachineCamera LiveChildOrSelf { get { return this; } }
+
+        /// <summary>Support for meta-virtual-cameras.  This is the situation where a
+        /// virtual camera is in fact the public face of a private army of virtual cameras, which
+        /// it manages on its own.  This method gets the VirtualCamera owner, if any.
+        /// Private armies are implemented as Transform children of the parent vcam.</summary>
+        public ICinemachineCamera ParentCamera
+        {
+            get
+            {
+                if (!mSlaveStatusUpdated || !Application.isPlaying)
+                    UpdateSlaveStatus();
+                return m_parentVcam;
+            }
+        }
+
+        /// <summary>Check whether the vcam a live child of this camera.  
+        /// This base class implementation always returns false.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        public virtual bool IsLiveChild(ICinemachineCamera vcam) { return false; }
+
+        /// <summary>Get the LookAt target for the Aim component in the CinemachinePipeline.</summary>
+        public abstract Transform LookAt { get; set; }
+
+        /// <summary>Get the Follow target for the Body component in the CinemachinePipeline.</summary>
+        public abstract Transform Follow { get; set; }
+
+        /// <summary>Set this to force the next update to ignore deltaTime and reset itself</summary>
+        public bool PreviousStateIsValid 
+        { 
+            get
+            {
+                if (LookAt != m_previousLookAtTarget)
+                {
+                    m_previousLookAtTarget = LookAt;
+                    m_previousStateIsValid = false;
+                }
+                if (Follow != m_previousFollowTarget)
+                {
+                    m_previousFollowTarget = Follow;
+                    m_previousStateIsValid = false;
+                }
+                return m_previousStateIsValid;
+            }
+            set
+            {
+                m_previousStateIsValid = value;
+            }
+        }
+        private bool m_previousStateIsValid;
+        private Transform m_previousLookAtTarget;
+        private Transform m_previousFollowTarget;
+
+
+        /// <summary>Called by CinemachineCore at designated update time
+        /// so the vcam can position itself and track its targets.  
+        /// Do not call this method.  Let the framework do it at the appropriate time</summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        public abstract void UpdateCameraState(Vector3 worldUp, float deltaTime);
+
+        /// <summary>Notification that this virtual camera is going live.
+        /// Base class implementationmust be called by any overridden method.</summary>
+        /// <param name="fromCam">The camera being deactivated.  May be null.</param>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than or equal to 0)</param>
+        public virtual void OnTransitionFromCamera(
+            ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime) 
+        {
+            if (!gameObject.activeInHierarchy)
+                PreviousStateIsValid = false;
+        }
+
+        /// <summary>Base class implementation does nothing.</summary>
+        protected virtual void Start()
+        {
+        }
+
+        /// <summary>Base class implementation removes the virtual camera from the priority queue.</summary>
+        protected virtual void OnDestroy()
+        {
+            CinemachineCore.Instance.RemoveActiveCamera(this);
+        }
+
+        /// <summary>Enforce bounds for fields, when changed in inspector.  
+        /// Call base class implementation at the beginning of overridden method.
+        /// After base method is called, ValidatingStreamVersion will be valid.</summary>
+        protected virtual void OnValidate()
+        {
+            m_OnValidateCalled = true;
+            ValidatingStreamVersion = m_StreamingVersion;
+            m_StreamingVersion = CinemachineCore.kStreamingVersion;
+        }
+
+        /// <summary>Base class implementation adds the virtual camera from the priority queue.</summary>
+        protected virtual void OnEnable()
+        {
+            // Sanity check - if another vcam component is enabled, shut down
+            var vcamComponents = GetComponents<CinemachineVirtualCameraBase>();
+            for (int i = 0; i < vcamComponents.Length; ++i)
+            {
+                if (vcamComponents[i].enabled && vcamComponents[i] != this)
+                {
+                    Debug.LogError(Name
+                        + " has multiple CinemachineVirtualCameraBase-derived components.  Disabling "
+                        + GetType().Name + ".");
+                    enabled = false;
+                }
+            }
+            UpdateSlaveStatus();
+            UpdateVcamPoolStatus();    // Add to queue
+            PreviousStateIsValid = false;
+        }
+
+        /// <summary>Base class implementation makes sure the priority queue remains up-to-date.</summary>
+        protected virtual void OnDisable()
+        {
+            UpdateVcamPoolStatus();    // Remove from queue
+        }
+
+        /// <summary>Base class implementation makes sure the priority queue remains up-to-date.</summary>
+        protected virtual void Update()
+        {
+            if (m_Priority != m_QueuePriority)
+                UpdateVcamPoolStatus();
+        }
+
+        /// <summary>Base class implementation makes sure the priority queue remains up-to-date.</summary>
+        protected virtual void OnTransformParentChanged()
+        {
+            UpdateSlaveStatus();
+            UpdateVcamPoolStatus();
+        }
+
+#if UNITY_EDITOR
+        /// <summary>Support for the deprecated CinemachineDebugger.</summary>
+        protected virtual void OnGUI()
+        {
+            if (CinemachineGUIDebuggerCallback != null)
+                CinemachineGUIDebuggerCallback();
+        }
+#endif
+        private bool mSlaveStatusUpdated = false;
+        private CinemachineVirtualCameraBase m_parentVcam = null;
+
+        private void UpdateSlaveStatus()
+        {
+            mSlaveStatusUpdated = true;
+            m_parentVcam = null;
+            Transform p = transform.parent;
+            if (p != null)
+                m_parentVcam = p.GetComponent<CinemachineVirtualCameraBase>();
+        }
+
+        /// <summary>Returns this vcam's LookAt target, or if that is null, will retrun
+        /// the parent vcam's LookAt target.</summary>
+        /// <param name="localLookAt">This vcam's LookAt value.</param>
+        /// <returns>The same value, or the parent's if null and a parent exists.</returns>
+        protected Transform ResolveLookAt(Transform localLookAt)
+        {
+            Transform lookAt = localLookAt;
+            if (lookAt == null && ParentCamera != null)
+                lookAt = ParentCamera.LookAt; // Parent provides default
+            return lookAt;
+        }
+
+        /// <summary>Returns this vcam's Follow target, or if that is null, will retrun
+        /// the parent vcam's Follow target.</summary>
+        /// <param name="localFollow">This vcam's Follow value.</param>
+        /// <returns>The same value, or the parent's if null and a parent exists.</returns>
+        protected Transform ResolveFollow(Transform localFollow)
+        {
+            Transform follow = localFollow;
+            if (follow == null && ParentCamera != null)
+                follow = ParentCamera.Follow; // Parent provides default
+            return follow;
+        }
+
+        private int m_QueuePriority = int.MaxValue;
+        private void UpdateVcamPoolStatus()
+        {
+            m_QueuePriority = int.MaxValue;
+            CinemachineCore.Instance.RemoveActiveCamera(this);
+            CinemachineCore.Instance.RemoveChildCamera(this);
+            if (m_parentVcam == null)
+            {
+                if (isActiveAndEnabled)
+                {
+                    CinemachineCore.Instance.AddActiveCamera(this);
+                    m_QueuePriority = m_Priority;
+                }
+            }
+            else
+            {
+                if (isActiveAndEnabled)
+                    CinemachineCore.Instance.AddChildCamera(this);
+            }
+        }
+
+        /// <summary>When multiple virtual cameras have the highest priority, there is
+        /// sometimes the need to push one to the top, making it the current Live camera if 
+        /// it shares the highest priority in the queue with its peers.  
+        /// 
+        /// This happens automatically when a 
+        /// new vcam is enabled: the most recent one goes to the top of the priority subqueue.  
+        /// Use this method to push a vcam to the top of its priority peers.  
+        /// If it and its peers share the highest priority, then this vcam will become Live.</summary>
+        public void MoveToTopOfPrioritySubqueue()
+        {
+            UpdateVcamPoolStatus();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..61fced5448ff63cbbc81daa3f6b96daa1198bf08
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 15ebf04de67923d41a36c21e1fc63718
+timeCreated: 1488314898
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs b/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8a1e5f75ae2720cb95a74f9f52eb954428bcf46f
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs
@@ -0,0 +1,140 @@
+using System;
+using UnityEngine;
+
+namespace Cinemachine.Utility
+{
+    internal abstract class GaussianWindow1d<T>
+    {
+        protected T[] mData;
+        protected float[] mKernel;
+        protected float mKernelSum;
+        protected int mCurrentPos;
+
+        public float Sigma { get; private set; }   // Filter strength: bigger numbers are stronger.  0.5 is minimal.
+        public int KernelSize { get { return mKernel.Length; } }
+
+        void GenerateKernel(float sigma, int maxKernelRadius)
+        {
+            // Weight is close to 0 at a distance of sigma*3, so let's just cut it off a little early
+            int kernelRadius = Math.Min(maxKernelRadius, Mathf.FloorToInt(Mathf.Abs(sigma) * 2.5f));
+            mKernel = new float[2 * kernelRadius + 1];
+            mKernelSum = 0;
+            if (kernelRadius == 0)
+                mKernelSum = mKernel[0] = 1;
+            else for (int i = -kernelRadius; i <= kernelRadius; ++i)
+            {
+                mKernel[i + kernelRadius]
+                    = (float)(Math.Exp(-(i * i) / (2 * sigma * sigma)) / Math.Sqrt(2.0 * Math.PI * sigma));
+                mKernelSum += mKernel[i + kernelRadius];
+            }
+            Sigma = sigma;
+        }
+
+        protected abstract T Compute(int windowPos);
+
+        public GaussianWindow1d(float sigma, int maxKernelRadius = 10)
+        {
+            GenerateKernel(sigma, maxKernelRadius);
+            mCurrentPos = 0;
+        }
+
+        public void Reset() { mData = null; }
+
+        public bool IsEmpty() { return mData == null; }
+
+        public void AddValue(T v)
+        {
+            if (mData == null)
+            {
+                mData = new T[KernelSize];
+                for (int i = 0; i < KernelSize; ++i)
+                    mData[i] = v;
+                mCurrentPos = Mathf.Min(1, KernelSize-1);
+            }
+            mData[mCurrentPos] = v;
+            if (++mCurrentPos == KernelSize)
+                mCurrentPos = 0;
+        }
+
+        public T Filter(T v)
+        {
+            if (KernelSize < 3)
+                return v;
+            AddValue(v);
+            return Value();    
+        }
+
+        /// Returned value will be kernelRadius old
+        public T Value() { return Compute(mCurrentPos); }
+    }
+
+    internal class GaussianWindow1D_Vector3 : GaussianWindow1d<Vector3>
+    {
+        public GaussianWindow1D_Vector3(float sigma, int maxKernelRadius = 10)
+            : base(sigma, maxKernelRadius) {}
+
+        protected override Vector3 Compute(int windowPos)
+        {
+            Vector3 sum = Vector3.zero;
+            for (int i = 0; i < KernelSize; ++i)
+            {
+                sum += mData[windowPos] * mKernel[i];
+                if (++windowPos == KernelSize)
+                    windowPos = 0;
+            }
+            return sum / mKernelSum;
+        }
+    }
+
+    internal class GaussianWindow1D_Quaternion : GaussianWindow1d<Quaternion>
+    {
+        public GaussianWindow1D_Quaternion(float sigma, int maxKernelRadius = 10)
+            : base(sigma, maxKernelRadius) {}
+        protected override Quaternion Compute(int windowPos)
+        {
+            Quaternion sum = new Quaternion(0, 0, 0, 0);
+            Quaternion q = mData[mCurrentPos];
+            Quaternion qInverse = Quaternion.Inverse(q);
+            for (int i = 0; i < KernelSize; ++i)
+            {
+                // Make sure the quaternion is in the same hemisphere, or averaging won't work
+                float scale = mKernel[i];
+                Quaternion q2 = qInverse * mData[windowPos];
+                if (Quaternion.Dot(Quaternion.identity, q2) < 0)
+                    scale = -scale;
+                sum.x += q2.x * scale;
+                sum.y += q2.y * scale;
+                sum.z += q2.z * scale;
+                sum.w += q2.w * scale;
+
+                if (++windowPos == KernelSize)
+                    windowPos = 0;
+            }
+            return q * sum;
+        }
+    }
+
+    internal class GaussianWindow1D_CameraRotation : GaussianWindow1d<Vector2>
+    {
+        public GaussianWindow1D_CameraRotation(float sigma, int maxKernelRadius = 10)
+            : base(sigma, maxKernelRadius) {}
+
+        protected override Vector2 Compute(int windowPos)
+        {
+            Vector2 sum = Vector2.zero;
+            Vector2 v = mData[mCurrentPos];
+            for (int i = 0; i < KernelSize; ++i)
+            {
+                Vector2 v2 = mData[windowPos] - v;
+                if (v2.y > 180f)
+                    v2.y -= 360f;
+                if (v2.y < -180f)
+                    v2.y += 360f;
+                sum += v2 * mKernel[i];
+                if (++windowPos == KernelSize)
+                    windowPos = 0;
+            }
+            return v + (sum / mKernelSum);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..cd351386b6dd326de48f7d6b869e8d280c9155ff
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 68839a4bf8790cd449d4043f5efb5aec
+timeCreated: 1490719908
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs
new file mode 100644
index 0000000000000000000000000000000000000000..82e7af5f5af3a5c71c0044300a21e50a97076b15
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs
@@ -0,0 +1,81 @@
+using UnityEngine;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// An abstract representation of a virtual camera which lives within the Unity scene
+    /// </summary>
+    public interface ICinemachineCamera
+    {
+        /// <summary>
+        /// Gets the name of this virtual camera. For use when deciding how to blend
+        /// to or from this camera
+        /// </summary>
+        string Name { get; }
+
+        /// <summary>
+        /// Gets a brief debug description of this virtual camera, for use when displayiong debug info
+        /// </summary>
+        string Description { get; }
+
+        /// <summary>
+        /// Gets the priority of this <c>ICinemachineCamera</c>. The virtual camera
+        /// will be inserted into the global priority stack based on this value.
+        /// </summary>
+        int Priority { get; set; }
+
+        /// <summary>
+        /// The thing the camera wants to look at (aim).  May be null.
+        /// </summary>
+        Transform LookAt { get; set; }
+
+        /// <summary>
+        /// The thing the camera wants to follow (moving camera).  May be null.
+        /// </summary>
+        Transform Follow { get; set; }
+
+        /// <summary>
+        /// Camera state at the current time.
+        /// </summary>
+        CameraState State { get; }
+
+        /// <summary>
+        /// Gets the virtual camera game attached to this class.
+        /// </summary>
+        GameObject VirtualCameraGameObject { get; }
+
+        /// <summary>For cameras that implement child cameras, return the live child,
+        /// otherwise, just returns self.</summary>
+        ICinemachineCamera LiveChildOrSelf { get; }
+
+        /// <summary>
+        /// For cameras that implement child cameras, returns the parent vcam, otherwise null.
+        /// </summary>
+        ICinemachineCamera ParentCamera { get; }
+
+        /// <summary>Check whether the vcam is a live child of this camera.</summary>
+        /// <param name="vcam">The Virtual Camera to check</param>
+        /// <returns>True if the vcam is currently actively influencing the state of this vcam</returns>
+        bool IsLiveChild(ICinemachineCamera vcam);
+
+        /// <summary>
+        /// Updates this Cinemachine Camera. For an active camera this should be
+        /// called once and only once each frame.  To guarantee this, you should never
+        /// call this method directly.  Always use
+        /// CinemachineCore.UpdateVirtualCamera(ICinemachineCamera, float), which
+        /// has protection against multiple calls per frame.
+        /// </summary>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        void UpdateCameraState(Vector3 worldUp, float deltaTime);
+
+        /// <summary>
+        /// Notification that a new camera is being activated.  This is sent to the
+        /// currently active camera.  Both may be active simultaneously for a while, if blending.
+        /// </summary>
+        /// <param name="fromCam">The camera being deactivated.  May be null.</param>
+        /// <param name="worldUp">Default world Up, set by the CinemachineBrain</param>
+        /// <param name="deltaTime">Delta time for time-based effects (ignore if less than 0)</param>
+        void OnTransitionFromCamera(ICinemachineCamera fromCam, Vector3 worldUp, float deltaTime);
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..860b3a731613859874c31cde6e216c9ba4c5ef28
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2643ac9881a89594a80c242b565b34ec
+timeCreated: 1484407000
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d9249fd0796d92d81f8a74fc6df8a9e73d7b32eb
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs
@@ -0,0 +1,3 @@
+// This file is intentionally blank.
+// If you were implementing ICinemachineComponent interface, please refactor to 
+// inherit from CinemachineComponentBase instead.
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..8e86dd9e1ba4e66ea0b2eb560029c9535d135752
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9a53087ba28aaf145a184ea363108831
+timeCreated: 1510078351
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs b/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c0686a64dd91a4c43743eda0f69c27df05d937e5
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs
@@ -0,0 +1,137 @@
+using UnityEngine;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// Describes the FOV and clip planes for a camera.  This generally mirrors the Unity Camera's 
+    /// lens settings, and will be used to drive the Unity camera when the vcam is active.
+    /// </summary>
+    [Serializable]
+    [DocumentationSorting(2, DocumentationSortingAttribute.Level.UserRef)]
+    public struct LensSettings
+    {
+        /// <summary>Default Lens Settings</summary>
+        public static LensSettings Default = new LensSettings(40f, 10, 0.1f, 5000f, 0, false, 1);
+
+        /// <summary>
+        /// This is the camera view in vertical degrees. For cinematic people, a 50mm lens
+        /// on a super-35mm sensor would equal a 19.6 degree FOV
+        /// </summary>
+        [Range(1f, 179f)]
+        [Tooltip("This is the camera view in vertical degrees. For cinematic people, a 50mm lens on a super-35mm sensor would equal a 19.6 degree FOV")]
+        public float FieldOfView;
+
+        /// <summary>
+        /// When using an orthographic camera, this defines the height, in world 
+        /// co-ordinates, of the camera view.
+        /// </summary>
+        [Tooltip("When using an orthographic camera, this defines the half-height, in world coordinates, of the camera view.")]
+        public float OrthographicSize;
+
+        /// <summary>
+        /// The near clip plane for this LensSettings
+        /// </summary>
+        [Tooltip("This defines the near region in the renderable range of the camera frustum. Raising this value will stop the game from drawing things near the camera, which can sometimes come in handy.  Larger values will also increase your shadow resolution.")]
+        public float NearClipPlane;
+
+        /// <summary>
+        /// The far clip plane for this LensSettings
+        /// </summary>
+        [Tooltip("This defines the far region of the renderable range of the camera frustum. Typically you want to set this value as low as possible without cutting off desired distant objects")]
+        public float FarClipPlane;
+
+        /// <summary>
+        /// The dutch (tilt) to be applied to the camera. In degrees
+        /// </summary>
+        [Range(-180f, 180f)]
+        [Tooltip("Camera Z roll, or tilt, in degrees.")]
+        public float Dutch;
+
+        /// <summary>
+        /// This is set every frame by the virtual camera, based on the value found in the 
+        /// currently associated Unity camera
+        /// </summary>
+        internal bool Orthographic { get; set; }
+
+        /// <summary>
+        /// This is set every frame by the virtual camera, based on the value 
+        /// found in the currently associated Unity camera
+        /// </summary>
+        internal float Aspect { get; set; }
+
+        /// <summary>
+        /// Creates a new LensSettings, copying the values from the 
+        /// supplied Camera
+        /// </summary>
+        /// <param name="fromCamera">The Camera from which the FoV, near 
+        /// and far clip planes will be copied.</param>
+	    public static LensSettings FromCamera(Camera fromCamera)
+        {
+            LensSettings lens = Default;
+            if (fromCamera != null)
+            {
+                lens.FieldOfView = fromCamera.fieldOfView;
+                lens.OrthographicSize = fromCamera.orthographicSize;
+                lens.NearClipPlane = fromCamera.nearClipPlane;
+                lens.FarClipPlane = fromCamera.farClipPlane;
+                lens.Orthographic = fromCamera.orthographic;
+                lens.Aspect = fromCamera.aspect;
+            }
+            return lens;
+        }
+
+        /// <summary>
+        /// Explicit constructor for this LensSettings
+        /// </summary>
+        /// <param name="fov">The Vertical field of view</param>
+        /// <param name="orthographicSize">If orthographic, this is the half-height of the screen</param>
+        /// <param name="nearClip">The near clip plane</param>
+        /// <param name="farClip">The far clip plane</param>
+        /// <param name="dutch">Camera roll, in degrees.  This is applied at the end 
+        /// <param name="ortho">Whether the lens is orthographic</param>
+        /// <param name="aspect">The aspect ratio of the lens  Width/height</param>
+        /// after shot composition.</param>
+        public LensSettings(
+            float fov, float orthographicSize,
+            float nearClip, float farClip, float dutch,
+            bool ortho, float aspect) : this()
+        {
+            FieldOfView = fov;
+            OrthographicSize = orthographicSize;
+            NearClipPlane = nearClip;
+            FarClipPlane = farClip;
+            Dutch = dutch;
+            Orthographic = ortho;
+            Aspect = aspect;
+        }
+
+        /// <summary>
+        /// Linearly blends the fields of two LensSettings and returns the result
+        /// </summary>
+        /// <param name="lensA">The LensSettings to blend from</param>
+        /// <param name="lensB">The LensSettings to blend to</param>
+        /// <param name="t">The interpolation value. Internally clamped to the range [0,1]</param>
+        /// <returns>Interpolated settings</returns>
+        public static LensSettings Lerp(LensSettings lensA, LensSettings lensB, float t)
+        {
+            t = Mathf.Clamp01(t);
+            LensSettings blendedLens = new LensSettings();
+            blendedLens.FarClipPlane = Mathf.Lerp(lensA.FarClipPlane, lensB.FarClipPlane, t);
+            blendedLens.NearClipPlane = Mathf.Lerp(lensA.NearClipPlane, lensB.NearClipPlane, t);
+            blendedLens.FieldOfView = Mathf.Lerp(lensA.FieldOfView, lensB.FieldOfView, t);
+            blendedLens.OrthographicSize = Mathf.Lerp(lensA.OrthographicSize, lensB.OrthographicSize, t);
+            blendedLens.Dutch = Mathf.Lerp(lensA.Dutch, lensB.Dutch, t);
+            blendedLens.Aspect = Mathf.Lerp(lensA.Aspect, lensB.Aspect, t);
+            blendedLens.Orthographic = lensA.Orthographic && lensB.Orthographic;
+            return blendedLens;
+        }
+
+        /// <summary>Make sure lens settings are sane.  Call this from OnValidate().</summary>
+        public void Validate()
+        {
+            NearClipPlane = Mathf.Max(NearClipPlane, 0.01f);
+            FarClipPlane = Mathf.Max(FarClipPlane, NearClipPlane + 0.01f);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9e018da8c58457d09c505b4bd60fd71995bc0127
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5778d22ca832d9f47b5e73a8c5fe78a2
+timeCreated: 1481654955
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs b/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs
new file mode 100644
index 0000000000000000000000000000000000000000..424d809e8844e66b9c154297f01d5d63cb17cd78
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs
@@ -0,0 +1,82 @@
+using UnityEngine;
+using System;
+
+namespace Cinemachine
+{
+    /// <summary>
+    /// This is an asset that defines a noise profile.  A noise profile is the 
+    /// shape of the noise as a function of time.  You can build arbitrarily complex shapes by
+    /// combining different base perlin noise frequencies at different amplitudes.
+    /// 
+    /// The frequencies and amplitudes should be chosen with care, to ensure an interesting
+    /// noise quality that is not obviously repetitive.
+    /// 
+    /// As a mathematical side-note, any arbitrary periodic curve can be broken down into a 
+    /// series of fixed-amplitude sine-waves added together.  This is called fourier decomposition,
+    /// and is the basis of much signal processing.  It doesn't really have much to do with this
+    /// asset, but it's super interesting!
+    /// </summary>
+    [DocumentationSorting(9, DocumentationSortingAttribute.Level.UserRef)]
+    public sealed class NoiseSettings : ScriptableObject
+    {
+        /// <summary>
+        /// Describes the behaviour for a channel of noise
+        /// </summary>
+        [DocumentationSorting(9.1f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct NoiseParams
+        {
+            /// <summary>The amplitude of the noise for this channel.  Larger numbers vibrate higher</summary>
+            [Tooltip("The amplitude of the noise for this channel.  Larger numbers vibrate higher.")]
+            public float Amplitude;
+            /// <summary>The frequency of noise for this channel.  Higher magnitudes vibrate faster</summary>
+            [Tooltip("The frequency of noise for this channel.  Higher magnitudes vibrate faster.")]
+            public float Frequency;
+        }
+
+        /// <summary>
+        /// Contains the behaviour of noise for the noise module for all 3 cardinal axes of the camera
+        /// </summary>
+        [DocumentationSorting(9.2f, DocumentationSortingAttribute.Level.UserRef)]
+        [Serializable]
+        public struct TransformNoiseParams
+        {
+            /// <summary>Noise definition for X-axis</summary>
+            [Tooltip("Noise definition for X-axis")]
+            public NoiseParams X;
+            /// <summary>Noise definition for Y-axis</summary>
+            [Tooltip("Noise definition for Y-axis")]
+            public NoiseParams Y;
+            /// <summary>Noise definition for Z-axis</summary>
+            [Tooltip("Noise definition for Z-axis")]
+            public NoiseParams Z;
+        }
+
+        [SerializeField]
+        [Tooltip("These are the noise channels for the virtual camera's position. Convincing noise setups typically mix low, medium and high frequencies together, so start with a size of 3")]
+        private TransformNoiseParams[] m_Position = new TransformNoiseParams[0];
+
+        /// <summary>
+        /// Gets the array of positional noise channels for this <c>NoiseSettings</c>
+        /// </summary>
+        public TransformNoiseParams[] PositionNoise { get { return m_Position; } }
+
+        [SerializeField]
+        [Tooltip("These are the noise channels for the virtual camera's orientation. Convincing noise setups typically mix low, medium and high frequencies together, so start with a size of 3")]
+        private TransformNoiseParams[] m_Orientation = new TransformNoiseParams[0];
+
+        /// <summary>
+        /// Gets the array of orientation noise channels for this <c>NoiseSettings</c>
+        /// </summary>
+        public TransformNoiseParams[] OrientationNoise { get { return m_Orientation; } }
+
+        /// <summary>Clones the contents of the other asset into this one</summary>
+        public void CopyFrom(NoiseSettings other)
+        {
+            m_Position = new TransformNoiseParams[other.m_Position.Length];
+            other.m_Position.CopyTo(m_Position, 0);
+            m_Orientation = new TransformNoiseParams[other.m_Orientation.Length];
+            other.m_Orientation.CopyTo(m_Orientation, 0);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ce5d9cb882074392f9349870c1a8bab2dc8c1f19
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b7f59e54f2bfd184b9dd451a678d089b
+timeCreated: 1481654957
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs b/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8b5c89829190e22a692026377faf471cfb418c26
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs
@@ -0,0 +1,141 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Cinemachine.Utility
+{
+    internal class PositionPredictor
+    {
+        Vector3 m_Position;
+
+        const float kSmoothingDefault = 10;
+        float mSmoothing = kSmoothingDefault;
+        public float Smoothing 
+        {
+            get { return mSmoothing; }
+            set 
+            {
+                if (value != mSmoothing)
+                {
+                    mSmoothing = value;
+                    int maxRadius = Mathf.Max(10, Mathf.FloorToInt(value * 1.5f));
+                    m_Velocity = new GaussianWindow1D_Vector3(mSmoothing, maxRadius);
+                    m_Accel = new GaussianWindow1D_Vector3(mSmoothing, maxRadius);
+                }
+            }
+        }
+
+        GaussianWindow1D_Vector3 m_Velocity = new GaussianWindow1D_Vector3(kSmoothingDefault);
+        GaussianWindow1D_Vector3 m_Accel = new GaussianWindow1D_Vector3(kSmoothingDefault);
+
+        public bool IsEmpty { get { return m_Velocity.IsEmpty(); } }
+
+        public void Reset()
+        {
+            m_Velocity.Reset();
+            m_Accel.Reset();
+        }
+
+        public void AddPosition(Vector3 pos)
+        {
+            if (IsEmpty)
+                m_Velocity.AddValue(Vector3.zero);
+            else
+            {
+                Vector3 vel = m_Velocity.Value();
+                Vector3 vel2 = (pos - m_Position) / Time.deltaTime;
+                m_Velocity.AddValue(vel2);
+                m_Accel.AddValue(vel2 - vel);
+            }
+            m_Position = pos;
+        }
+
+        public Vector3 PredictPosition(float lookaheadTime)
+        {
+            int numSteps = Mathf.Min(Mathf.RoundToInt(lookaheadTime / Time.deltaTime), 6);
+            float dt = lookaheadTime / numSteps;
+            Vector3 pos = m_Position;
+            Vector3 vel = m_Velocity.IsEmpty() ? Vector3.zero : m_Velocity.Value();
+            Vector3 accel = m_Accel.IsEmpty() ? Vector3.zero : m_Accel.Value();
+            for (int i = 0; i < numSteps; ++i)
+            {
+                pos += vel * dt;
+                Vector3 vel2 = vel + (accel * dt);
+                accel = Quaternion.FromToRotation(vel, vel2) * accel;
+                vel = vel2;
+            }
+            return pos;
+        }
+    }
+
+    /// <summary>Utility to perform realistic damping of float or Vector3 values.
+    /// The algorithm is based on exponentially decaying the delta until only
+    /// a negligible amount remains.</summary>
+    public static class Damper
+    {
+        const float Epsilon = UnityVectorExtensions.Epsilon;
+
+        // Get the decay constant that would leave a given residual after a given time
+        static float DecayConstant(float time, float residual)
+        {
+            return Mathf.Log(1f / residual) / time;
+        }
+
+        // Exponential decay: decay a given quantity opver a period of time
+        static float Decay(float initial, float decayConstant, float deltaTime)
+        {
+            return initial /  Mathf.Exp(decayConstant * deltaTime);
+        }
+
+        /// <summary>Standard residual</summary>
+        public const float kNegligibleResidual = 0.01f;
+
+        /// <summary>Get a damped version of a quantity.  This is the portion of the
+        /// quantity that will take effect over the given time.</summary>
+        /// <param name="initial">The amount that will be damped</param>
+        /// <param name="dampTime">The rate of damping.  This is the time it would 
+        /// take to reduce the original amount to a negligible percentage</param>
+        /// <param name="deltaTime">The time over which to damp</param>
+        /// <returns>The damped amount.  This will be the original amount scaled by 
+        /// a value between 0 and 1.</returns>
+        public static float Damp(float initial, float dampTime, float deltaTime)
+        {
+            if (dampTime < Epsilon || Mathf.Abs(initial) < Epsilon)
+                return initial;
+            if (deltaTime < Epsilon)
+                return 0;
+            return initial - Decay(
+                initial, DecayConstant(dampTime, kNegligibleResidual), deltaTime);
+        }
+
+        /// <summary>Get a damped version of a quantity.  This is the portion of the
+        /// quantity that will take effect over the given time.</summary>
+        /// <param name="initial">The amount that will be damped</param>
+        /// <param name="dampTime">The rate of damping.  This is the time it would 
+        /// take to reduce the original amount to a negligible percentage</param>
+        /// <param name="deltaTime">The time over which to damp</param>
+        /// <returns>The damped amount.  This will be the original amount scaled by 
+        /// a value between 0 and 1.</returns>
+        public static Vector3 Damp(Vector3 initial, Vector3 dampTime, float deltaTime)
+        {
+            for (int i = 0; i < 3; ++i)
+                initial[i] = Damp(initial[i], dampTime[i], deltaTime);
+            return initial;
+        }
+
+        /// <summary>Get a damped version of a quantity.  This is the portion of the
+        /// quantity that will take effect over the given time.</summary>
+        /// <param name="initial">The amount that will be damped</param>
+        /// <param name="dampTime">The rate of damping.  This is the time it would 
+        /// take to reduce the original amount to a negligible percentage</param>
+        /// <param name="deltaTime">The time over which to damp</param>
+        /// <returns>The damped amount.  This will be the original amount scaled by 
+        /// a value between 0 and 1.</returns>
+        public static Vector3 Damp(Vector3 initial, float dampTime, float deltaTime)
+        {
+            for (int i = 0; i < 3; ++i)
+                initial[i] = Damp(initial[i], dampTime, deltaTime);
+            return initial;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ddbc47d3a356d738e2ec69dce9d3d526350b940b
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/Predictor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6cef82e891a45884fb2b70604b0f8c29
+timeCreated: 1505225008
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs b/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ca7a3e0dd4fc5a2eee405bb3b789f456e2a85296
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs
@@ -0,0 +1,186 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+
+namespace Cinemachine.Utility
+{
+    /// <summary>An ad-hoc collection of helpers for reflection, used by Cinemachine
+    /// or its editor tools in various places</summary>
+    [DocumentationSorting(0, DocumentationSortingAttribute.Level.Undoc)]
+    public static class ReflectionHelpers
+    {
+        /// <summary>Copy the fields from one object to another</summary>
+        /// <param name="src">The source object to copy from</param>
+        /// <param name="dst">The destination object to copy to</param>
+        /// <param name="bindingAttr">The mask to filter the attributes.
+        /// Only those fields that get caught in the filter will be copied</param>
+        public static void CopyFields(
+            Object src, Object dst,
+            BindingFlags bindingAttr = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
+        {
+            if (src != null && dst != null)
+            {
+                Type type = src.GetType();
+                FieldInfo[] fields = type.GetFields(bindingAttr);
+                for (int i = 0; i < fields.Length; ++i)
+                    if (!fields[i].IsStatic)
+                        fields[i].SetValue(dst, fields[i].GetValue(src));
+            }
+        }
+
+#if UNITY_EDITOR
+        /// <summary>Search the assembly for all types that match a predicate</summary>
+        /// <param name="assembly">The assembly to search</param>
+        /// <param name="predicate">The type to look for</param>
+        /// <returns>A list of types found in the assembly that inherit from the predicate</returns>
+        public static IEnumerable<Type> GetTypesInAssembly(
+            Assembly assembly, Predicate<Type> predicate)
+        {
+            if (assembly == null)
+                return null;
+
+            Type[] types = new Type[0];
+            try
+            {
+                types = assembly.GetTypes();
+            }
+            catch (Exception)
+            {
+                // Can't load the types in this assembly
+            }
+            types = (from t in types
+                     where t != null && predicate(t)
+                     select t).ToArray();
+            return types;
+        }
+
+        /// <summary>Get a type from a name</summary>
+        /// <param name="typeName">The name of the type to search for</param>
+        /// <returns>The type matching the name, or null if not found</returns>
+        public static Type GetTypeInAllLoadedAssemblies(string typeName)
+        {
+            foreach (Type type in GetTypesInAllLoadedAssemblies(t => t.Name == typeName))
+                return type;
+            return null;
+        }
+
+        /// <summary>Search all assemblies for all types that match a predicate</summary>
+        /// <param name="predicate">The type to look for</param>
+        /// <returns>A list of types found in the assembly that inherit from the predicate</returns>
+        public static IEnumerable<Type> GetTypesInAllLoadedAssemblies(Predicate<Type> predicate)
+        {
+            Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
+            List<Type> foundTypes = new List<Type>(100);
+            foreach (Assembly assembly in assemblies)
+            {
+                foreach (Type foundType in GetTypesInAssembly(assembly, predicate))
+                    foundTypes.Add(foundType);
+            }
+            return foundTypes;
+        }
+
+        /// <summary>call GetTypesInAssembly() for all assemblies that match a predicate</summary>
+        /// <param name="assemblyPredicate">Which assemblies to search</param>
+        /// <param name="predicate">What type to look for</param>
+        public static IEnumerable<Type> GetTypesInLoadedAssemblies(
+            Predicate<Assembly> assemblyPredicate, Predicate<Type> predicate)
+        {
+            Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
+            assemblies = assemblies.Where((Assembly assembly)
+                    => { return assemblyPredicate(assembly); }).OrderBy((Assembly ass)
+                    => { return ass.FullName; }).ToArray();
+
+            List<Type> foundTypes = new List<Type>(100);
+            foreach (Assembly assembly in assemblies)
+            {
+                foreach (Type foundType in GetTypesInAssembly(assembly, predicate))
+                    foundTypes.Add(foundType);
+            }
+
+            return foundTypes;
+        }
+
+        public static bool TypeIsDefined(string fullname)
+        {
+            return (from assembly in AppDomain.CurrentDomain.GetAssemblies()
+                from type in assembly.GetTypes()
+                where type.FullName == fullname
+                select type).Count() > 0;
+        }
+#endif
+
+        /// <summary>Cheater extension to access internal field of an object</summary>
+        /// <param name="type">The type of the field</param>
+        /// <param name="obj">The object to access</param>
+        /// <param name="memberName">The string name of the field to access</param>
+        /// <returns>The value of the field in the objects</returns>
+        public static T AccessInternalField<T>(this Type type, object obj, string memberName)
+        {
+            if (string.IsNullOrEmpty(memberName) || (type == null))
+                return default(T);
+
+            BindingFlags bindingFlags = BindingFlags.NonPublic;
+            if (obj != null)
+                bindingFlags |= BindingFlags.Instance;
+            else
+                bindingFlags |= BindingFlags.Static;
+
+            FieldInfo field = type.GetField(memberName, bindingFlags);
+            if ((field != null) && (field.FieldType == typeof(T)))
+                return (T)field.GetValue(obj);
+            else
+                return default(T);
+        }
+
+        /// <summary>Get the object owner of a field.  This method processes
+        /// the '.' separator to get from the object that owns the compound field
+        /// to the object that owns the leaf field</summary>
+        /// <param name="path">The name of the field, which may contain '.' separators</param>
+        /// <param name="obj">the owner of the compound field</param>
+        public static object GetParentObject(string path, object obj)
+        {
+            var fields = path.Split('.');
+            if (fields.Length == 1)
+                return obj;
+
+            var info = obj.GetType().GetField(
+                    fields[0], BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+            obj = info.GetValue(obj);
+
+            return GetParentObject(string.Join(".", fields, 1, fields.Length - 1), obj);
+        }
+
+        /// <summary>Returns a string path from an expression - mostly used to retrieve serialized properties
+        /// without hardcoding the field path. Safer, and allows for proper refactoring.</summary>
+        public static string GetFieldPath<TType, TValue>(Expression<Func<TType, TValue>> expr)
+        {
+            MemberExpression me;
+            switch (expr.Body.NodeType)
+            {
+                case ExpressionType.MemberAccess:
+                    me = expr.Body as MemberExpression;
+                    break;
+                default:
+                    throw new InvalidOperationException();
+            }
+
+            var members = new List<string>();
+            while (me != null)
+            {
+                members.Add(me.Member.Name);
+                me = me.Expression as MemberExpression;
+            }
+
+            var sb = new StringBuilder();
+            for (int i = members.Count - 1; i >= 0; i--)
+            {
+                sb.Append(members[i]);
+                if (i > 0) sb.Append('.');
+            }
+            return sb.ToString();
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..3a1a9654182572c04acc2fea902b0a1712f44df4
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8986fa27e90db314d8a3359520e7fd1a
+timeCreated: 1487370732
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs b/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8a7d29e0024b61771042d1f5a3c0bfe85f35e7c3
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs
@@ -0,0 +1,137 @@
+using UnityEngine;
+
+namespace Cinemachine.Utility
+{
+    internal static class SplineHelpers
+    {
+        public static Vector3 Bezier3(
+            float t, Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3)
+        {
+            t = Mathf.Clamp01(t);
+            float d = 1f - t;
+            return d * d * d * p0 + 3f * d * d * t * p1
+                + 3f * d * t * t * p2 + t * t * t * p3;
+        }
+
+        public static Vector3 BezierTangent3(
+            float t, Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3)
+        {
+            t = Mathf.Clamp01(t);
+            return (-3f * p0 + 9f * p1 - 9f * p2 + 3f * p3) * t * t
+                +  (6f * p0 - 12f * p1 + 6f * p2) * t
+                -  3f * p0 + 3f * p1;
+        }
+
+        public static float Bezier1(float t, float p0, float p1, float p2, float p3)
+        {
+            t = Mathf.Clamp01(t);
+            float d = 1f - t;
+            return d * d * d * p0 + 3f * d * d * t * p1
+                + 3f * d * t * t * p2 + t * t * t * p3;
+        }
+
+        public static float BezierTangent1(
+            float t, float p0, float p1, float p2, float p3)
+        {
+            t = Mathf.Clamp01(t);
+            return (-3f * p0 + 9f * p1 - 9f * p2 + 3f * p3) * t * t
+                +  (6f * p0 - 12f * p1 + 6f * p2) * t
+                -  3f * p0 + 3f * p1;
+        }
+
+        public static void ComputeSmoothControlPoints(
+            ref Vector4[] knot, ref Vector4[] ctrl1, ref Vector4[] ctrl2)
+        {
+            int numPoints = knot.Length;
+            if (numPoints <= 2)
+            {
+                if (numPoints == 2)
+                {
+                    ctrl1[0] = Vector4.Lerp(knot[0], knot[1], 0.33333f);
+                    ctrl2[0] = Vector4.Lerp(knot[0], knot[1], 0.66666f);
+                }
+                else if (numPoints == 1)
+                    ctrl1[0] = ctrl2[0] = knot[0];
+                return;
+            }
+
+            var a = new float[numPoints];
+            var b = new float[numPoints];
+            var c = new float[numPoints];
+            var r = new float[numPoints];
+            for (int axis = 0; axis < 4; ++axis)
+            {
+                int n = numPoints - 1;
+
+                // Linear into the first segment 
+                a[0] = 0;
+                b[0] = 2;
+                c[0] = 1;
+                r[0] = knot[0][axis] + 2 * knot[1][axis];
+
+                // Internal segments
+                for (int i = 1; i < n - 1; ++i)
+                {
+                    a[i] = 1;
+                    b[i] = 4;
+                    c[i] = 1;
+                    r[i] = 4 * knot[i][axis] + 2 * knot[i+1][axis];
+                }
+
+                // Linear out of the last segment 
+                a[n - 1] = 2;
+                b[n - 1] = 7;
+                c[n - 1] = 0;
+                r[n - 1] = 8 * knot[n - 1][axis] + knot[n][axis];
+
+                // Solve with Thomas algorithm
+                for (int i = 1; i < n; ++i)
+                {
+                    float m = a[i] / b[i-1];
+                    b[i] = b[i] - m * c[i-1];
+                    r[i] = r[i] - m * r[i-1];
+                }
+
+                // Compute ctrl1
+                ctrl1[n-1][axis] = r[n-1] / b[n-1];
+                for (int i = n - 2; i >= 0; --i)
+                    ctrl1[i][axis] = (r[i] - c[i] * ctrl1[i + 1][axis]) / b[i];
+
+                // Compute ctrl2 from ctrl1
+                for (int i = 0; i < n; i++)
+                    ctrl2[i][axis] = 2 * knot[i + 1][axis] - ctrl1[i + 1][axis];
+                ctrl2[n - 1][axis] = 0.5f * (knot[n][axis] + ctrl1[n - 1][axis]);
+            }
+        }
+
+        public static void ComputeSmoothControlPointsLooped(
+            ref Vector4[] knot, ref Vector4[] ctrl1, ref Vector4[] ctrl2)
+        {
+            int numPoints = knot.Length;
+            if (numPoints < 2)
+            {
+                if (numPoints == 1)
+                    ctrl1[0] = ctrl2[0] = knot[0];
+                return;
+            }
+
+            int margin = Mathf.Min(4, numPoints-1);
+            Vector4[] knotLooped = new Vector4[numPoints + 2 * margin];
+            Vector4[] ctrl1Looped = new Vector4[numPoints + 2 * margin];
+            Vector4[] ctrl2Looped = new Vector4[numPoints + 2 * margin];
+            for (int i = 0; i < margin; ++i)
+            {
+                knotLooped[i] = knot[numPoints-(margin-i)];
+                knotLooped[numPoints+margin+i] = knot[i];
+            }
+            for (int i = 0; i < numPoints; ++i)
+                knotLooped[i + margin] = knot[i];
+            ComputeSmoothControlPoints(ref knotLooped, ref ctrl1Looped, ref ctrl2Looped);
+            for (int i = 0; i < numPoints; ++i)
+            {
+                ctrl1[i] = ctrl1Looped[i + margin];
+                ctrl2[i] = ctrl2Looped[i + margin];
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..59e559f828de09591023fb57dd491a730ebfc562
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: fca2bf25139920d4f9bf86711457992e
+timeCreated: 1505844077
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs b/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4767832aa6454fc330a1e45a0ca173e1e617b605
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs
@@ -0,0 +1,228 @@
+using UnityEngine;
+
+namespace Cinemachine.Utility
+{
+    /// <summary>Extensions to the Vector3 class, used by Cinemachine</summary>
+    public static class UnityVectorExtensions
+    {
+        /// <summary>A useful Epsilon</summary>
+        public const float Epsilon = 0.0001f;
+
+        /// <summary>
+        /// Get the closest point on a line segment.
+        /// </summary>
+        /// <param name="p">A point in space</param>
+        /// <param name="s0">Start of line segment</param>
+        /// <param name="s1">End of line segment</param>
+        /// <returns>The interpolation parameter representing the point on the segment, with 0==s0, and 1==s1</returns>
+        public static float ClosestPointOnSegment(this Vector3 p, Vector3 s0, Vector3 s1)
+        {
+            Vector3 s = s1 - s0;
+            float len2 = Vector3.SqrMagnitude(s);
+            if (len2 < Epsilon)
+                return 0; // degenrate segment
+            return Mathf.Clamp01(Vector3.Dot(p - s0, s) / len2);
+        }
+
+        /// <summary>
+        /// Get the closest point on a line segment.
+        /// </summary>
+        /// <param name="p">A point in space</param>
+        /// <param name="s0">Start of line segment</param>
+        /// <param name="s1">End of line segment</param>
+        /// <returns>The interpolation parameter representing the point on the segment, with 0==s0, and 1==s1</returns>
+        public static float ClosestPointOnSegment(this Vector2 p, Vector2 s0, Vector2 s1)
+        {
+            Vector2 s = s1 - s0;
+            float len2 = Vector2.SqrMagnitude(s);
+            if (len2 < Epsilon)
+                return 0; // degenrate segment
+            return Mathf.Clamp01(Vector2.Dot(p - s0, s) / len2);
+        }
+
+        /// <summary>
+        /// Returns a non-normalized projection of the supplied vector onto a plane
+        /// as described by its normal
+        /// </summary>
+        /// <param name="vector"></param>
+        /// <param name="planeNormal">The normal that defines the plane.  Cannot be zero-length.</param>
+        /// <returns>The component of the vector that lies in the plane</returns>
+        public static Vector3 ProjectOntoPlane(this Vector3 vector, Vector3 planeNormal)
+        {
+            return (vector - Vector3.Dot(vector, planeNormal) * planeNormal);
+        }
+
+        /// <summary>Is the vector within Epsilon of zero length?</summary>
+        /// <param name="v"></param>
+        /// <returns>True if the square magnitude of the vector is within Epsilon of zero</returns>
+        public static bool AlmostZero(this Vector3 v)
+        {
+            return v.sqrMagnitude < (Epsilon * Epsilon);
+        }
+
+        /// <summary>Get a signed angle between two vectors</summary>
+        /// <param name="from">Start direction</param>
+        /// <param name="to">End direction</param>
+        /// <param name="refNormal">This is needed in order to determine the sign.
+        /// For example, if from an to lie on the XZ plane, then this would be the
+        /// Y unit vector, or indeed any vector which, when dotted with Y unit vector,
+        /// would give a positive result.</param>
+        /// <returns>The signed angle between the vectors</returns>
+        public static float SignedAngle(Vector3 from, Vector3 to, Vector3 refNormal)
+        {
+            from.Normalize();
+            to.Normalize();
+            float dot = Vector3.Dot(Vector3.Cross(from, to), refNormal);
+            if (Mathf.Abs(dot) < -Epsilon)
+                return Vector3.Dot(from, to) < 0 ? 180 : 0;
+            float angle = Vector3.Angle(from, to);
+            if (dot < 0)
+                return -angle;
+            return angle;
+        }
+
+        /// <summary>This is a slerp that mimics a camera operator's movement in that
+        /// it chooses a path that avoids the lower hemisphere, as defined by
+        /// the up param</summary>
+        /// <param name="vA">First direction</param>
+        /// <param name="vB">Second direction</param>
+        /// <param name="t">Interpolation amoun t</param>
+        /// <param name="up">Defines the up direction</param>
+        public static Vector3 SlerpWithReferenceUp(
+            Vector3 vA, Vector3 vB, float t, Vector3 up)
+        {
+            float dA = vA.magnitude;
+            float dB = vB.magnitude;
+            if (dA < Epsilon || dB < Epsilon)
+                return Vector3.Lerp(vA, vB, t);
+
+            Vector3 dirA = vA / dA;
+            Vector3 dirB = vB / dB;
+            Quaternion qA = Quaternion.LookRotation(dirA, up);
+            Quaternion qB = Quaternion.LookRotation(dirB, up);
+            Quaternion q = UnityQuaternionExtensions.SlerpWithReferenceUp(qA, qB, t, up);
+            Vector3 dir = q * Vector3.forward;
+            return dir * Mathf.Lerp(dA, dB, t);
+        }
+    }
+
+    /// <summary>Extentions to the Quaternion class, usen in various places by Cinemachine</summary>
+    public static class UnityQuaternionExtensions
+    {
+        /// <summary>This is a slerp that mimics a camera operator's movement in that
+        /// it chooses a path that avoids the lower hemisphere, as defined by
+        /// the up param</summary>
+        /// <param name="qA">First direction</param>
+        /// <param name="qB">Second direction</param>
+        /// <param name="t">Interpolation amoun t</param>
+        /// <param name="up">Defines the up direction</param>
+        public static Quaternion SlerpWithReferenceUp(
+            Quaternion qA, Quaternion qB, float t, Vector3 up)
+        {
+            Vector3 dirA = (qA * Vector3.forward).ProjectOntoPlane(up);
+            Vector3 dirB = (qB * Vector3.forward).ProjectOntoPlane(up);
+            if (dirA.AlmostZero() || dirB.AlmostZero())
+                return Quaternion.Slerp(qA, qB, t);
+
+            // Work on the plane, in eulers
+            Quaternion qBase = Quaternion.LookRotation(dirA, up);
+            Quaternion qA1 = Quaternion.Inverse(qBase) * qA;
+            Quaternion qB1 = Quaternion.Inverse(qBase) * qB;
+            Vector3 eA = qA1.eulerAngles;
+            Vector3 eB = qB1.eulerAngles;
+            return qBase * Quaternion.Euler(
+                Mathf.LerpAngle(eA.x, eB.x, t),
+                Mathf.LerpAngle(eA.y, eB.y, t),
+                Mathf.LerpAngle(eA.z, eB.z, t));
+        }
+
+        /// <summary>Normalize a quaternion</summary>
+        /// <param name="q"></param>
+        /// <returns>The normalized quaternion.  Unit length is 1.</returns>
+        public static Quaternion Normalized(this Quaternion q)
+        {
+            Vector4 v = new Vector4(q.x, q.y, q.z, q.w).normalized;
+            return new Quaternion(v.x, v.y, v.z, v.w);
+        }
+
+        /// <summary>
+        /// Get the rotations, first about world up, then about (travelling) local right,
+        /// necessary to align the quaternion's forward with the target direction.
+        /// This represents the tripod head movement needed to look at the target.
+        /// This formulation makes it easy to interpolate without introducing spurious roll.
+        /// </summary>
+        /// <param name="orient"></param>
+        /// <param name="lookAtDir">The worldspace target direction in which we want to look</param>
+        /// <param name="worldUp">Which way is up</param>
+        /// <returns>Vector2.y is rotation about worldUp, and Vector2.x is second rotation,
+        /// about local right.</returns>
+        public static Vector2 GetCameraRotationToTarget(
+            this Quaternion orient, Vector3 lookAtDir, Vector3 worldUp)
+        {
+            if (lookAtDir.AlmostZero())
+                return Vector2.zero;  // degenerate
+
+            // Work in local space
+            Quaternion toLocal = Quaternion.Inverse(orient);
+            Vector3 up = toLocal * worldUp;
+            lookAtDir = toLocal * lookAtDir;
+
+            // Align yaw based on world up
+            float angleH = 0;
+            {
+                Vector3 targetDirH = lookAtDir.ProjectOntoPlane(up);
+                if (!targetDirH.AlmostZero())
+                {
+                    Vector3 currentDirH = Vector3.forward.ProjectOntoPlane(up);
+                    if (currentDirH.AlmostZero())
+                    {
+                        // We're looking at the north or south pole
+                        if (Vector3.Dot(currentDirH, up) > 0)
+                            currentDirH = Vector3.down.ProjectOntoPlane(up);
+                        else
+                            currentDirH = Vector3.up.ProjectOntoPlane(up);
+                    }
+                    angleH = UnityVectorExtensions.SignedAngle(currentDirH, targetDirH, up);
+                }
+            }
+            Quaternion q = Quaternion.AngleAxis(angleH, up);
+
+            // Get local vertical angle
+            float angleV = UnityVectorExtensions.SignedAngle(
+                    q * Vector3.forward, lookAtDir, q * Vector3.right);
+
+            return new Vector2(angleV, angleH);
+        }
+
+        /// <summary>
+        /// Apply rotations, first about world up, then about (travelling) local right.
+        /// rot.y is rotation about worldUp, and rot.x is second rotation, about local right.
+        /// </summary>
+        /// <param name="orient"></param>
+        /// <param name="rot">Vector2.y is rotation about worldUp, and Vector2.x is second rotation,
+        /// about local right.</param>
+        /// <param name="worldUp">Which way is up</param>
+        public static Quaternion ApplyCameraRotation(
+            this Quaternion orient, Vector2 rot, Vector3 worldUp)
+        {
+            Quaternion q = Quaternion.AngleAxis(rot.x, Vector3.right);
+            return (Quaternion.AngleAxis(rot.y, worldUp) * orient) * q;
+        }
+    }
+
+    /// <summary>Ad-hoc xxtentions to the Rect structure, used by Cinemachine</summary>
+    public static class UnityRectExtensions
+    {
+        /// <summary>Inflate a rect</summary>
+        /// <param name="r"></param>
+        /// <param name="delta">x and y are added/subtracted fto/from the edges of
+        /// the rect, inflating it in all directions</param>
+        /// <returns>The inflated rect</returns>
+        public static Rect Inflated(this Rect r, Vector2 delta)
+        {
+            return new Rect(
+                r.xMin - delta.x, r.yMin - delta.y,
+                r.width + delta.x * 2, r.height + delta.y * 2);
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs.meta b/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..fae0b0ec1a2fd8b70c82c9453b185551daef261e
--- /dev/null
+++ b/Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6a0472cd31396f741969b8c1af8dd5a0
+timeCreated: 1481654955
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/CINEMACHINE_install.pdf b/Assets/Cinemachine/CINEMACHINE_install.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..12ef8dd871babe95c809b722b664ef9640e01d0e
Binary files /dev/null and b/Assets/Cinemachine/CINEMACHINE_install.pdf differ
diff --git a/Assets/Cinemachine/CINEMACHINE_install.pdf.meta b/Assets/Cinemachine/CINEMACHINE_install.pdf.meta
new file mode 100644
index 0000000000000000000000000000000000000000..851dccff79ae4141b6716515ce097890ac7bd972
--- /dev/null
+++ b/Assets/Cinemachine/CINEMACHINE_install.pdf.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f9e81eceaa4926345af2955aff7cf00b
+timeCreated: 1482432997
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/CinemachineAPI.chm b/Assets/Cinemachine/CinemachineAPI.chm
new file mode 100644
index 0000000000000000000000000000000000000000..a3c76b3d6e8fa1a72e655973663557ced6178233
Binary files /dev/null and b/Assets/Cinemachine/CinemachineAPI.chm differ
diff --git a/Assets/Cinemachine/CinemachineAPI.chm.meta b/Assets/Cinemachine/CinemachineAPI.chm.meta
new file mode 100644
index 0000000000000000000000000000000000000000..76e5115f3175850b1fb834bf42e4308fcca5f65c
--- /dev/null
+++ b/Assets/Cinemachine/CinemachineAPI.chm.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 42cf855b42713884aa8851e8bb50acc3
+timeCreated: 1491835890
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/CinemachineExamples.unitypackage b/Assets/Cinemachine/CinemachineExamples.unitypackage
new file mode 100644
index 0000000000000000000000000000000000000000..d121391cb883a3383b7855c5ab0c3dcebad6d7f2
Binary files /dev/null and b/Assets/Cinemachine/CinemachineExamples.unitypackage differ
diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Cinemachine/CinemachineExamples.unitypackage.meta
similarity index 74%
rename from Assets/Scenes/SampleScene.unity.meta
rename to Assets/Cinemachine/CinemachineExamples.unitypackage.meta
index c1e3c88e1cf25569cfffa5347eb9289085ed7d63..6d3401376de92f7df7215fc7872b13d9642e39da 100644
--- a/Assets/Scenes/SampleScene.unity.meta
+++ b/Assets/Cinemachine/CinemachineExamples.unitypackage.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 2cda990e2423bbf4892e6590ba056729
+guid: 435e0ab87d10d1d46966abe3e1b854db
 DefaultImporter:
   externalObjects: {}
   userData: 
diff --git a/Assets/Cinemachine/Gizmos.meta b/Assets/Cinemachine/Gizmos.meta
new file mode 100644
index 0000000000000000000000000000000000000000..de400d01a0b0924417b5c7627c173b0e33b3d3c8
--- /dev/null
+++ b/Assets/Cinemachine/Gizmos.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d9ca844c06be1ab40a3f7fc9e3c42c55
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Gizmos/Cinemachine.meta b/Assets/Cinemachine/Gizmos/Cinemachine.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e7f65cee6f98fd10850c2e0581ac53c7ebc42c01
--- /dev/null
+++ b/Assets/Cinemachine/Gizmos/Cinemachine.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: ca2168befea188b41a64ed01e777e286
+folderAsset: yes
+timeCreated: 1455580628
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png b/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png
new file mode 100644
index 0000000000000000000000000000000000000000..47f19039cdb9255631ae9ed10359e035ff08aa3a
Binary files /dev/null and b/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png differ
diff --git a/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png.meta b/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..59553feaef77612a79068dd7d20d8c0ada70db98
--- /dev/null
+++ b/Assets/Cinemachine/Gizmos/Cinemachine/cm_logo_lg.png.meta
@@ -0,0 +1,82 @@
+fileFormatVersion: 2
+guid: ca058052cfb44474dbd1f8ec45658065
+timeCreated: 1456162759
+licenseType: Store
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 1
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  - buildTarget: Standalone
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/LICENSE b/Assets/Cinemachine/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..858ba249a71c45646e2402e5b539dfba98453af7
--- /dev/null
+++ b/Assets/Cinemachine/LICENSE
@@ -0,0 +1,30 @@
+Unity Companion Cinemachine Code License 1.0 (“License”)
+Copyright © 2017 Unity Technologies ApS (“Unity”)
+ 
+Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License (“Software”), subject to the following terms and conditions: 
+ 
+1. Unity Companion Use Only. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license (“Engine License”). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted.
+ 
+2. No Modification of Engine License. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way.
+ 
+3. Ownership & Grant Back to You. 
+
+3.1 You own your content. In this License, “derivative works” means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content.
+
+3.2 Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. 
+
+3.3 You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License.
+ 
+4. Trademarks. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates (“Trademarks”). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at https://unity3d.com/public-relations/brand.
+ 
+5. Notices & Third-Party Rights. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity “third-party notices” or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms.
+ 
+6. DISCLAIMER, LIMITATION OF LIABILITY. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+7. USE IS ACCEPTANCE and License Versions. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. 
+ 
+8. Use in Compliance with Law and Termination. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License.
+
+9. Severability. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect.
+
+10. Governing Law and Venue. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License (“Dispute”). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. 
diff --git a/Assets/Cinemachine/LICENSE.meta b/Assets/Cinemachine/LICENSE.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1b14703483baf677b1931673136f5d3706a33759
--- /dev/null
+++ b/Assets/Cinemachine/LICENSE.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0d832c901796201458d7c595a98a0242
+timeCreated: 1490729325
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX.meta b/Assets/Cinemachine/PostFX.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2404e68aef9b15eccb2cd300fc8b4a419124d044
--- /dev/null
+++ b/Assets/Cinemachine/PostFX.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2a82dea150a2b394388860e48a701ed4
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/CinemachinePostFX.cs b/Assets/Cinemachine/PostFX/CinemachinePostFX.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9d0ac89fb83699c9137ca3648643f4b37d57b1a8
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/CinemachinePostFX.cs
@@ -0,0 +1,161 @@
+using UnityEngine;
+
+// NOTE: If you are getting errors of the sort that say something like:
+//     "The type or namespace name `PostProcessing' does not exist in the namespace"
+// it is because the PostProcessing v1 module has been removed from your project.
+//
+// To make the errors go away, you can either:
+//   1 - Download PostProcessing V1 and install it into your project
+// or
+//   2 - Go into PlayerSettings/OtherSettings and remove the Scripting Define for UNITY_POST_PROCESSING_STACK_V1
+//
+
+namespace Cinemachine.PostFX
+{
+#if UNITY_POST_PROCESSING_STACK_V1 && !UNITY_POST_PROCESSING_STACK_V2
+    /// <summary>
+    /// This behaviour is a liaison between Cinemachine with the Post-Processing v1 module.  You must 
+    /// have the Post-Processing V1 stack asset store package installed in order to use this behaviour.
+    /// 
+    /// It's used in 2 ways:
+    ///
+    /// * As a component on the Unity Camera: it serves as the liaison
+    /// between the camera's CinemachineBrain and the camera's Post-Processing behaviour.
+    /// It listens for camera Cut events and resets the Post-Processing stack when they occur.
+    /// If you are using Post-Processing, then you should add this behaviour to your
+    /// camera alongside the CinemachineBrain, always.
+    ///
+    /// * As a component on the Virtual Camera: In this capacity, it holds
+    /// a Post-Processing Profile asset that will be applied to the Unity camera whenever 
+    /// the Virtual camera is live.  It also has the (temporary) optional functionality of animating
+    /// the Focus Distance and DepthOfField properties of the Camera State, and
+    /// applying them to the current Post-Processing profile.
+    /// </summary>
+    [DocumentationSorting(100, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [DisallowMultipleComponent]
+    [AddComponentMenu("Cinemachine/CinemachinePostFX")]
+    [SaveDuringPlay]
+    public class CinemachinePostFX : MonoBehaviour
+    {
+        // Just for the Enabled checkbox
+        void Update() {}
+
+        [Tooltip("When this behaviour is on a Unity Camera, this setting is the default Post-Processing profile for the camera, and will be applied whenever it is not overridden by a virtual camera.  When the behaviour is on a virtual camera, then this is the Post-Processing profile that will become active whenever this virtual camera is live")]
+        public UnityEngine.PostProcessing.PostProcessingProfile m_Profile;
+
+        [Tooltip("If checked, then the Focus Distance will be set to the distance between the camera and the LookAt target.")]
+        public bool m_FocusTracksTarget;
+
+        [Tooltip("Offset from target distance, to be used with Focus Tracks Target.")]
+        public float m_FocusOffset;
+
+        // These are used if this behaviour is on a Unity Camera
+        CinemachineBrain mBrain;
+        UnityEngine.PostProcessing.PostProcessingBehaviour mPostProcessingBehaviour;
+
+        void ConnectToBrain()
+        {
+            // If I am a component on the Unity camera, connect to its brain
+            // and to its post-processing behaviour
+            mBrain = GetComponent<CinemachineBrain>();
+            if (mBrain != null)
+            {
+                mBrain.m_CameraCutEvent.RemoveListener(OnCameraCut);
+                mBrain.m_CameraCutEvent.AddListener(OnCameraCut);
+            }
+            // Must have one of these if connected to a brain
+            mPostProcessingBehaviour = GetComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>();
+            if (mPostProcessingBehaviour == null && mBrain != null)
+                mPostProcessingBehaviour = gameObject.AddComponent<UnityEngine.PostProcessing.PostProcessingBehaviour>();
+        }
+
+        void OnDestroy()
+        {
+            if (mBrain != null)
+                mBrain.m_CameraCutEvent.RemoveListener(OnCameraCut);
+        }
+
+        // CinemachineBrain callback used when this behaviour is on the Unity Camera
+        internal void PostFXHandler(CinemachineBrain brain)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostFX.PostFXHandler");
+            ICinemachineCamera vcam = brain.ActiveVirtualCamera;
+            if (enabled && mBrain != null && mPostProcessingBehaviour != null)
+            {
+                // Look for the vcam's PostFX behaviour
+                CinemachinePostFX postFX = GetEffectivePostFX(vcam);
+                if (postFX == null)
+                    postFX = this;  // vcam does not define a profile - apply the default
+                if (postFX.m_Profile != null)
+                {
+                    // Adjust the focus distance
+                    CameraState state = brain.CurrentCameraState;
+                    UnityEngine.PostProcessing.DepthOfFieldModel.Settings dof
+                        = postFX.m_Profile.depthOfField.settings;
+                    if (postFX.m_FocusTracksTarget && state.HasLookAt)
+                        dof.focusDistance = (state.FinalPosition - state.ReferenceLookAt).magnitude
+                            + postFX.m_FocusOffset;
+                    postFX.m_Profile.depthOfField.settings = dof;
+                }
+                // Apply the profile
+                if (mPostProcessingBehaviour.profile != postFX.m_Profile)
+                {
+                    mPostProcessingBehaviour.profile = postFX.m_Profile;
+                    mPostProcessingBehaviour.ResetTemporalEffects();
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        CinemachinePostFX GetEffectivePostFX(ICinemachineCamera vcam)
+        {
+            while (vcam != null && vcam.LiveChildOrSelf != vcam)
+                vcam = vcam.LiveChildOrSelf;
+            CinemachinePostFX postFX = null;
+            while (vcam != null && postFX == null)
+            {
+                CinemachineVirtualCameraBase vcamBase = vcam as CinemachineVirtualCameraBase;
+                if (vcamBase != null)
+                    postFX = vcamBase.GetComponent<CinemachinePostFX>();
+                if (postFX != null && !postFX.enabled)
+                    postFX = null;
+                vcam = vcam.ParentCamera;
+            }
+            return postFX;
+        }
+
+        void OnCameraCut(CinemachineBrain brain)
+        {
+            if (mPostProcessingBehaviour != null)
+            {
+                //Debug.Log("CinemachinePostFX.OnCameraCut()");
+                mPostProcessingBehaviour.ResetTemporalEffects();
+            }
+        }
+
+        static void StaticPostFXHandler(CinemachineBrain brain)
+        {
+            CinemachinePostFX postFX = brain.PostProcessingComponent as CinemachinePostFX;
+            if (postFX == null)
+            {
+                brain.PostProcessingComponent = brain.GetComponent<CinemachinePostFX>();
+                postFX = brain.PostProcessingComponent as CinemachinePostFX;
+                if (postFX != null)
+                    postFX.ConnectToBrain();
+            }
+            if (postFX != null)
+                postFX.PostFXHandler(brain);
+        }
+
+        /// <summary>Internal method called by editor module</summary>
+        [RuntimeInitializeOnLoadMethod]
+        public static void InitializeModule()
+        {
+            // When the brain pushes the state to the camera, hook in to the PostFX
+            CinemachineBrain.sPostProcessingHandler.RemoveListener(StaticPostFXHandler);
+            CinemachineBrain.sPostProcessingHandler.AddListener(StaticPostFXHandler);
+        }
+    }
+#endif
+}
diff --git a/Assets/Cinemachine/PostFX/CinemachinePostFX.cs.meta b/Assets/Cinemachine/PostFX/CinemachinePostFX.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..92e322cd3ab7fab286b318432d861ad202799aeb
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/CinemachinePostFX.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 360979aafebd332448626a2236bafdb4
+timeCreated: 1493845370
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs b/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4fc6241a34030c73293ecc839ad1dc3282b383ec
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs
@@ -0,0 +1,231 @@
+#if UNITY_POST_PROCESSING_STACK_V2
+
+// NOTE: If you are getting errors of the sort that say something like:
+//     "The type or namespace name `PostProcessing' does not exist in the namespace"
+// it is because the PostProcessing v2 module has been removed from your project.
+//
+// To make the errors go away, you can either:
+//   1 - Download PostProcessing V2 and install it into your project
+// or
+//   2 - Go into PlayerSettings/OtherSettings and remove the Scripting Define for UNITY_POST_PROCESSING_STACK_V2
+//
+
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Rendering.PostProcessing;
+
+namespace Cinemachine.PostFX
+{
+    /// <summary>
+    /// This behaviour is a liaison between Cinemachine with the Post-Processing v2 module.  You must 
+    /// have the Post-Processing V2 stack asset store package installed in order to use this behaviour.
+    /// 
+    /// As a component on the Virtual Camera, it holds
+    /// a Post-Processing Profile asset that will be applied to the Unity camera whenever 
+    /// the Virtual camera is live.  It also has the optional functionality of animating
+    /// the Focus Distance and DepthOfField properties of the Camera State, and
+    /// applying them to the current Post-Processing profile, provided that profile has a
+    /// DepthOfField effect that is enabled.
+    /// </summary>
+    [DocumentationSorting(101, DocumentationSortingAttribute.Level.UserRef)]
+    [ExecuteInEditMode]
+    [AddComponentMenu("")] // Hide in menu
+    [SaveDuringPlay]
+    public class CinemachinePostProcessing : CinemachineExtension
+    {
+        [Tooltip("If checked, then the Focus Distance will be set to the distance between the camera and the LookAt target.  Requires DepthOfField effect in the Profile")]
+        public bool m_FocusTracksTarget;
+
+        [Tooltip("Offset from target distance, to be used with Focus Tracks Target.  Offsets the sharpest point away from the LookAt target.")]
+        public float m_FocusOffset;
+
+        [Tooltip("This Post-Processing profile will be applied whenever this virtual camera is live")]
+        public PostProcessProfile m_Profile;
+
+        bool mCachedProfileIsInvalid = true;
+        PostProcessProfile mProfileCopy;
+        public PostProcessProfile Profile { get { return mProfileCopy != null ? mProfileCopy : m_Profile; } }
+
+        /// <summary>True if the profile is enabled and nontrivial</summary>
+        public bool IsValid { get { return m_Profile != null && m_Profile.settings.Count > 0; } }
+
+        /// <summary>Called by the editor when the shared asset has been edited</summary>
+        public void InvalidateCachedProfile() { mCachedProfileIsInvalid = true; }
+
+        void CreateProfileCopy()
+        {
+            DestroyProfileCopy();
+            PostProcessProfile profile = ScriptableObject.CreateInstance<PostProcessProfile>();
+            if (m_Profile != null)
+            {
+                foreach (var item in m_Profile.settings)
+                {
+                    var itemCopy = Instantiate(item);
+                    profile.settings.Add(itemCopy);
+                }
+            }
+            mProfileCopy = profile;
+            mCachedProfileIsInvalid = false;
+        }
+
+        void DestroyProfileCopy()
+        {
+            if (mProfileCopy != null)
+                DestroyImmediate(mProfileCopy);
+            mProfileCopy = null;
+        }
+
+        protected override void OnDestroy()
+        {
+            base.OnDestroy();
+            DestroyProfileCopy();
+        }
+
+        protected override void PostPipelineStageCallback(
+            CinemachineVirtualCameraBase vcam,
+            CinemachineCore.Stage stage, ref CameraState state, float deltaTime)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostProcessing.PostPipelineStageCallback");
+            // Set the focus after the camera has been fully positioned.
+            // GML todo: what about collider?
+            if (stage == CinemachineCore.Stage.Aim)
+            {
+                if (!IsValid)
+                    DestroyProfileCopy();
+                else
+                {
+                    // Handle Follow Focus
+                    if (!m_FocusTracksTarget || !state.HasLookAt)
+                        DestroyProfileCopy();
+                    else
+                    {
+                        if (mProfileCopy == null || mCachedProfileIsInvalid)
+                            CreateProfileCopy();
+                        DepthOfField dof;
+                        if (mProfileCopy.TryGetSettings(out dof))
+                            dof.focusDistance.value 
+                                = (state.FinalPosition - state.ReferenceLookAt).magnitude + m_FocusOffset;
+                    }
+
+                    // Apply the post-processing
+                    state.AddCustomBlendable(new CameraState.CustomBlendable(this, 1));
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        static void OnCameraCut(CinemachineBrain brain)
+        {
+            // Debug.Log("Camera cut event");
+            PostProcessLayer postFX = brain.PostProcessingComponent as PostProcessLayer;
+            if (postFX == null)
+                brain.PostProcessingComponent = null;   // object deleted
+            else
+                postFX.ResetHistory();
+        }
+
+        static void ApplyPostFX(CinemachineBrain brain)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostProcessing.ApplyPostFX");
+            PostProcessLayer ppLayer = brain.GetComponent<PostProcessLayer>();
+            if (ppLayer == null || !ppLayer.enabled  || ppLayer.volumeLayer == 0)
+                return;
+
+            CameraState state = brain.CurrentCameraState;
+            int numBlendables = state.NumCustomBlendables;
+            List<PostProcessVolume> volumes = GetDynamicBrainVolumes(brain, ppLayer, numBlendables);
+            for (int i = 0; i < volumes.Count; ++i)
+            {
+                volumes[i].weight = 0;
+                volumes[i].sharedProfile = null;
+                volumes[i].profile = null;
+            }
+            for (int i = 0; i < numBlendables; ++i)
+            {
+                var b = state.GetCustomBlendable(i);
+                CinemachinePostProcessing src = b.m_Custom as CinemachinePostProcessing;
+                if (!(src == null)) // in case it was deleted
+                {
+                    PostProcessVolume v = volumes[i];
+                    v.sharedProfile = src.Profile;
+                    v.isGlobal = true;
+                    v.priority = float.MaxValue-1;
+                    v.weight = b.m_Weight;
+                }
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+        }
+
+        static string sVolumeOwnerName = "__CMVolumes";
+        static  List<PostProcessVolume> sVolumes = new List<PostProcessVolume>();
+        static List<PostProcessVolume> GetDynamicBrainVolumes(
+            CinemachineBrain brain, PostProcessLayer ppLayer, int minVolumes)
+        {
+            //UnityEngine.Profiling.Profiler.BeginSample("CinemachinePostProcessing.GetDynamicBrainVolumes");
+            // Locate the camera's child object that holds our dynamic volumes
+            GameObject volumeOwner = null;
+            Transform t = brain.transform;
+            int numChildren = t.childCount;
+
+            sVolumes.Clear();
+            for (int i = 0; volumeOwner == null && i < numChildren; ++i)
+            {
+                GameObject child = t.GetChild(i).gameObject;
+                if (child.hideFlags == HideFlags.HideAndDontSave)
+                {
+                    child.GetComponents(sVolumes);
+                    if (sVolumes.Count > 0)
+                        volumeOwner = child;
+                }
+            }
+
+            if (minVolumes > 0)
+            {
+                if (volumeOwner == null)
+                {
+                    volumeOwner = new GameObject(sVolumeOwnerName);
+                    volumeOwner.hideFlags = HideFlags.HideAndDontSave;
+                    volumeOwner.transform.parent = t;
+                }
+                // Update the volume's layer so it will be seen
+                int mask = ppLayer.volumeLayer.value;
+                for (int i = 0; i < 32; ++i)
+                {
+                    if ((mask & (1 << i)) != 0)
+                    {
+                        volumeOwner.layer = i;
+                        break;
+                    }
+                }
+                while (sVolumes.Count < minVolumes)
+                    sVolumes.Add(volumeOwner.gameObject.AddComponent<PostProcessVolume>());
+            }
+            //UnityEngine.Profiling.Profiler.EndSample();
+            return sVolumes;
+        }
+
+        /// <summary>Internal method called by editor module</summary>
+        [RuntimeInitializeOnLoadMethod]
+        public static void InitializeModule()
+        {
+            // When the brain pushes the state to the camera, hook in to the PostFX
+            CinemachineBrain.sPostProcessingHandler.RemoveListener(StaticPostFXHandler);
+            CinemachineBrain.sPostProcessingHandler.AddListener(StaticPostFXHandler);
+        }
+
+        static void StaticPostFXHandler(CinemachineBrain brain)
+        {
+            PostProcessLayer postFX = brain.PostProcessingComponent as PostProcessLayer;
+            if (postFX == null)
+            {
+                brain.PostProcessingComponent = brain.GetComponent<PostProcessLayer>();
+                postFX = brain.PostProcessingComponent as PostProcessLayer;
+                if (postFX != null)
+                        brain.m_CameraCutEvent.AddListener(CinemachinePostProcessing.OnCameraCut);
+            }
+            if (postFX != null)
+                CinemachinePostProcessing.ApplyPostFX(brain);
+        }
+    }
+}
+#endif
diff --git a/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs.meta b/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..081dc264bab809441b4c7776b58c99b5563b50d2
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 729aad4491e915a41bda2b8325cf757a
+timeCreated: 1504838447
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {fileID: 2800000, guid: 5f2a108eb023faf43a809979fd3d38f2, type: 3}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/Editor.meta b/Assets/Cinemachine/PostFX/Editor.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b1f7ae30b3160c6ecc68c9f8f9e990fd364d5fab
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 8656080a6ad58f046abadcd6f2c0fb4f
+folderAsset: yes
+timeCreated: 1493832945
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs b/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7306d5332601dcb64e072161256ebf6fe32d5329
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs
@@ -0,0 +1,180 @@
+#if UNITY_POST_PROCESSING_STACK_V2
+
+// NOTE: If you are getting errors of the sort that say something like:
+//     "The type or namespace name `PostProcessing' does not exist in the namespace"
+// it is because the PostProcessing v2 module has been removed from your project.
+//
+// To make the errors go away, you can either:
+//   1 - Download PostProcessing V2 and install it into your project
+// or
+//   2 - Go into PlayerSettings and remove the define for UNITY_POST_PROCESSING_STACK_V2
+//
+
+using UnityEngine;
+using UnityEditor;
+using UnityEngine.Rendering.PostProcessing;
+using UnityEditor.Rendering.PostProcessing;
+
+namespace Cinemachine.PostFX.Editor
+{
+    [CustomEditor(typeof(CinemachinePostProcessing))]
+    public sealed class CinemachinePostProcessingEditor 
+        : Cinemachine.Editor.BaseEditor<CinemachinePostProcessing>
+    {
+        SerializedProperty m_Profile;
+        SerializedProperty m_FocusTracksTarget;
+        SerializedProperty m_FocusOffset;
+
+        EffectListEditor m_EffectList;
+        GUIContent m_ProfileLabel;
+
+        void OnEnable()
+        {
+            Texture textue = Resources.Load("PostProcessLayer") as Texture;
+            m_ProfileLabel = new GUIContent("Profile", textue, "A reference to a profile asset");
+
+            m_FocusTracksTarget = FindProperty(x => x.m_FocusTracksTarget);
+            m_FocusOffset = FindProperty(x => x.m_FocusOffset);
+            m_Profile = FindProperty(x => x.m_Profile);
+
+            m_EffectList = new EffectListEditor(this);
+            RefreshEffectListEditor(Target.m_Profile);
+        }
+
+        void OnDisable()
+        {
+            m_EffectList.Clear();
+        }
+
+        void RefreshEffectListEditor(PostProcessProfile asset)
+        {
+            m_EffectList.Clear();
+            if (asset != null)
+                m_EffectList.Init(asset, new SerializedObject(asset));
+        }
+
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
+
+            var rect = GUILayoutUtility.GetRect(1, EditorGUIUtility.singleLineHeight); rect.y += 2;
+            float checkboxWidth = rect.height + 5;
+            rect = EditorGUI.PrefixLabel(rect, new GUIContent(m_FocusTracksTarget.displayName));
+            EditorGUI.PropertyField(new Rect(rect.x, rect.y, checkboxWidth, rect.height), m_FocusTracksTarget, GUIContent.none);
+            rect.x += checkboxWidth; rect.width -= checkboxWidth;
+            if (m_FocusTracksTarget.boolValue)
+            {
+                GUIContent offsetText = new GUIContent("Offset ");
+                var textDimensions = GUI.skin.label.CalcSize(offsetText);
+                float oldWidth = EditorGUIUtility.labelWidth;
+                EditorGUIUtility.labelWidth = textDimensions.x;
+                EditorGUI.PropertyField(rect, m_FocusOffset, offsetText);
+                EditorGUIUtility.labelWidth = oldWidth;
+
+                bool valid = false;
+                DepthOfField dof;
+                if (Target.m_Profile != null && Target.m_Profile.TryGetSettings<DepthOfField>(out dof))
+                    valid = dof.enabled && dof.active && dof.focusDistance.overrideState 
+                        && Target.VirtualCamera.LookAt != null;
+                if (!valid)
+                    EditorGUILayout.HelpBox(
+                        "Focus Tracking requires a LookAt target on the Virtual Camera, and an active DepthOfField/FocusDistance effect in the profile", 
+                        MessageType.Warning);
+            }
+
+            DrawProfileInspectorGUI();
+            Target.InvalidateCachedProfile();
+
+            serializedObject.ApplyModifiedProperties();
+        }
+
+        void DrawProfileInspectorGUI()
+        {
+            EditorGUILayout.Space();
+
+            bool assetHasChanged = false;
+            bool showCopy = m_Profile.objectReferenceValue != null;
+
+            // The layout system sort of break alignement when mixing inspector fields with custom
+            // layouted fields, do the layout manually instead
+            int buttonWidth = showCopy ? 45 : 60;
+            float indentOffset = EditorGUI.indentLevel * 15f;
+            var lineRect = GUILayoutUtility.GetRect(1, EditorGUIUtility.singleLineHeight);
+            var labelRect = new Rect(lineRect.x, lineRect.y, EditorGUIUtility.labelWidth - indentOffset, lineRect.height);
+            var fieldRect = new Rect(labelRect.xMax, lineRect.y, lineRect.width - labelRect.width - buttonWidth * (showCopy ? 2 : 1), lineRect.height);
+            var buttonNewRect = new Rect(fieldRect.xMax, lineRect.y, buttonWidth, lineRect.height);
+            var buttonCopyRect = new Rect(buttonNewRect.xMax, lineRect.y, buttonWidth, lineRect.height);
+
+            EditorGUI.PrefixLabel(labelRect, m_ProfileLabel);
+
+            using (var scope = new EditorGUI.ChangeCheckScope())
+            {
+                m_Profile.objectReferenceValue 
+                    = (PostProcessProfile)EditorGUI.ObjectField(
+                        fieldRect, m_Profile.objectReferenceValue, typeof(PostProcessProfile), false);
+                assetHasChanged = scope.changed;
+            }
+
+            if (GUI.Button(
+                buttonNewRect, 
+                EditorUtilities.GetContent("New|Create a new profile."), 
+                showCopy ? EditorStyles.miniButtonLeft : EditorStyles.miniButton))
+            {
+                // By default, try to put assets in a folder next to the currently active
+                // scene file. If the user isn't a scene, put them in root instead.
+                var targetName = Target.name;
+                var scene = Target.gameObject.scene;
+                var asset = ProfileFactory.CreatePostProcessProfile(scene, targetName);
+                m_Profile.objectReferenceValue = asset;
+                assetHasChanged = true;
+            }
+
+            if (showCopy && GUI.Button(
+                buttonCopyRect, 
+                EditorUtilities.GetContent("Clone|Create a new profile and copy the content of the currently assigned profile."), 
+                EditorStyles.miniButtonRight))
+            {
+                // Duplicate the currently assigned profile and save it as a new profile
+                var origin = (PostProcessProfile)m_Profile.objectReferenceValue;
+                var path = AssetDatabase.GetAssetPath(origin);
+                path = AssetDatabase.GenerateUniqueAssetPath(path);
+
+                var asset = Instantiate(origin);
+                asset.settings.Clear();
+                AssetDatabase.CreateAsset(asset, path);
+
+                foreach (var item in origin.settings)
+                {
+                    var itemCopy = Instantiate(item);
+                    itemCopy.hideFlags = HideFlags.HideInInspector | HideFlags.HideInHierarchy;
+                    itemCopy.name = item.name;
+                    asset.settings.Add(itemCopy);
+                    AssetDatabase.AddObjectToAsset(itemCopy, asset);
+                }
+
+                AssetDatabase.SaveAssets();
+                AssetDatabase.Refresh();
+                
+                m_Profile.objectReferenceValue = asset;
+                assetHasChanged = true;
+            }
+
+            if (m_Profile.objectReferenceValue == null)
+            {
+                if (assetHasChanged)
+                    m_EffectList.Clear(); // Asset wasn't null before, do some cleanup
+
+                EditorGUILayout.HelpBox(
+                    "Assign an existing Post-process Profile by choosing an asset, or create a new one by clicking the \"New\" button.\nNew assets are automatically put in a folder next to your scene file. If your scene hasn't been saved yet they will be created at the root of the Assets folder.", 
+                    MessageType.Info);
+            }
+            else
+            {
+                if (assetHasChanged)
+                    RefreshEffectListEditor((PostProcessProfile)m_Profile.objectReferenceValue);
+                m_EffectList.OnGUI();
+            }
+        }
+    }
+} 
+#endif
diff --git a/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs.meta b/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1b8fbd26c2da1c4455573e082bdf5deccfaa97db
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: dec69862942cc9744ade63216979cafd
+timeCreated: 1504726346
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs b/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..11561977016977e98d22eec3d7bd5263afe89d53
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs
@@ -0,0 +1,35 @@
+
+namespace Cinemachine.PostFX
+{
+    /// <summary>Integrates Cinemachine with PostProcessing V1 stack.</summary>
+    /// Since PostPorcessing V1 does not create a define in Player settings the
+    /// way V2 does, we do it ourselves if we detect the presence of PostProcessing V1
+    class PostFXAutoImport
+    {
+        [UnityEditor.InitializeOnLoad]
+        class EditorInitialize 
+        {
+            static EditorInitialize() 
+            {
+#if UNITY_POST_PROCESSING_STACK_V2
+                // We have PPv2
+                CinemachinePostProcessing.InitializeModule();
+#else
+                // Check for PostProcessing V1.  Define symbol if we have it.
+                if (Cinemachine.Utility.ReflectionHelpers.TypeIsDefined("UnityEngine.PostProcessing.PostProcessingBehaviour"))
+                {
+                    if (Cinemachine.Editor.ScriptableObjectUtility.AddDefineForAllBuildTargets("UNITY_POST_PROCESSING_STACK_V1"))
+                    {
+                        string path = Cinemachine.Editor.ScriptableObjectUtility.CinemachineInstallAssetPath + "/PostFX/CinemachinePostFX.cs";
+                        UnityEditor.AssetDatabase.ImportAsset(path, UnityEditor.ImportAssetOptions.ForceUpdate);
+                    }
+                }
+    #if UNITY_POST_PROCESSING_STACK_V1
+                // We have PPv1
+                CinemachinePostFX.InitializeModule(); 
+    #endif
+#endif
+            } 
+        }
+    }
+}
diff --git a/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs.meta b/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..7b0d7516180440641a8983c8620e246ededcc855
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f6542fc5402b30a4482cd20a3621602b
+timeCreated: 1493832945
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/Editor/Resources.meta b/Assets/Cinemachine/PostFX/Editor/Resources.meta
new file mode 100644
index 0000000000000000000000000000000000000000..20303b9071f992d7d0b32ec47f70a7c80e59c5ef
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/Resources.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f15624949ca514549b2f04481b49bdd0
+folderAsset: yes
+timeCreated: 1504790995
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png b/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0a61de773e2f08510a63f4afd48ef517014fe5b
Binary files /dev/null and b/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png differ
diff --git a/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png.meta b/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b9624e00b024e93e9b71984bb3f2a3ca859c1c43
--- /dev/null
+++ b/Assets/Cinemachine/PostFX/Editor/Resources/PostProcessLayer.png.meta
@@ -0,0 +1,74 @@
+fileFormatVersion: 2
+guid: 1fa3cd9f91afee64e96c128a82544bcd
+timeCreated: 1504790999
+licenseType: Store
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 4
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets.meta b/Assets/Cinemachine/Presets.meta
new file mode 100644
index 0000000000000000000000000000000000000000..08ca6d6e1be69170972df18c9160bf3da1efd020
--- /dev/null
+++ b/Assets/Cinemachine/Presets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9f96161bfc85a364aac3baa0b7279f94
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise.meta b/Assets/Cinemachine/Presets/Noise.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5dfe1995ea7fd0fde9102c13574765f9fb9cd36a
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 8f107aadf823af24889bc290a1cca90d
+folderAsset: yes
+timeCreated: 1455314775
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset b/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset
new file mode 100644
index 0000000000000000000000000000000000000000..1c75436b0a106510686c9cce1ee7bad689979951
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_normal_extreme
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 15
+      Frequency: 0.2
+    Y:
+      Amplitude: 7
+      Frequency: 0.25
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 5
+      Frequency: 0.9
+    Y:
+      Amplitude: 3
+      Frequency: 1
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 2
+      Frequency: 2
+    Y:
+      Amplitude: 1
+      Frequency: 0
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..68f25e691ab4dc9c304f7812f5d1baf296ac525f
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_extreme.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 20a705aea2d80e0478fb89b6f43d8530
+timeCreated: 1465497741
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset b/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset
new file mode 100644
index 0000000000000000000000000000000000000000..e2aa301e3529577757135ba82be7692e91223402
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_normal_mild
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 7
+      Frequency: 0.15
+    Y:
+      Amplitude: 5
+      Frequency: 0.1
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 4
+      Frequency: 0.8
+    Y:
+      Amplitude: 2
+      Frequency: 0.75
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 1
+      Frequency: 1.2
+    Y:
+      Amplitude: 0.8
+      Frequency: 1.5
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..db7e8fcf3db7af223d4cec2eb47af9d26f8a14be
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_mild.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 46965f9cbaf525742a6da4c2172a99cd
+timeCreated: 1461691296
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset b/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset
new file mode 100644
index 0000000000000000000000000000000000000000..a1b2322dfcf9199f65efda6679d787aa9d240456
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_normal_strong
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 10
+      Frequency: .400000006
+    Y:
+      Amplitude: 10
+      Frequency: .0599999987
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 5
+      Frequency: 1.44000006
+    Y:
+      Amplitude: 3
+      Frequency: .730000019
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 3
+      Frequency: 2.49000001
+    Y:
+      Amplitude: 1
+      Frequency: 2
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..48fbe8e101c0c3566ca882223fa8dc557e5d8509
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_normal_strong.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b241f91b9ccf8ff489abf204b30d3112
+timeCreated: 1461691296
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset b/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset
new file mode 100644
index 0000000000000000000000000000000000000000..62e6df3541f427d6e3b04284c846a58f75e0ce58
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_tele_mild
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 4
+      Frequency: .200000003
+    Y:
+      Amplitude: 2
+      Frequency: .150000006
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 2
+      Frequency: .400000006
+    Y:
+      Amplitude: 2
+      Frequency: .5
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 1
+      Frequency: .699999988
+    Y:
+      Amplitude: 1
+      Frequency: .600000024
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..344b495317692bb6e7e945e881e1663fa4a257f2
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_tele_mild.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a3dacaec0287d7444b4bd276816e1666
+timeCreated: 1461691921
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset b/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset
new file mode 100644
index 0000000000000000000000000000000000000000..ce27c4b0d90de53196271298bb1939ed14f1ba4a
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_tele_strong
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 6.19000006
+      Frequency: .389999986
+    Y:
+      Amplitude: 4
+      Frequency: .150000006
+    Z:
+      Amplitude: 1
+      Frequency: .100000001
+  - X:
+      Amplitude: 1.84000003
+      Frequency: 1.75
+    Y:
+      Amplitude: .5
+      Frequency: .899999976
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 2.29999995
+      Frequency: 2
+    Y:
+      Amplitude: .5
+      Frequency: 1.39999998
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..8c927b574d5a9286b63bdf1ffdabecd8dde0fbba
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_tele_strong.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 554b0ed52734c154eab51f6cedd3a7d7
+timeCreated: 1461691296
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset
new file mode 100644
index 0000000000000000000000000000000000000000..16f1a0fd7654464c68a4bb4dfeea1a044488657b
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_wideangle_mild
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 12
+      Frequency: .150000006
+    Y:
+      Amplitude: 5
+      Frequency: .100000001
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 5
+      Frequency: .600000024
+    Y:
+      Amplitude: 4
+      Frequency: .449999988
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 1
+      Frequency: 1.5
+    Y:
+      Amplitude: 1
+      Frequency: 1.20000005
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2ed32d04ffc94018265e89f5c647d65edd7a0a77
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_mild.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8608ec81ee27a15488d33f9dad239e91
+timeCreated: 1461691111
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset
new file mode 100644
index 0000000000000000000000000000000000000000..5fb0804da60575b3fc3cab84dd4d2581b5ad0a7a
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset
@@ -0,0 +1,42 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Handheld_wideangle_strong
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 17.4599991
+      Frequency: .5
+    Y:
+      Amplitude: 5
+      Frequency: .25
+    Z:
+      Amplitude: 0
+      Frequency: .100000001
+  - X:
+      Amplitude: 12.4700003
+      Frequency: .939999998
+    Y:
+      Amplitude: 4
+      Frequency: .5
+    Z:
+      Amplitude: 1
+      Frequency: .400000006
+  - X:
+      Amplitude: 4
+      Frequency: 1.20000005
+    Y:
+      Amplitude: 2
+      Frequency: 1.29999995
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset.meta b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..125164e70b8b83d78de37658ed2f23698c819ad9
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Handheld_wideangle_strong.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 20e46be82478fa24b90f748044c06b4b
+timeCreated: 1461691111
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Presets/Noise/Vibration.asset b/Assets/Cinemachine/Presets/Noise/Vibration.asset
new file mode 100644
index 0000000000000000000000000000000000000000..b99844f85f35f4c955b700e61305d8f2a41ab6af
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Vibration.asset
@@ -0,0 +1,33 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b7f59e54f2bfd184b9dd451a678d089b, type: 3}
+  m_Name: Vibration
+  m_EditorClassIdentifier: 
+  m_Position: []
+  m_Orientation:
+  - X:
+      Amplitude: 20
+      Frequency: 3
+    Y:
+      Amplitude: 5
+      Frequency: 0.8
+    Z:
+      Amplitude: 0
+      Frequency: 0
+  - X:
+      Amplitude: 15
+      Frequency: 4
+    Y:
+      Amplitude: 5
+      Frequency: 1
+    Z:
+      Amplitude: 0
+      Frequency: 0
diff --git a/Assets/Cinemachine/Presets/Noise/Vibration.asset.meta b/Assets/Cinemachine/Presets/Noise/Vibration.asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..43fd142598e606e381127d9a0ffbddf489641ffa
--- /dev/null
+++ b/Assets/Cinemachine/Presets/Noise/Vibration.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 68b0627ea3d796448b29ab0938f2c240
+timeCreated: 1465506449
+licenseType: Store
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/ReleaseNotes.txt b/Assets/Cinemachine/ReleaseNotes.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fc93d55ccc352dbf3553c431c7a9860669c2f894
--- /dev/null
+++ b/Assets/Cinemachine/ReleaseNotes.txt
@@ -0,0 +1,71 @@
+<size=20><b>Version 2.1.10</b></size>
+
+- New Aim component: Same As Follow Target simply uses the same orientation as the Follow target
+- Perlin Noise component: added UI to clone or locate existing Noise profiles, and to create new ones inspector
+- Noise Presets were moved outside of the Examples folder
+- Example Assets are now included as embedded package, not imported by default
+- Bugfix: FreeLook with PositionDelta was not properly updating the heading
+- Bugfix: Transitioning between FreeLooks simetimes caused a short camera freeze
+- Bugfix: Added some null checks to FreeLook, to prevent error messages at build time
+
+
+<size=20><b>Version 2.1.09</b></size>
+
+<size=12><b>New Features</b></size>
+
+- <b>PostProcessing V2</b> is now supported.
+- New <b>Collider</b> implementation.  Curb feelers are gone, replaced by a clever camera-repositioning algorithm that will try to preserve camera height or distance from target (strategy is user-selectable).
+- New <b>CinemachineConfiner</b>: confine a virtual camera to a simple bounding volume or PolygonCollider2D.
+- New <b>Framing Transposer</b>.  This is a special transposer that will respect composition and framing rules by moving the camera without rotating it.  Takes only a Follow Target (no LookAt - this is important).  Designed for Orthographic cameras, but will also work for Perspective cameras.  If Follow target is a CinemachineTargetGroup, then will also provide Group Framing options.
+- New <b>CinemachinePOV</b> Aim component.  Camera aim is entirely controlled by user, using 2 input axes.
+- New <b>CinemachineMixingCamera</b>.  Drive a continuous blend of up to 8 virtual cameras from timeline or game logic.  Create complex rigs with custom blends and expose them as ordinary vcams.
+- New <b>CinemachineBlendListCamera</b>.  A mini vcam sequencer that provides a quick and easy way to do AB camera moves on the fly.
+- New <b>CinemachineDollyCart</b> behaviour, for moving anything along a path.  No need to create dummy vcams just for that.
+- New <b>CinemachineSmoothPath</b> component.  You can use it instead of the old CinemachinePath.  The difference is that the SmoothPath guarantees second-order continuity, which means that there will never be any sudden camera rotation changes baked into the path tangents.  Easier to use, too: no tangents to mess around with (they get automatically set for smoothness).
+- Path now supports <b>Distance Units</b> in addition to Path units, making it easy to create steady motion.
+- TrackedDolly: added ability to use <b>Distance or Path units</b> for path position.
+- Transposer and TrackedDolly: added target <b>angular damping</b> on 3 axes.
+- OrbitalTransposer and FreeLook: added <b>angular damping and binding mode</b>, same as Transposer.
+- OrbitalTransopser and freelook: added checkbox to <b>invert input axis</b>.
+- Transposer, OrbitalTransposer, and FreeLook: added new <b>Simple Follow</b> binding mode, which will follow the target using rotation as much as possible, changing position as little as possible.  Like a lazy cameraman.
+- Added <b>IgnoreTimeScale</b> option to Brain.  Useful for snappy cameras even in slo-mo.
+- Added <b>Lookahead Time</b> to composer.  Composer will look at the point where it estimates the target will be at some time in the near future.  This gives much more natural framing of a moving target.
+
+
+<size=12><b>Improvements</b></size>
+
+- SmartUpdate is smarter: added support for <b>Interpolation</b> when target is animated by physics system.
+- Added off-button for SaveDuringPlay.
+- No SaveDuringPlay for vcam priority, LookAt and Follow targets, GroupTarget members.
+- Added IsBlending API method to StateDrivenCamera and ClearShot.
+- TargetGroup now has a user-selectable update method.
+- TargetGroup now respects the weight when computing bounding box, so it's possible to gradually add or remove members by manipulating the weight.
+- Clearshot: if randomize, then re-randomize whenever it becomes active.
+- ClearShot: default blend is cut.
+- ClearShot create menu: add a Collider by default.
+- FollowZoom: min/max FOV defaults changed to 3/60.
+- Composer damping range is now 0-20 instead of 0-100.
+- Orbital and FreeLook: Heading Bias can now be animated on the timeline.
+- Orbital and FreeLook: damping no longer interferes with camera response to user input.  Axis movement bypasses all damping.
+- TrackedDolly: added path position offset to Auto-Dolly.  Stays on the path (unlike path offset, which is based on the path tangent and so can go off the path)
+- Noise component inspector now has a dropdown for Profile presets, instead of directly allowing editing of the Profile asset.
+- Added concept of <b>Cinemachine Extension</b>.  Collider, confiner, PostProcessing, etc are now Extensions.  They are available via a dropdown at the bottom of the inspection for virtual cameras.  They will no longer appear in the standard Components menu.
+- Time.timeScale = 0 is now supported.  Pausing the game will also pause the virtual cameras.
+- HardConstraint has been split into two settings: Do Nothing and Hard LookAt/Follow.  Do Nothing will leave the camera's transform alone, ignoring any target that may have been set.
+- CinemachineBrain no longer requires a Camera component.  Can be used with any GameObject, making it possible to use Cinemachine to control the transforms of arbitrary objects.
+- Improved logic for AxisState accel/decel.  More realistic behaviour.
+
+
+<size=12><b>Bugfixes</b></size>
+
+- SaveDuringPlay obsolete API fix for 2017.2.
+- Fixed build errors when building for UWP.
+- Clearshot and SDC: don't reset state if deactivated.
+- FreeLook destroy - no more orphan rigs.
+- Fixed strange build error that only showed up in MonoDevelop.
+- FreeLook was not respecting X-axis accel and decel.  Heading speed had to be crazy high.  Now same as Orbital (warning: may have to re-tune settings on existing FreeLooks).
+- Recenter to target heading was not moving smoothly in some circumstances.
+- Collider raycasts no longer hit triggers.
+- Noise: handle variable deltaTime gracefully.
+- State-Driven-Camera: don't generate errors when animated target is inactive.
+- Several jitter and judder issues resolved.
diff --git a/Assets/Cinemachine/ReleaseNotes.txt.meta b/Assets/Cinemachine/ReleaseNotes.txt.meta
new file mode 100644
index 0000000000000000000000000000000000000000..55e85418af49b7cb11432f482dbde21e74724724
--- /dev/null
+++ b/Assets/Cinemachine/ReleaseNotes.txt.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 048dcb775445a4a478914781ec3ca9c6
+timeCreated: 1503606237
+licenseType: Store
+TextScriptImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline.meta b/Assets/Cinemachine/Timeline.meta
new file mode 100644
index 0000000000000000000000000000000000000000..08484cf9236e83d75d1de542924f699a4350b691
--- /dev/null
+++ b/Assets/Cinemachine/Timeline.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0282251d79d6e964089ace2dc6e6e496
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/CinemachineMixer.cs b/Assets/Cinemachine/Timeline/CinemachineMixer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4a7e1a871c7bd30c3e5dbaa95c9c47873a72d927
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineMixer.cs
@@ -0,0 +1,84 @@
+using UnityEngine;
+using UnityEngine.Playables;
+
+namespace Cinemachine.Timeline
+{
+    public sealed class CinemachineMixer : PlayableBehaviour
+    {
+        // The brain that this track controls
+        private CinemachineBrain mBrain;
+        private int mBrainOverrideId = -1;
+        private bool mPlaying;
+
+        public override void OnGraphStop(Playable playable)
+        {
+            if (mBrain != null)
+                mBrain.ReleaseCameraOverride(mBrainOverrideId); // clean up
+            mBrainOverrideId = -1;
+        }
+
+        public override void ProcessFrame(Playable playable, FrameData info, object playerData)
+        {
+            base.ProcessFrame(playable, info, playerData);
+
+            // Get the brain that this track controls.
+            // Older versions of timeline sent the gameObject by mistake.
+            GameObject go = playerData as GameObject;
+            if (go == null)
+                mBrain = (CinemachineBrain)playerData;
+            else
+                mBrain = go.GetComponent<CinemachineBrain>();
+            if (mBrain == null)
+                return;
+
+            // Find which clips are active.  We can process a maximum of 2.
+            // In the case that the weights don't add up to 1, the outgoing weight
+            // will be calculated as the inverse of the incoming weight.
+            int activeInputs = 0;
+            ICinemachineCamera camA = null;
+            ICinemachineCamera camB = null;
+            float camWeight = 1f;
+            for (int i = 0; i < playable.GetInputCount(); ++i)
+            {
+                CinemachineShotPlayable shot
+                    = ((ScriptPlayable<CinemachineShotPlayable>)playable.GetInput(i)).GetBehaviour();
+                float weight = playable.GetInputWeight(i);
+                if (shot != null && shot.VirtualCamera != null
+                    && playable.GetPlayState() == PlayState.Playing
+                    && weight > 0.0001f)
+                {
+                    if (activeInputs == 1)
+                        camB = camA;
+                    camWeight = weight;
+                    camA = shot.VirtualCamera;
+                    ++activeInputs;
+                    if (activeInputs == 2)
+                        break;
+                }
+            }
+
+            float deltaTime = info.deltaTime;
+            if (!mPlaying)
+            {
+                if (mBrainOverrideId < 0)
+                    mLastOverrideFrame = -1;
+                float time = Time.realtimeSinceStartup;
+                deltaTime = Time.unscaledDeltaTime;
+                if (!Application.isPlaying && (mLastOverrideFrame < 0 || time - mLastOverrideFrame > Time.maximumDeltaTime))
+                    deltaTime = -1;
+                mLastOverrideFrame = time;
+            }
+
+            // Override the Cinemachine brain with our results
+            mBrainOverrideId = mBrain.SetCameraOverride(
+                    mBrainOverrideId, camB, camA, camWeight, deltaTime);
+
+        }
+        float mLastOverrideFrame;
+
+        public override void PrepareFrame(Playable playable, FrameData info)
+        {
+            mPlaying = info.evaluationType == FrameData.EvaluationType.Playback;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Timeline/CinemachineMixer.cs.meta b/Assets/Cinemachine/Timeline/CinemachineMixer.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ee7318f5d4a2d5c73f18ad5b7d2538a7760571e4
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineMixer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 961772e8b1d75dd4a915fb8a236d5a8a
+timeCreated: 1489083733
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/CinemachineShot.cs b/Assets/Cinemachine/Timeline/CinemachineShot.cs
new file mode 100644
index 0000000000000000000000000000000000000000..eb383d2bef1fc13286b35813f3a253b6ffd01953
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineShot.cs
@@ -0,0 +1,38 @@
+using UnityEngine;
+using UnityEngine.Playables;
+using UnityEngine.Timeline;
+
+namespace Cinemachine.Timeline
+{
+    internal sealed class CinemachineShotPlayable : PlayableBehaviour
+    {
+        public CinemachineVirtualCameraBase VirtualCamera;
+    }
+
+    public sealed class CinemachineShot : PlayableAsset, IPropertyPreview
+    {
+        public ExposedReference<CinemachineVirtualCameraBase> VirtualCamera;
+
+        public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
+        {
+            var playable = ScriptPlayable<CinemachineShotPlayable>.Create(graph);
+            playable.GetBehaviour().VirtualCamera = VirtualCamera.Resolve(graph.GetResolver());
+            return playable;
+        }
+
+        // IPropertyPreview implementation
+        public void GatherProperties(PlayableDirector director, IPropertyCollector driver)
+        {
+            driver.AddFromName<Transform>("m_LocalPosition.x");
+            driver.AddFromName<Transform>("m_LocalPosition.y");
+            driver.AddFromName<Transform>("m_LocalPosition.z");
+            driver.AddFromName<Transform>("m_LocalRotation.x");
+            driver.AddFromName<Transform>("m_LocalRotation.y");
+            driver.AddFromName<Transform>("m_LocalRotation.z");
+
+            driver.AddFromName<Camera>("field of view");
+            driver.AddFromName<Camera>("near clip plane");
+            driver.AddFromName<Camera>("far clip plane");
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Timeline/CinemachineShot.cs.meta b/Assets/Cinemachine/Timeline/CinemachineShot.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0478d22b0d20de1934938af619ffb503dd8c3791
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineShot.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 90fb794a295e73545af71bcdb7375791
+timeCreated: 1489083733
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/CinemachineTrack.cs b/Assets/Cinemachine/Timeline/CinemachineTrack.cs
new file mode 100644
index 0000000000000000000000000000000000000000..44502cfdd9e94072695f293b3e91c610e8bea0ee
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineTrack.cs
@@ -0,0 +1,32 @@
+using System;
+using UnityEngine;
+using UnityEngine.Playables;
+using UnityEngine.Timeline;
+
+namespace Cinemachine.Timeline
+{
+    [Serializable]
+    [TrackClipType(typeof(CinemachineShot))]
+    [TrackMediaType(TimelineAsset.MediaType.Script)]
+    [TrackBindingType(typeof(CinemachineBrain))]
+    [TrackColor(0.53f, 0.0f, 0.08f)]
+    public class CinemachineTrack : TrackAsset
+    {
+        public override Playable CreateTrackMixer(
+            PlayableGraph graph, GameObject go, int inputCount)
+        {
+            // Hack to set the display name of the clip to match the vcam
+            foreach (var c in GetClips())
+            {
+                CinemachineShot shot = (CinemachineShot)c.asset;
+                CinemachineVirtualCameraBase vcam = shot.VirtualCamera.Resolve(graph.GetResolver());
+                if (vcam != null)
+                    c.displayName = vcam.Name;
+            }
+
+            var mixer = ScriptPlayable<CinemachineMixer>.Create(graph);
+            mixer.SetInputCount(inputCount);
+            return mixer;
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Timeline/CinemachineTrack.cs.meta b/Assets/Cinemachine/Timeline/CinemachineTrack.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..dd69b8f9877ff5dcad47821c8099e3d313b14586
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/CinemachineTrack.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 05acc715f855ced458d76ee6f8ac6c61
+timeCreated: 1489083732
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/Editor.meta b/Assets/Cinemachine/Timeline/Editor.meta
new file mode 100644
index 0000000000000000000000000000000000000000..96aa7233b4a6946b823296b03286557d92894d85
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 47030f88f181f334ab93c4b8ccfe1b78
+folderAsset: yes
+timeCreated: 1489096338
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs b/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f58204e649a49aee0b69bc196d15ea1ba8852c48
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs
@@ -0,0 +1,111 @@
+using UnityEditor;
+using UnityEngine;
+using Cinemachine.Editor;
+
+namespace Cinemachine.Timeline
+{
+    [CustomEditor(typeof(CinemachineShot))]
+    internal sealed class CinemachineShotEditor : UnityEditor.Editor
+    {
+        private static readonly string[] m_excludeFields = new string[] { "m_Script" };
+        private SerializedProperty mVirtualCameraProperty = null;
+        private static readonly GUIContent kVirtualCameraLabel
+            = new GUIContent("Virtual Camera", "The virtual camera to use for this shot");
+
+        private void OnEnable()
+        {
+            if (serializedObject != null)
+                mVirtualCameraProperty = serializedObject.FindProperty("VirtualCamera");
+        }
+
+        private void OnDisable()
+        {
+            DestroyComponentEditors();
+        }
+
+        private void OnDestroy()
+        {
+            DestroyComponentEditors();
+        }
+
+        public override void OnInspectorGUI()
+        {
+            CinemachineVirtualCameraBase obj
+                = mVirtualCameraProperty.exposedReferenceValue as CinemachineVirtualCameraBase;
+            if (obj == null)
+            {
+                serializedObject.Update();
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.PropertyField(mVirtualCameraProperty, kVirtualCameraLabel, GUILayout.ExpandWidth(true));
+                obj = mVirtualCameraProperty.exposedReferenceValue as CinemachineVirtualCameraBase;
+                if ((obj == null) && GUILayout.Button(new GUIContent("Create"), GUILayout.ExpandWidth(false)))
+                {
+                    CinemachineVirtualCameraBase vcam = CinemachineMenu.CreateDefaultVirtualCamera();
+                    mVirtualCameraProperty.exposedReferenceValue = vcam;
+                }
+                EditorGUILayout.EndHorizontal();
+                serializedObject.ApplyModifiedProperties();
+            }
+            else
+            {
+                serializedObject.Update();
+                DrawPropertiesExcluding(serializedObject, m_excludeFields);
+
+                // Create an editor for each of the cinemachine virtual cam and its components
+                UpdateComponentEditors(obj);
+                if (m_editors != null)
+                {
+                    foreach (UnityEditor.Editor e in m_editors)
+                    {
+                        EditorGUILayout.Separator();
+                        if (e.target.GetType() != typeof(Transform))
+                        {
+                            GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) } );
+                            EditorGUILayout.LabelField(e.target.GetType().Name, EditorStyles.boldLabel);
+                        }
+                        e.OnInspectorGUI();
+                    }
+                }
+                serializedObject.ApplyModifiedProperties();
+            }
+        }
+
+        CinemachineVirtualCameraBase m_cachedReferenceObject;
+        UnityEditor.Editor[] m_editors = null;
+        void UpdateComponentEditors(CinemachineVirtualCameraBase obj)
+        {
+            MonoBehaviour[] components = null;
+            if (obj != null)
+                components = obj.gameObject.GetComponents<MonoBehaviour>();
+            int numComponents = (components == null) ? 0 : components.Length;
+            int numEditors = (m_editors == null) ? 0 : m_editors.Length;
+            if (m_cachedReferenceObject != obj || (numComponents + 1) != numEditors)
+            {
+                DestroyComponentEditors();
+                m_cachedReferenceObject = obj;
+                if (obj != null)
+                {
+                    m_editors = new UnityEditor.Editor[components.Length + 1];
+                    CreateCachedEditor(obj.gameObject.GetComponent<Transform>(), null, ref m_editors[0]);
+                    for (int i = 0; i < components.Length; ++i)
+                        CreateCachedEditor(components[i], null, ref m_editors[i + 1]);
+                }
+            }
+        }
+
+        void DestroyComponentEditors()
+        {
+            m_cachedReferenceObject = null;
+            if (m_editors != null)
+            {
+                for (int i = 0; i < m_editors.Length; ++i)
+                {
+                    if (m_editors[i] != null)
+                        UnityEngine.Object.DestroyImmediate(m_editors[i]);
+                    m_editors[i] = null;
+                }
+                m_editors = null;
+            }
+        }
+    }
+}
diff --git a/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs.meta b/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e752452c7e7eba82741da27aa1f6e2cd5e480ed6
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f24a4388d07ef494e8516cb859803e09
+timeCreated: 1484435492
+licenseType: Store
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage b/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage
new file mode 100644
index 0000000000000000000000000000000000000000..1ed6b83285824f6cbd2d072d3fa2ccf6a06842b3
Binary files /dev/null and b/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage differ
diff --git a/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage.meta b/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage.meta
new file mode 100644
index 0000000000000000000000000000000000000000..39a4d1b7a6e4d2a304eab05e861962ee8a6f28f7
--- /dev/null
+++ b/Assets/Cinemachine/Timeline/LegacyTimelineAPI.unitypackage.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1e24085edff8e4e499582d8dcf099510
+timeCreated: 1493908344
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Gizmos.meta b/Assets/Gizmos.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c1456ab848860fa51721e59b75576dac32f57057
--- /dev/null
+++ b/Assets/Gizmos.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ca8847a89493c0737857ccd5e4eeadd7
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Gizmos/Cinemachine.meta b/Assets/Gizmos/Cinemachine.meta
new file mode 100644
index 0000000000000000000000000000000000000000..539e1d5836d3e5d1a9216fe9071ce6ea88865fdc
--- /dev/null
+++ b/Assets/Gizmos/Cinemachine.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1b835c351f58555019caf0b30ad9d019
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Gizmos/Cinemachine/cm_logo_lg.png b/Assets/Gizmos/Cinemachine/cm_logo_lg.png
new file mode 100644
index 0000000000000000000000000000000000000000..47f19039cdb9255631ae9ed10359e035ff08aa3a
Binary files /dev/null and b/Assets/Gizmos/Cinemachine/cm_logo_lg.png differ
diff --git a/Assets/Gizmos/Cinemachine/cm_logo_lg.png.meta b/Assets/Gizmos/Cinemachine/cm_logo_lg.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c054d7237074199ca292cceb968fa32ad9ee256d
--- /dev/null
+++ b/Assets/Gizmos/Cinemachine/cm_logo_lg.png.meta
@@ -0,0 +1,90 @@
+fileFormatVersion: 2
+guid: 08f377be21554a243b61d840fdb6099f
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 10
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  platformSettings:
+  - serializedVersion: 2
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: c259a6e850ddfa68686131278cd76433
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Palettes.meta b/Assets/Palettes.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5a2ddd741046df648fea58941068a66ba4ce776d
--- /dev/null
+++ b/Assets/Palettes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c6ae48a0771f1c840a7525eda8db3602
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Palettes/Ground_Tiles.prefab b/Assets/Palettes/Ground_Tiles.prefab
new file mode 100644
index 0000000000000000000000000000000000000000..ad0a3a03cdf631435f77f8308eb8422b553e8af6
--- /dev/null
+++ b/Assets/Palettes/Ground_Tiles.prefab
@@ -0,0 +1,471 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1023723968366981876
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5571144457529873868}
+  - component: {fileID: 5050029881197384655}
+  - component: {fileID: 9046220272530444576}
+  m_Layer: 31
+  m_Name: Layer1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5571144457529873868
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023723968366981876}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 3062675459712767401}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1839735485 &5050029881197384655
+Tilemap:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023723968366981876}
+  m_Enabled: 1
+  m_Tiles:
+  - first: {x: -4, y: -4, z: 0}
+    second:
+      m_TileIndex: 18
+      m_TileSpriteIndex: 18
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -4, z: 0}
+    second:
+      m_TileIndex: 15
+      m_TileSpriteIndex: 17
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -3, z: 0}
+    second:
+      m_TileIndex: 13
+      m_TileSpriteIndex: 14
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -3, z: 0}
+    second:
+      m_TileIndex: 3
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -2, z: 0}
+    second:
+      m_TileIndex: 17
+      m_TileSpriteIndex: 12
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -2, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -2, z: 0}
+    second:
+      m_TileIndex: 16
+      m_TileSpriteIndex: 16
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -2, z: 0}
+    second:
+      m_TileIndex: 12
+      m_TileSpriteIndex: 15
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -2, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 19
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -2, z: 0}
+    second:
+      m_TileIndex: 9
+      m_TileSpriteIndex: 9
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -1, z: 0}
+    second:
+      m_TileIndex: 5
+      m_TileSpriteIndex: 11
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -1, z: 0}
+    second:
+      m_TileIndex: 10
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -1, z: 0}
+    second:
+      m_TileIndex: 1
+      m_TileSpriteIndex: 10
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -1, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: 1, z: 0}
+    second:
+      m_TileIndex: 14
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: 1, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 13
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: 1, z: 0}
+    second:
+      m_TileIndex: 19
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: 1, z: 0}
+    second:
+      m_TileIndex: 11
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: 1, z: 0}
+    second:
+      m_TileIndex: 2
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: 1, z: 0}
+    second:
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  m_AnimatedTiles: {}
+  m_TileAssetArray:
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 97b73382799481021af9ea46fd49fcf8, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: ba8ca52498573cb76b94e65e6338a516, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 940e1f5ebd555e802afc17091e515459, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 09bbdebfb730034b18c53bc0cf4afbc3, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: f9b1c2f36ac2bafeead53c9fd8f4c999, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: eb68ab9c964640e2d80dcd592a73f8e7, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 8473f1ceba63c2d01ac809d19f2f999f, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: f2afec556bffd168fa321c6e694a7d0a, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 2cb260ebb2d3dc87fa66ae685e481ef9, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: bd64b24e9a338132884cf642b9beded2, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: e470c2ed2957ae0abb8f2e14bb0d29c2, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: f017eeef0145589348b6ac65eba3e542, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 106c8ef36bbe196e99e74b1655605517, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: debc36b20bd3f2ebfb8a0444e8bd4ed7, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 4489cd4d4289237999207f74ada5448b, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 934e82a10e8463078961789d3301417f, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 8ff71e4494488a1a7802eb0bc10abbfb, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 94f3a07cf39a9f317be6d875b54dd56a, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 370ef86f98f917fe8bbaa48745df5e36, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 2e2928f837376bb90baa22cc527f8cd3, type: 2}
+  m_TileSpriteArray:
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: ba480b425e916491a8b46688af3c6e6e, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: f95b5567a820fd5c7a8d0771b8f229ff, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 301856fde6502d92abc8d344ccbe6e6b, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: b08b803487260dcfcad4830a48c36bd9, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 8dca30442d35ea41783739a852c7064d, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 9d7087b9c6574c4e5b715f683f94b8aa, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 85ca6a31f587bf869a7f0c5ddb717b05, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: caad24057ecfb286197f1486df2c4902, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 607e279f541421f539f6d1a40c904c4f, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 6b91739567e2c0dfb9410a2eae78042b, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: da02656108a09a8118989e2d34ba7f3e, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: d1f6c5d87ad8a0bea84d41af93e124d2, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: a8908754e3d883cff949ac451cda3f5d, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 15693d64f56237f60ae07f5d7fefed50, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 98a80ea99f8e5375bb273f6fcafeda22, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 9fbe546621feeb15b87642638d8c120b, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 2bd978cbbf8dd044bac160928664b946, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 7d5001fa388e26c6dac61e6b4a827bc3, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 4b5d691fff1be3632b048581b165c68e, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: db2cb535e3928bfce9afc5d2847559b9, type: 3}
+  m_TileMatrixArray:
+  - m_RefCount: 20
+    m_Data:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+  - m_RefCount: 0
+    m_Data:
+      e00: 0
+      e01: -2.98412e+28
+      e02: 1e-45
+      e03: -2.990278e+28
+      e10: 4.587e-41
+      e11: 4.587e-41
+      e12: 0
+      e13: 4.587e-41
+      e20: 4.963299
+      e21: 1e-45
+      e22: -1.467532e+27
+      e23: -8.862774e+29
+      e30: 0
+      e31: 0
+      e32: 4.587e-41
+      e33: 4.587e-41
+  m_TileColorArray:
+  - m_RefCount: 20
+    m_Data: {r: 1, g: 1, b: 1, a: 1}
+  m_AnimationFrameRate: 1
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Origin: {x: -4, y: -5, z: 0}
+  m_Size: {x: 10, y: 7, z: 1}
+  m_TileAnchor: {x: 0.5, y: 0.5, z: 0}
+  m_TileOrientation: 0
+  m_TileOrientationMatrix:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+--- !u!483693784 &9046220272530444576
+TilemapRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1023723968366981876}
+  m_Enabled: 0
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_ChunkSize: {x: 32, y: 32, z: 32}
+  m_ChunkCullingBounds: {x: 0.13999999, y: 0.13999999, z: 0}
+  m_MaxChunkCount: 16
+  m_MaxFrameAge: 16
+  m_SortOrder: 0
+  m_Mode: 0
+  m_DetectChunkCullingBounds: 0
+  m_MaskInteraction: 0
+--- !u!1 &2178028463934954080
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3062675459712767401}
+  - component: {fileID: 5178599840700964063}
+  m_Layer: 31
+  m_Name: Ground_Tiles
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3062675459712767401
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2178028463934954080}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 5571144457529873868}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!156049354 &5178599840700964063
+Grid:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2178028463934954080}
+  m_Enabled: 1
+  m_CellSize: {x: 1.28, y: 1.28, z: 0}
+  m_CellGap: {x: 0, y: 0, z: 0}
+  m_CellLayout: 0
+  m_CellSwizzle: 0
+--- !u!114 &-8168813553948107643
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 12395, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Palette Settings
+  m_EditorClassIdentifier: 
+  cellSizing: 0
diff --git a/Assets/Palettes/Ground_Tiles.prefab.meta b/Assets/Palettes/Ground_Tiles.prefab.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d144eb6a9a2093a30184938e05b15de18325e8f7
--- /dev/null
+++ b/Assets/Palettes/Ground_Tiles.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 33395df238582a175b4a9e0adb96cbd5
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity
new file mode 100644
index 0000000000000000000000000000000000000000..7792645526d72212fbcb7f8e8ffd77065ccce9fd
--- /dev/null
+++ b/Assets/Scenes/Main.unity
@@ -0,0 +1,1550 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 3
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 11
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 0
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 0
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 500
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 500
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 2
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ShowResolutionOverlay: 1
+    m_ExportTrainingData: 0
+  m_LightingDataAsset: {fileID: 0}
+  m_UseShadowmask: 1
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &188502442
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 188502444}
+  - component: {fileID: 188502443}
+  m_Layer: 0
+  m_Name: BG
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!212 &188502443
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 188502442}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 21300000, guid: 5b904d6e0d266614fab5a6af5403334b, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 20, y: 11.43}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!4 &188502444
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 188502442}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.026, y: -0.015, z: 0}
+  m_LocalScale: {x: 1.1267821, y: 1.1267821, z: 1.1267821}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &208195787
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 208195788}
+  - component: {fileID: 208195790}
+  - component: {fileID: 208195789}
+  m_Layer: 0
+  m_Name: Tilemap_Bones
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &208195788
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 208195787}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 900256555}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!483693784 &208195789
+TilemapRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 208195787}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 1
+  m_ChunkSize: {x: 32, y: 32, z: 32}
+  m_ChunkCullingBounds: {x: 0.13999999, y: 0.13999999, z: 0}
+  m_MaxChunkCount: 16
+  m_MaxFrameAge: 16
+  m_SortOrder: 0
+  m_Mode: 0
+  m_DetectChunkCullingBounds: 0
+  m_MaskInteraction: 0
+--- !u!1839735485 &208195790
+Tilemap:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 208195787}
+  m_Enabled: 1
+  m_Tiles:
+  - first: {x: 0, y: -6, z: 0}
+    second:
+      m_TileIndex: 3
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -4, z: 0}
+    second:
+      m_TileIndex: 2
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -4, z: 0}
+    second:
+      m_TileIndex: 1
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -4, z: 0}
+    second:
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  m_AnimatedTiles: {}
+  m_TileAssetArray:
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: 2cb260ebb2d3dc87fa66ae685e481ef9, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: f9b1c2f36ac2bafeead53c9fd8f4c999, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: ba8ca52498573cb76b94e65e6338a516, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: bd64b24e9a338132884cf642b9beded2, type: 2}
+  m_TileSpriteArray:
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: db2cb535e3928bfce9afc5d2847559b9, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 8dca30442d35ea41783739a852c7064d, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: da02656108a09a8118989e2d34ba7f3e, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 6b91739567e2c0dfb9410a2eae78042b, type: 3}
+  m_TileMatrixArray:
+  - m_RefCount: 4
+    m_Data:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+  m_TileColorArray:
+  - m_RefCount: 4
+    m_Data: {r: 1, g: 1, b: 1, a: 1}
+  m_AnimationFrameRate: 1
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Origin: {x: -4, y: -7, z: 0}
+  m_Size: {x: 9, y: 7, z: 1}
+  m_TileAnchor: {x: 0.5, y: 0.5, z: 0}
+  m_TileOrientation: 0
+  m_TileOrientationMatrix:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+--- !u!1 &337341068
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 337341069}
+  - component: {fileID: 337341071}
+  - component: {fileID: 337341070}
+  - component: {fileID: 337341072}
+  m_Layer: 0
+  m_Name: Tilemap_Base
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &337341069
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 337341068}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 900256555}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!483693784 &337341070
+TilemapRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 337341068}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 0
+  m_ReflectionProbeUsage: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_ChunkSize: {x: 32, y: 32, z: 32}
+  m_ChunkCullingBounds: {x: 0.13999999, y: 0.13999999, z: 0}
+  m_MaxChunkCount: 16
+  m_MaxFrameAge: 16
+  m_SortOrder: 0
+  m_Mode: 0
+  m_DetectChunkCullingBounds: 0
+  m_MaskInteraction: 0
+--- !u!1839735485 &337341071
+Tilemap:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 337341068}
+  m_Enabled: 1
+  m_Tiles:
+  - first: {x: -6, y: -8, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -8, z: 0}
+    second:
+      m_TileIndex: 9
+      m_TileSpriteIndex: 9
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -8, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -8, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -7, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -7, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -7, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -6, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -6, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -6, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -5, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -5, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -5, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -4, z: 0}
+    second:
+      m_TileIndex: 8
+      m_TileSpriteIndex: 8
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -4, z: 0}
+    second:
+      m_TileIndex: 9
+      m_TileSpriteIndex: 9
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -4, z: 0}
+    second:
+      m_TileIndex: 7
+      m_TileSpriteIndex: 7
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -4, z: 0}
+    second:
+      m_TileIndex: 6
+      m_TileSpriteIndex: 6
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -3, z: 0}
+    second:
+      m_TileIndex: 5
+      m_TileSpriteIndex: 5
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -3, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -2, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -1, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 0, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 1, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 2, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -3, z: 0}
+    second:
+      m_TileIndex: 4
+      m_TileSpriteIndex: 4
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -3, z: 0}
+    second:
+      m_TileIndex: 3
+      m_TileSpriteIndex: 3
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -6, y: -1, z: 0}
+    second:
+      m_TileIndex: 2
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -5, y: -1, z: 0}
+    second:
+      m_TileIndex: 1
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: -4, y: -1, z: 0}
+    second:
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 3, y: -1, z: 0}
+    second:
+      m_TileIndex: 2
+      m_TileSpriteIndex: 2
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 4, y: -1, z: 0}
+    second:
+      m_TileIndex: 1
+      m_TileSpriteIndex: 1
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  - first: {x: 5, y: -1, z: 0}
+    second:
+      m_TileIndex: 0
+      m_TileSpriteIndex: 0
+      m_TileMatrixIndex: 0
+      m_TileColorIndex: 0
+      m_ObjectToInstantiate: {fileID: 0}
+      m_TileFlags: 1
+      m_ColliderType: 1
+  m_AnimatedTiles: {}
+  m_TileAssetArray:
+  - m_RefCount: 2
+    m_Data: {fileID: 11400000, guid: 97b73382799481021af9ea46fd49fcf8, type: 2}
+  - m_RefCount: 2
+    m_Data: {fileID: 11400000, guid: 940e1f5ebd555e802afc17091e515459, type: 2}
+  - m_RefCount: 2
+    m_Data: {fileID: 11400000, guid: f017eeef0145589348b6ac65eba3e542, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: e470c2ed2957ae0abb8f2e14bb0d29c2, type: 2}
+  - m_RefCount: 10
+    m_Data: {fileID: 11400000, guid: 8473f1ceba63c2d01ac809d19f2f999f, type: 2}
+  - m_RefCount: 1
+    m_Data: {fileID: 11400000, guid: eb68ab9c964640e2d80dcd592a73f8e7, type: 2}
+  - m_RefCount: 5
+    m_Data: {fileID: 11400000, guid: 106c8ef36bbe196e99e74b1655605517, type: 2}
+  - m_RefCount: 48
+    m_Data: {fileID: 11400000, guid: f2afec556bffd168fa321c6e694a7d0a, type: 2}
+  - m_RefCount: 5
+    m_Data: {fileID: 11400000, guid: 94f3a07cf39a9f317be6d875b54dd56a, type: 2}
+  - m_RefCount: 2
+    m_Data: {fileID: 11400000, guid: 8ff71e4494488a1a7802eb0bc10abbfb, type: 2}
+  m_TileSpriteArray:
+  - m_RefCount: 2
+    m_Data: {fileID: 21300000, guid: ba480b425e916491a8b46688af3c6e6e, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 21300000, guid: f95b5567a820fd5c7a8d0771b8f229ff, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 21300000, guid: 85ca6a31f587bf869a7f0c5ddb717b05, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: 301856fde6502d92abc8d344ccbe6e6b, type: 3}
+  - m_RefCount: 10
+    m_Data: {fileID: 21300000, guid: 15693d64f56237f60ae07f5d7fefed50, type: 3}
+  - m_RefCount: 1
+    m_Data: {fileID: 21300000, guid: d1f6c5d87ad8a0bea84d41af93e124d2, type: 3}
+  - m_RefCount: 5
+    m_Data: {fileID: 21300000, guid: 9fbe546621feeb15b87642638d8c120b, type: 3}
+  - m_RefCount: 48
+    m_Data: {fileID: 21300000, guid: caad24057ecfb286197f1486df2c4902, type: 3}
+  - m_RefCount: 5
+    m_Data: {fileID: 21300000, guid: a8908754e3d883cff949ac451cda3f5d, type: 3}
+  - m_RefCount: 2
+    m_Data: {fileID: 21300000, guid: 2bd978cbbf8dd044bac160928664b946, type: 3}
+  m_TileMatrixArray:
+  - m_RefCount: 78
+    m_Data:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+  m_TileColorArray:
+  - m_RefCount: 78
+    m_Data: {r: 1, g: 1, b: 1, a: 1}
+  m_AnimationFrameRate: 1
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Origin: {x: -6, y: -8, z: 0}
+  m_Size: {x: 12, y: 8, z: 1}
+  m_TileAnchor: {x: 0.5, y: 0.5, z: 0}
+  m_TileOrientation: 0
+  m_TileOrientationMatrix:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+--- !u!19719996 &337341072
+TilemapCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 337341068}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0, y: 0}
+  m_MaximumTileChangeCount: 1000
+--- !u!1 &519420028
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 519420032}
+  - component: {fileID: 519420031}
+  - component: {fileID: 519420029}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &519420029
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+--- !u!20 &519420031
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 2
+  m_BackGroundColor: {r: 0.101609826, g: 0.117235065, b: 0.121141374, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 1
+  orthographic size: 4
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 0
+  m_HDR: 1
+  m_AllowMSAA: 0
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 0
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 519420028}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &900256553
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 900256555}
+  - component: {fileID: 900256554}
+  m_Layer: 0
+  m_Name: Grid
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!156049354 &900256554
+Grid:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 900256553}
+  m_Enabled: 1
+  m_CellSize: {x: 1, y: 1, z: 0}
+  m_CellGap: {x: 0, y: 0, z: 0}
+  m_CellLayout: 0
+  m_CellSwizzle: 0
+--- !u!4 &900256555
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 900256553}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 337341069}
+  - {fileID: 208195788}
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1500490598
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1500490600}
+  - component: {fileID: 1500490599}
+  - component: {fileID: 1500490602}
+  - component: {fileID: 1500490601}
+  - component: {fileID: 1500490603}
+  m_Layer: 8
+  m_Name: Player
+  m_TagString: Player
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!212 &1500490599
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1500490598}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 21300000, guid: 34669cfa237d3c680ae64b4d7541a302, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 5.79, y: 7.63}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!4 &1500490600
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1500490598}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -1.86, y: -0.93, z: -1.0952362}
+  m_LocalScale: {x: 0.264, y: 0.264, z: 0.264}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!50 &1500490601
+Rigidbody2D:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1500490598}
+  m_BodyType: 0
+  m_Simulated: 1
+  m_UseFullKinematicContacts: 0
+  m_UseAutoMass: 0
+  m_Mass: 1
+  m_LinearDrag: 0
+  m_AngularDrag: 0.05
+  m_GravityScale: 1
+  m_Material: {fileID: 0}
+  m_Interpolate: 0
+  m_SleepingMode: 1
+  m_CollisionDetection: 0
+  m_Constraints: 4
+--- !u!61 &1500490602
+BoxCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1500490598}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: -0.18020785, y: 0.042401314}
+  m_SpriteTilingProperty:
+    border: {x: 0, y: 0, z: 0, w: 0}
+    pivot: {x: 0.5, y: 0.5}
+    oldSize: {x: 5.79, y: 7.63}
+    newSize: {x: 5.79, y: 7.63}
+    adaptiveTilingThreshold: 0.5
+    drawMode: 0
+    adaptiveTiling: 0
+  m_AutoTiling: 0
+  serializedVersion: 2
+  m_Size: {x: 4.581547, y: 7.1211815}
+  m_EdgeRadius: 0
+--- !u!114 &1500490603
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1500490598}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5bcc7b697df67f3328b8bb01ee59df7c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_MovementSpeed: 3
+  m_JumpSpeed: 10
diff --git a/Assets/Scenes/Main.unity.meta b/Assets/Scenes/Main.unity.meta
new file mode 100644
index 0000000000000000000000000000000000000000..fbd0912f40cc43dac7dd4f8b73e3f6693f757e12
--- /dev/null
+++ b/Assets/Scenes/Main.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 53d1a8915872ab53ba8ac41e37e27bbb
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
deleted file mode 100644
index e5ecd0a0026b5f1d62faa4e8d5991fa453993768..0000000000000000000000000000000000000000
--- a/Assets/Scenes/SampleScene.unity
+++ /dev/null
@@ -1,188 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
-  m_ObjectHideFlags: 0
-  serializedVersion: 2
-  m_OcclusionBakeSettings:
-    smallestOccluder: 5
-    smallestHole: 0.25
-    backfaceThreshold: 100
-  m_SceneGUID: 00000000000000000000000000000000
-  m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
-  m_ObjectHideFlags: 0
-  serializedVersion: 9
-  m_Fog: 0
-  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
-  m_FogMode: 3
-  m_FogDensity: 0.01
-  m_LinearFogStart: 0
-  m_LinearFogEnd: 300
-  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
-  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
-  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
-  m_AmbientIntensity: 1
-  m_AmbientMode: 3
-  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
-  m_SkyboxMaterial: {fileID: 0}
-  m_HaloStrength: 0.5
-  m_FlareStrength: 1
-  m_FlareFadeSpeed: 3
-  m_HaloTexture: {fileID: 0}
-  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
-  m_DefaultReflectionMode: 0
-  m_DefaultReflectionResolution: 128
-  m_ReflectionBounces: 1
-  m_ReflectionIntensity: 1
-  m_CustomReflection: {fileID: 0}
-  m_Sun: {fileID: 0}
-  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
-  m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
-  m_ObjectHideFlags: 0
-  serializedVersion: 11
-  m_GIWorkflowMode: 1
-  m_GISettings:
-    serializedVersion: 2
-    m_BounceScale: 1
-    m_IndirectOutputScale: 1
-    m_AlbedoBoost: 1
-    m_TemporalCoherenceThreshold: 1
-    m_EnvironmentLightingMode: 0
-    m_EnableBakedLightmaps: 0
-    m_EnableRealtimeLightmaps: 0
-  m_LightmapEditorSettings:
-    serializedVersion: 10
-    m_Resolution: 2
-    m_BakeResolution: 40
-    m_AtlasSize: 1024
-    m_AO: 0
-    m_AOMaxDistance: 1
-    m_CompAOExponent: 1
-    m_CompAOExponentDirect: 0
-    m_Padding: 2
-    m_LightmapParameters: {fileID: 0}
-    m_LightmapsBakeMode: 1
-    m_TextureCompression: 1
-    m_FinalGather: 0
-    m_FinalGatherFiltering: 1
-    m_FinalGatherRayCount: 256
-    m_ReflectionCompression: 2
-    m_MixedBakeMode: 2
-    m_BakeBackend: 0
-    m_PVRSampling: 1
-    m_PVRDirectSampleCount: 32
-    m_PVRSampleCount: 500
-    m_PVRBounces: 2
-    m_PVRFilterTypeDirect: 0
-    m_PVRFilterTypeIndirect: 0
-    m_PVRFilterTypeAO: 0
-    m_PVRFilteringMode: 1
-    m_PVRCulling: 1
-    m_PVRFilteringGaussRadiusDirect: 1
-    m_PVRFilteringGaussRadiusIndirect: 5
-    m_PVRFilteringGaussRadiusAO: 2
-    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
-    m_PVRFilteringAtrousPositionSigmaIndirect: 2
-    m_PVRFilteringAtrousPositionSigmaAO: 1
-    m_ShowResolutionOverlay: 1
-  m_LightingDataAsset: {fileID: 0}
-  m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
-  serializedVersion: 2
-  m_ObjectHideFlags: 0
-  m_BuildSettings:
-    serializedVersion: 2
-    agentTypeID: 0
-    agentRadius: 0.5
-    agentHeight: 2
-    agentSlope: 45
-    agentClimb: 0.4
-    ledgeDropHeight: 0
-    maxJumpAcrossDistance: 0
-    minRegionArea: 2
-    manualCellSize: 0
-    cellSize: 0.16666667
-    manualTileSize: 0
-    tileSize: 256
-    accuratePlacement: 0
-    debug:
-      m_Flags: 0
-  m_NavMeshData: {fileID: 0}
---- !u!1 &519420028
-GameObject:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  serializedVersion: 5
-  m_Component:
-  - component: {fileID: 519420032}
-  - component: {fileID: 519420031}
-  - component: {fileID: 519420029}
-  m_Layer: 0
-  m_Name: Main Camera
-  m_TagString: MainCamera
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!81 &519420029
-AudioListener:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_GameObject: {fileID: 519420028}
-  m_Enabled: 1
---- !u!20 &519420031
-Camera:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_GameObject: {fileID: 519420028}
-  m_Enabled: 1
-  serializedVersion: 2
-  m_ClearFlags: 2
-  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
-  m_NormalizedViewPortRect:
-    serializedVersion: 2
-    x: 0
-    y: 0
-    width: 1
-    height: 1
-  near clip plane: 0.3
-  far clip plane: 1000
-  field of view: 60
-  orthographic: 1
-  orthographic size: 5
-  m_Depth: -1
-  m_CullingMask:
-    serializedVersion: 2
-    m_Bits: 4294967295
-  m_RenderingPath: -1
-  m_TargetTexture: {fileID: 0}
-  m_TargetDisplay: 0
-  m_TargetEye: 0
-  m_HDR: 1
-  m_AllowMSAA: 0
-  m_AllowDynamicResolution: 0
-  m_ForceIntoRT: 0
-  m_OcclusionCulling: 0
-  m_StereoConvergence: 10
-  m_StereoSeparation: 0.022
---- !u!4 &519420032
-Transform:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_GameObject: {fileID: 519420028}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: -10}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c32cb1cedfa95ef4b43a5f2c4dc733173566913e
--- /dev/null
+++ b/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5c8c8333a4e559b94b63466f98c4d58b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/MovementScript.cs b/Assets/Scripts/MovementScript.cs
new file mode 100644
index 0000000000000000000000000000000000000000..1a7643d3f767b0fcd0cce5ddd2a20afb2eaaf785
--- /dev/null
+++ b/Assets/Scripts/MovementScript.cs
@@ -0,0 +1,59 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MovementScript : MonoBehaviour
+{
+    public float m_MovementSpeed = 3f;
+    public float m_JumpSpeed = 10f;
+
+    private string m_MovementAxisName;
+    private float m_MovementInputValue;
+    private string m_JumpAxisName;
+    private float m_JumpInputValue;
+    private Rigidbody2D m_Rigidbody;
+
+    private void Awake(){
+        m_Rigidbody = GetComponent<Rigidbody2D>();
+    }
+
+    private void OnEnable(){
+        m_Rigidbody.isKinematic = false;
+        m_MovementInputValue = 0f;
+        m_JumpInputValue = 0f;
+    }
+
+    private void OnDisable(){
+        m_Rigidbody.isKinematic = true;
+    }
+
+    // Start is called before the first frame update
+    private void Start()
+    {
+        m_MovementAxisName = "Horizontal";
+        m_JumpAxisName = "Jump";
+    }
+
+    // Update is called once per frame
+    private void Update()
+    {
+        m_MovementInputValue = Input.GetAxis(m_MovementAxisName);
+        m_JumpInputValue = Input.GetAxis(m_JumpAxisName);
+    }
+
+    private void FixedUpdate()
+    {
+        if (m_JumpInputValue < 0.1f){
+            m_JumpInputValue = 0f;
+        }
+
+        Vector3 movementVect = new Vector3(m_MovementInputValue, 0, 0);
+        Vector3 jumpVect = new Vector3(0, m_JumpInputValue, 0);
+
+        movementVect = movementVect.normalized * m_MovementSpeed * Time.deltaTime;
+        jumpVect = jumpVect.normalized * m_JumpSpeed * Time.deltaTime;
+
+        transform.position += movementVect + jumpVect;
+    }
+
+}
diff --git a/Assets/Scripts/MovementScript.cs.meta b/Assets/Scripts/MovementScript.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..12010971a97f5407812aaef9b940dc2fcc2c6eee
--- /dev/null
+++ b/Assets/Scripts/MovementScript.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5bcc7b697df67f3328b8bb01ee59df7c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles.meta b/Assets/Tiles.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f9517e5707ec263bcb9a7eaea0b18253aa10042b
--- /dev/null
+++ b/Assets/Tiles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 04f84431f4a703b8882f8a65d0f48fd1
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles.meta b/Assets/Tiles/GroundTiles.meta
new file mode 100644
index 0000000000000000000000000000000000000000..639ee3096833a2f1c073d051d45576fc9b04ddde
--- /dev/null
+++ b/Assets/Tiles/GroundTiles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7c5ef7f54d4edad3091faa533cfc49ca
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Bone (1).asset b/Assets/Tiles/GroundTiles/Bone (1).asset
new file mode 100644
index 0000000000000000000000000000000000000000..4d4165da3e32d9903523b15419e21bff5a00a1f8
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (1).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Bone (1)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 6b91739567e2c0dfb9410a2eae78042b, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Bone (1).asset.meta b/Assets/Tiles/GroundTiles/Bone (1).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..50d778bd9c7d66bfc30beaca224db485e61a187c
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (1).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bd64b24e9a338132884cf642b9beded2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Bone (2).asset b/Assets/Tiles/GroundTiles/Bone (2).asset
new file mode 100644
index 0000000000000000000000000000000000000000..01305d8357aa8f2194103981872f4d67a544a1ba
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (2).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Bone (2)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: db2cb535e3928bfce9afc5d2847559b9, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Bone (2).asset.meta b/Assets/Tiles/GroundTiles/Bone (2).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a95bbd8d6b7791228beaf15315b77120441e38ea
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (2).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2cb260ebb2d3dc87fa66ae685e481ef9
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Bone (3).asset b/Assets/Tiles/GroundTiles/Bone (3).asset
new file mode 100644
index 0000000000000000000000000000000000000000..40ee5dccb0528a750f74d5d59bd05e5d92d1a281
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (3).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Bone (3)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: da02656108a09a8118989e2d34ba7f3e, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Bone (3).asset.meta b/Assets/Tiles/GroundTiles/Bone (3).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..0553571cb8a1cd01f9491c7e9b5bc0bb367e3d9d
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (3).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ba8ca52498573cb76b94e65e6338a516
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Bone (4).asset b/Assets/Tiles/GroundTiles/Bone (4).asset
new file mode 100644
index 0000000000000000000000000000000000000000..246f9979c1f7c0bc5a76a886c8c683bd312c8b1c
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (4).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Bone (4)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 8dca30442d35ea41783739a852c7064d, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Bone (4).asset.meta b/Assets/Tiles/GroundTiles/Bone (4).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..8ae98b3d61c5ec1630e33698a1f1ceed10935087
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Bone (4).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f9b1c2f36ac2bafeead53c9fd8f4c999
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (1).asset b/Assets/Tiles/GroundTiles/Tile (1).asset
new file mode 100644
index 0000000000000000000000000000000000000000..6735fc54dcc165e40485fd6d24b2c7a6b32d4c8e
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (1).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (1)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: d1f6c5d87ad8a0bea84d41af93e124d2, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (1).asset.meta b/Assets/Tiles/GroundTiles/Tile (1).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..58c3f80ac3de035532716796c86db7a139f51dc3
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (1).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eb68ab9c964640e2d80dcd592a73f8e7
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (10).asset b/Assets/Tiles/GroundTiles/Tile (10).asset
new file mode 100644
index 0000000000000000000000000000000000000000..679792a2504a437708bc19dbbec936598e688d38
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (10).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (10)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: b08b803487260dcfcad4830a48c36bd9, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (10).asset.meta b/Assets/Tiles/GroundTiles/Tile (10).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..23ebb6b78f27a1c694cedde2c014cfbaead0e1ce
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (10).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09bbdebfb730034b18c53bc0cf4afbc3
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (11).asset b/Assets/Tiles/GroundTiles/Tile (11).asset
new file mode 100644
index 0000000000000000000000000000000000000000..8aa3da9865fac3ca7d3f1529cdc90eea05edb75b
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (11).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (11)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 9d7087b9c6574c4e5b715f683f94b8aa, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (11).asset.meta b/Assets/Tiles/GroundTiles/Tile (11).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..be8efc832f6f7ad10ea5a533cc40fc0aa70973af
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (11).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4489cd4d4289237999207f74ada5448b
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (12).asset b/Assets/Tiles/GroundTiles/Tile (12).asset
new file mode 100644
index 0000000000000000000000000000000000000000..fe43e809a4b466953181e859e5e5285ba4a7f157
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (12).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (12)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 4b5d691fff1be3632b048581b165c68e, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (12).asset.meta b/Assets/Tiles/GroundTiles/Tile (12).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..1613ee1c08f6213a4fd110923349045bfaa84f35
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (12).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 370ef86f98f917fe8bbaa48745df5e36
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (13).asset b/Assets/Tiles/GroundTiles/Tile (13).asset
new file mode 100644
index 0000000000000000000000000000000000000000..b33c6e66a5bcdf8136df16dde149427238e5a3d2
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (13).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (13)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 7d5001fa388e26c6dac61e6b4a827bc3, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (13).asset.meta b/Assets/Tiles/GroundTiles/Tile (13).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..d45f471ab2d57dcf671b42fad2e0e9ade61e0a61
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (13).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 934e82a10e8463078961789d3301417f
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (14).asset b/Assets/Tiles/GroundTiles/Tile (14).asset
new file mode 100644
index 0000000000000000000000000000000000000000..2b8fd52d2c06351b3b6e72f438db835b586ce48d
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (14).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (14)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 85ca6a31f587bf869a7f0c5ddb717b05, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (14).asset.meta b/Assets/Tiles/GroundTiles/Tile (14).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..efe16ac9796976c66f1e921649a0edb146cd3f57
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (14).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f017eeef0145589348b6ac65eba3e542
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (15).asset b/Assets/Tiles/GroundTiles/Tile (15).asset
new file mode 100644
index 0000000000000000000000000000000000000000..bc91a4c0f96ae3518144d5f6b5048c969c4fa115
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (15).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (15)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: f95b5567a820fd5c7a8d0771b8f229ff, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (15).asset.meta b/Assets/Tiles/GroundTiles/Tile (15).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..de9a59e2250eb3329964bc72a37bb1a791f85939
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (15).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 940e1f5ebd555e802afc17091e515459
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (16).asset b/Assets/Tiles/GroundTiles/Tile (16).asset
new file mode 100644
index 0000000000000000000000000000000000000000..08454ced4a86726aeeb96386425cb2bab9b32011
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (16).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (16)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: ba480b425e916491a8b46688af3c6e6e, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (16).asset.meta b/Assets/Tiles/GroundTiles/Tile (16).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..74e3b22ff300e79922016e13792ecd169feed3bb
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (16).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 97b73382799481021af9ea46fd49fcf8
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (2).asset b/Assets/Tiles/GroundTiles/Tile (2).asset
new file mode 100644
index 0000000000000000000000000000000000000000..31659fde7dacfed1d60230cee131369b87d17012
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (2).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (2)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 15693d64f56237f60ae07f5d7fefed50, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (2).asset.meta b/Assets/Tiles/GroundTiles/Tile (2).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..43fff32ecce482da9bfe2ad57816cd03befdf172
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (2).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8473f1ceba63c2d01ac809d19f2f999f
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (3).asset b/Assets/Tiles/GroundTiles/Tile (3).asset
new file mode 100644
index 0000000000000000000000000000000000000000..d7a7c92f7c79c400f430f891b0781b335bd24478
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (3).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (3)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 301856fde6502d92abc8d344ccbe6e6b, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (3).asset.meta b/Assets/Tiles/GroundTiles/Tile (3).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..03793cfe1bed2d65edf6e5c8baa98ab1a23c50d2
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (3).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e470c2ed2957ae0abb8f2e14bb0d29c2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (4).asset b/Assets/Tiles/GroundTiles/Tile (4).asset
new file mode 100644
index 0000000000000000000000000000000000000000..3b996b8a7cfab733718f2d8198452774af341811
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (4).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (4)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: a8908754e3d883cff949ac451cda3f5d, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (4).asset.meta b/Assets/Tiles/GroundTiles/Tile (4).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..f71367b76e7e69dad790cd9a3c7352ea29e8f15d
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (4).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 94f3a07cf39a9f317be6d875b54dd56a
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (5).asset b/Assets/Tiles/GroundTiles/Tile (5).asset
new file mode 100644
index 0000000000000000000000000000000000000000..aaea44e406e6d37b7dc7ca2cc6c8731d2379d532
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (5).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (5)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: caad24057ecfb286197f1486df2c4902, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (5).asset.meta b/Assets/Tiles/GroundTiles/Tile (5).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..5c2dac409113343551cd918efc5cf9b0e84b8dfc
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (5).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f2afec556bffd168fa321c6e694a7d0a
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (6).asset b/Assets/Tiles/GroundTiles/Tile (6).asset
new file mode 100644
index 0000000000000000000000000000000000000000..c0299928de3210e036363379fa4b8d26a0d1f5fb
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (6).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (6)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 9fbe546621feeb15b87642638d8c120b, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (6).asset.meta b/Assets/Tiles/GroundTiles/Tile (6).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..2e39451af1eef367be659ed4cf95bd61b68c7aa2
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (6).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 106c8ef36bbe196e99e74b1655605517
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (7).asset b/Assets/Tiles/GroundTiles/Tile (7).asset
new file mode 100644
index 0000000000000000000000000000000000000000..329ae6cd14e5fa91c264f5a05f77b8451f7f3414
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (7).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (7)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 607e279f541421f539f6d1a40c904c4f, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (7).asset.meta b/Assets/Tiles/GroundTiles/Tile (7).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9d980526e8e7ba0dba783afce0927a2767cf9b8a
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (7).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e2928f837376bb90baa22cc527f8cd3
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (8).asset b/Assets/Tiles/GroundTiles/Tile (8).asset
new file mode 100644
index 0000000000000000000000000000000000000000..e035704fc5238f9c0722719ceb7f9a2fe0086dfe
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (8).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (8)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 98a80ea99f8e5375bb273f6fcafeda22, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (8).asset.meta b/Assets/Tiles/GroundTiles/Tile (8).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..e34a963966d4c8987bfcacaebdd9b91e4fd1b43a
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (8).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: debc36b20bd3f2ebfb8a0444e8bd4ed7
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Tiles/GroundTiles/Tile (9).asset b/Assets/Tiles/GroundTiles/Tile (9).asset
new file mode 100644
index 0000000000000000000000000000000000000000..e4fee043bf0dabbec5078714b2ee171cda61ef01
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (9).asset	
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Tile (9)
+  m_EditorClassIdentifier: 
+  m_Sprite: {fileID: 21300000, guid: 2bd978cbbf8dd044bac160928664b946, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Transform:
+    e00: 1
+    e01: 0
+    e02: 0
+    e03: 0
+    e10: 0
+    e11: 1
+    e12: 0
+    e13: 0
+    e20: 0
+    e21: 0
+    e22: 1
+    e23: 0
+    e30: 0
+    e31: 0
+    e32: 0
+    e33: 1
+  m_InstancedGameObject: {fileID: 0}
+  m_Flags: 1
+  m_ColliderType: 1
diff --git a/Assets/Tiles/GroundTiles/Tile (9).asset.meta b/Assets/Tiles/GroundTiles/Tile (9).asset.meta
new file mode 100644
index 0000000000000000000000000000000000000000..380baf6b6b8fbd59df83fe54e70fe1fce09be5ca
--- /dev/null
+++ b/Assets/Tiles/GroundTiles/Tile (9).asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8ff71e4494488a1a7802eb0bc10abbfb
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Library/CurrentLayout.dwlt b/Library/CurrentLayout.dwlt
index d438968088111d3660fcc58dd895b2b90d129407..85b072c737d8ae385f6d0ece62f4b03714161e0c 100644
--- a/Library/CurrentLayout.dwlt
+++ b/Library/CurrentLayout.dwlt
@@ -17,11 +17,11 @@ MonoBehaviour:
     x: 0
     y: 68
     width: 1920
-    height: 1013
+    height: 983
   m_ShowMode: 4
   m_Title: 
   m_RootView: {fileID: 6}
-  m_MinSize: {x: 950, y: 300}
+  m_MinSize: {x: 950, y: 544}
   m_MaxSize: {x: 10000, y: 10000}
 --- !u!114 &2
 MonoBehaviour:
@@ -43,11 +43,11 @@ MonoBehaviour:
     x: 0
     y: 30
     width: 1920
-    height: 963
+    height: 933
   m_MinSize: {x: 683, y: 494}
   m_MaxSize: {x: 14004, y: 14044}
   vertical: 0
-  controlID: 34
+  controlID: 101
 --- !u!114 &3
 MonoBehaviour:
   m_ObjectHideFlags: 52
@@ -63,10 +63,10 @@ MonoBehaviour:
   m_Children: []
   m_Position:
     serializedVersion: 2
-    x: 1531
+    x: 1366
     y: 0
-    width: 389
-    height: 963
+    width: 554
+    height: 933
   m_MinSize: {x: 277, y: 72}
   m_MaxSize: {x: 4002, y: 4022}
   m_ActualView: {fileID: 14}
@@ -91,8 +91,8 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 379
-    height: 583
+    width: 404
+    height: 661
   m_MinSize: {x: 202, y: 222}
   m_MaxSize: {x: 4002, y: 4022}
   m_ActualView: {fileID: 15}
@@ -116,9 +116,9 @@ MonoBehaviour:
   m_Position:
     serializedVersion: 2
     x: 0
-    y: 583
-    width: 1531
-    height: 380
+    y: 661
+    width: 1366
+    height: 272
   m_MinSize: {x: 232, y: 272}
   m_MaxSize: {x: 10002, y: 10022}
   m_ActualView: {fileID: 13}
@@ -126,7 +126,7 @@ MonoBehaviour:
   - {fileID: 13}
   - {fileID: 18}
   m_Selected: 0
-  m_LastSelected: 0
+  m_LastSelected: 1
 --- !u!114 &6
 MonoBehaviour:
   m_ObjectHideFlags: 52
@@ -148,8 +148,8 @@ MonoBehaviour:
     x: 0
     y: 0
     width: 1920
-    height: 1013
-  m_MinSize: {x: 950, y: 300}
+    height: 983
+  m_MinSize: {x: 950, y: 544}
   m_MaxSize: {x: 10000, y: 10000}
 --- !u!114 &7
 MonoBehaviour:
@@ -189,7 +189,7 @@ MonoBehaviour:
   m_Position:
     serializedVersion: 2
     x: 0
-    y: 993
+    y: 963
     width: 1920
     height: 20
   m_MinSize: {x: 0, y: 0}
@@ -213,12 +213,12 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1531
-    height: 963
+    width: 1366
+    height: 933
   m_MinSize: {x: 406, y: 494}
   m_MaxSize: {x: 10002, y: 14044}
   vertical: 1
-  controlID: 97
+  controlID: 107
 --- !u!114 &10
 MonoBehaviour:
   m_ObjectHideFlags: 52
@@ -238,12 +238,12 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1531
-    height: 583
+    width: 1366
+    height: 661
   m_MinSize: {x: 406, y: 222}
   m_MaxSize: {x: 8006, y: 4022}
   vertical: 0
-  controlID: 98
+  controlID: 108
 --- !u!114 &11
 MonoBehaviour:
   m_ObjectHideFlags: 52
@@ -259,10 +259,10 @@ MonoBehaviour:
   m_Children: []
   m_Position:
     serializedVersion: 2
-    x: 379
+    x: 404
     y: 0
-    width: 1152
-    height: 583
+    width: 962
+    height: 661
   m_MinSize: {x: 204, y: 222}
   m_MaxSize: {x: 4004, y: 4022}
   m_ActualView: {fileID: 16}
@@ -320,9 +320,9 @@ MonoBehaviour:
   m_Pos:
     serializedVersion: 2
     x: 0
-    y: 710
-    width: 1531
-    height: 361
+    y: 788
+    width: 1366
+    height: 253
   m_ViewDataDictionary: {fileID: 0}
   m_SearchFilter:
     m_NameFilter: 
@@ -336,20 +336,20 @@ MonoBehaviour:
     m_ShowAllHits: 0
     m_SearchArea: 1
     m_Folders:
-    - Assets
+    - Assets/Tileset/tileset_graveyard/png
   m_ViewMode: 1
   m_StartGridSize: 64
   m_LastFolders:
-  - Assets
+  - Assets/Tileset/tileset_graveyard/png
   m_LastFoldersGridSize: -1
   m_LastProjectPath: /mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD
   m_LockTracker:
     m_IsLocked: 0
   m_FolderTreeState:
-    scrollPos: {x: 0, y: 0}
-    m_SelectedIDs: 42370000
-    m_LastClickedID: 14146
-    m_ExpandedIDs: 000000004237000000ca9a3b
+    scrollPos: {x: 0, y: 79}
+    m_SelectedIDs: d42e0000
+    m_LastClickedID: 11988
+    m_ExpandedIDs: 00000000542900002e2a0000362b0000d42e0000283000004031000000ca9a3b
     m_RenameOverlay:
       m_UserAcceptedRename: 0
       m_Name: 
@@ -365,7 +365,7 @@ MonoBehaviour:
       m_IsRenaming: 0
       m_OriginalEventType: 11
       m_IsRenamingFilename: 1
-      m_ClientGUIView: {fileID: 0}
+      m_ClientGUIView: {fileID: 5}
     m_SearchString: 
     m_CreateAssetUtility:
       m_EndAction: {fileID: 0}
@@ -377,7 +377,7 @@ MonoBehaviour:
     scrollPos: {x: 0, y: 0}
     m_SelectedIDs: 
     m_LastClickedID: 0
-    m_ExpandedIDs: 
+    m_ExpandedIDs: 0000000054290000
     m_RenameOverlay:
       m_UserAcceptedRename: 0
       m_Name: 
@@ -404,8 +404,8 @@ MonoBehaviour:
   m_ListAreaState:
     m_SelectedInstanceIDs: 
     m_LastClickedInstanceID: 0
-    m_HadKeyboardFocusLastEvent: 0
-    m_ExpandedInstanceIDs: c6230000
+    m_HadKeyboardFocusLastEvent: 1
+    m_ExpandedInstanceIDs: c623000000000000
     m_RenameOverlay:
       m_UserAcceptedRename: 0
       m_Name: 
@@ -431,7 +431,7 @@ MonoBehaviour:
     m_NewAssetIndexInList: -1
     m_ScrollPosition: {x: 0, y: 0}
     m_GridSize: 64
-  m_DirectoriesAreaWidth: 115
+  m_DirectoriesAreaWidth: 166
 --- !u!114 &14
 MonoBehaviour:
   m_ObjectHideFlags: 52
@@ -453,10 +453,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: 1531
+    x: 1366
     y: 127
-    width: 387
-    height: 944
+    width: 552
+    height: 914
   m_ViewDataDictionary: {fileID: 0}
   m_OpenAddComponentMenu: 0
   m_ObjectsLockedBeforeSerialization: []
@@ -491,15 +491,15 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 127
-    width: 379
-    height: 564
+    width: 404
+    height: 642
   m_ViewDataDictionary: {fileID: 0}
   m_SceneHierarchy:
     m_TreeViewState:
       scrollPos: {x: 0, y: 0}
-      m_SelectedIDs: 
-      m_LastClickedID: 0
-      m_ExpandedIDs: 68ebffff
+      m_SelectedIDs: 76300000
+      m_LastClickedID: 12406
+      m_ExpandedIDs: feeeffffa0f0ffff70f9ffff8efbffff
       m_RenameOverlay:
         m_UserAcceptedRename: 0
         m_Name: 
@@ -515,7 +515,7 @@ MonoBehaviour:
         m_IsRenaming: 0
         m_OriginalEventType: 11
         m_IsRenamingFilename: 0
-        m_ClientGUIView: {fileID: 0}
+        m_ClientGUIView: {fileID: 4}
       m_SearchString: 
     m_ExpandedScenes: []
     m_CurrenRootInstanceID: 0
@@ -544,10 +544,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: 379
+    x: 404
     y: 127
-    width: 1150
-    height: 564
+    width: 960
+    height: 642
   m_ViewDataDictionary: {fileID: 0}
   m_ShowContextualTools: 0
   m_WindowGUID: 04014ae9ebf8584e8a0dc6bff75065f5
@@ -559,9 +559,9 @@ MonoBehaviour:
   m_PlayAudio: 0
   m_AudioPlay: 0
   m_Position:
-    m_Target: {x: 0, y: 0, z: 0}
+    m_Target: {x: 0.11305176, y: -0.019636031, z: -2.2089245}
     speed: 2
-    m_Value: {x: 0, y: 0, z: 0}
+    m_Value: {x: 0.11305176, y: -0.019636031, z: -2.2089245}
   m_RenderMode: 0
   m_CameraMode:
     drawMode: 0
@@ -594,9 +594,9 @@ MonoBehaviour:
     speed: 2
     m_Value: {x: 0, y: 0, z: 0, w: 1}
   m_Size:
-    m_Target: 10
+    m_Target: 8.667425
     speed: 2
-    m_Value: 10
+    m_Value: 8.294187
   m_Ortho:
     m_Target: 1
     speed: 2
@@ -642,10 +642,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: 507
-    y: 94
-    width: 1532
-    height: 790
+    x: 404
+    y: 127
+    width: 960
+    height: 642
   m_ViewDataDictionary: {fileID: 0}
   m_VSyncEnabled: 0
   m_MaximizeOnPlay: 0
@@ -658,10 +658,10 @@ MonoBehaviour:
     m_VRangeLocked: 0
     hZoomLockedByDefault: 0
     vZoomLockedByDefault: 0
-    m_HBaseRangeMin: -766
-    m_HBaseRangeMax: 766
-    m_VBaseRangeMin: -386.5
-    m_VBaseRangeMax: 386.5
+    m_HBaseRangeMin: -480
+    m_HBaseRangeMax: 480
+    m_VBaseRangeMin: -312.5
+    m_VBaseRangeMax: 312.5
     m_HAllowExceedBaseRangeMin: 1
     m_HAllowExceedBaseRangeMax: 1
     m_VAllowExceedBaseRangeMin: 1
@@ -679,25 +679,25 @@ MonoBehaviour:
       serializedVersion: 2
       x: 0
       y: 17
-      width: 1532
-      height: 773
+      width: 960
+      height: 625
     m_Scale: {x: 1, y: 1}
-    m_Translation: {x: 766, y: 386.5}
+    m_Translation: {x: 480, y: 312.5}
     m_MarginLeft: 0
     m_MarginRight: 0
     m_MarginTop: 0
     m_MarginBottom: 0
     m_LastShownAreaInsideMargins:
       serializedVersion: 2
-      x: -766
-      y: -386.5
-      width: 1532
-      height: 773
+      x: -480
+      y: -312.5
+      width: 960
+      height: 625
     m_MinimalGUI: 1
   m_defaultScale: 1
   m_TargetTexture: {fileID: 0}
-  m_CurrentColorSpace: 1
-  m_LastWindowPixelSize: {x: 1532, y: 790}
+  m_CurrentColorSpace: 0
+  m_LastWindowPixelSize: {x: 960, y: 642}
   m_ClearInEditMode: 1
   m_NoCameraWarning: 1
   m_LowResolutionForAspectRatios: 01000000000100000100
@@ -723,8 +723,8 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: 8
-    y: 718
-    width: 1366
-    height: 308
+    x: 960
+    y: 681
+    width: 683
+    height: 360
   m_ViewDataDictionary: {fileID: 0}
diff --git a/Library/EditorInstance.json b/Library/EditorInstance.json
index 9f411ac6f0dd9de5928cf4bad3277b4cfd0acdeb..c416c1f0d6096c5374527cec04569b007f04dc51 100644
--- a/Library/EditorInstance.json
+++ b/Library/EditorInstance.json
@@ -1,5 +1,5 @@
 {
-	"process_id" : 30067,
+	"process_id" : 27027,
 	"version" : "2019.1.0f2",
 	"app_path" : "/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Unity",
 	"app_contents_path" : "/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data"
diff --git a/Library/GridBrush/UnityEditor.GridBrush.asset b/Library/GridBrush/UnityEditor.GridBrush.asset
new file mode 100644
index 0000000000000000000000000000000000000000..7e539524f946974fb925310328ec3fc51aa5d76a
--- /dev/null
+++ b/Library/GridBrush/UnityEditor.GridBrush.asset
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+  m_ObjectHideFlags: 52
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 12392, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: Default Brush
+  m_EditorClassIdentifier: 
+  m_Cells:
+  - m_Tile: {fileID: 11400000, guid: bd64b24e9a338132884cf642b9beded2, type: 2}
+    m_Matrix:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Pivot: {x: 0, y: 0, z: 0}
diff --git a/Library/InspectorExpandedItems.asset b/Library/InspectorExpandedItems.asset
index da3805391649c8d5ad35c7813b4bffd30f35421d..7ccde7808f5efd8432bfa38f0ee24d2a28adf137 100644
Binary files a/Library/InspectorExpandedItems.asset and b/Library/InspectorExpandedItems.asset differ
diff --git a/Library/SceneVisibilityState.asset b/Library/SceneVisibilityState.asset
index 2e7ee54560978cf26be440013d7a3a72782913e8..fcd38378800230231b23ab207fa6ae758864ebf7 100644
Binary files a/Library/SceneVisibilityState.asset and b/Library/SceneVisibilityState.asset differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll b/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll
new file mode 100644
index 0000000000000000000000000000000000000000..a1df2b094aefde7b95385c76d7f117f07a008c41
Binary files /dev/null and b/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp-Editor.pdb b/Library/ScriptAssemblies/Assembly-CSharp-Editor.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..21d55c69a0d04721fcb522d3dff95e080d2d2df4
Binary files /dev/null and b/Library/ScriptAssemblies/Assembly-CSharp-Editor.pdb differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp.dll b/Library/ScriptAssemblies/Assembly-CSharp.dll
new file mode 100644
index 0000000000000000000000000000000000000000..e9fc236a7aaed454c5356602d4c2a9e82e77cc41
Binary files /dev/null and b/Library/ScriptAssemblies/Assembly-CSharp.dll differ
diff --git a/Library/ScriptAssemblies/Assembly-CSharp.pdb b/Library/ScriptAssemblies/Assembly-CSharp.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..33a5e45bdb693763cdf9d1a3d3b3d6c93fbeb94d
Binary files /dev/null and b/Library/ScriptAssemblies/Assembly-CSharp.pdb differ
diff --git a/Library/ShaderCache/1/1c113688707eb82e2ad2c9d3212e6dd6.bin b/Library/ShaderCache/1/1c113688707eb82e2ad2c9d3212e6dd6.bin
new file mode 100644
index 0000000000000000000000000000000000000000..e00b0ef81bdce4226668e5c9beb65da950154eb4
Binary files /dev/null and b/Library/ShaderCache/1/1c113688707eb82e2ad2c9d3212e6dd6.bin differ
diff --git a/Library/ShaderCache/2/2fa4a332bea17fe549cd8cc68d72ed43.bin b/Library/ShaderCache/2/2fa4a332bea17fe549cd8cc68d72ed43.bin
new file mode 100644
index 0000000000000000000000000000000000000000..33c6663db05e29ababea3442ce7aad8f93205376
Binary files /dev/null and b/Library/ShaderCache/2/2fa4a332bea17fe549cd8cc68d72ed43.bin differ
diff --git a/Library/ShaderCache/4/43fdc1a5d8422f546f1563dcdc9c44ce.bin b/Library/ShaderCache/4/43fdc1a5d8422f546f1563dcdc9c44ce.bin
new file mode 100644
index 0000000000000000000000000000000000000000..92844ec04fe6d6784a5759fa53ad99cd67e1e6bf
Binary files /dev/null and b/Library/ShaderCache/4/43fdc1a5d8422f546f1563dcdc9c44ce.bin differ
diff --git a/Library/ShaderCache/5/55faa02641baf0dddf3af3f4cc3490d7.bin b/Library/ShaderCache/5/55faa02641baf0dddf3af3f4cc3490d7.bin
new file mode 100644
index 0000000000000000000000000000000000000000..4d1d36737c9ff4f33ccdb28fc7d4ee32d2dbc369
Binary files /dev/null and b/Library/ShaderCache/5/55faa02641baf0dddf3af3f4cc3490d7.bin differ
diff --git a/Library/ShaderCache/5/5976c1180de434f744287efab9498552.bin b/Library/ShaderCache/5/5976c1180de434f744287efab9498552.bin
new file mode 100644
index 0000000000000000000000000000000000000000..3c6f4ecb9d08d9498bfb5877cfd20570c8f97abf
Binary files /dev/null and b/Library/ShaderCache/5/5976c1180de434f744287efab9498552.bin differ
diff --git a/Library/ShaderCache/6/644a7985b66111645ff4bc465f1fde65.bin b/Library/ShaderCache/6/644a7985b66111645ff4bc465f1fde65.bin
new file mode 100644
index 0000000000000000000000000000000000000000..c2cf7db70d1aeaf5235c09b333b5b9a7e6a974ff
Binary files /dev/null and b/Library/ShaderCache/6/644a7985b66111645ff4bc465f1fde65.bin differ
diff --git a/Library/ShaderCache/6/6bd9c685f04245ea453bbc09233a6d98.bin b/Library/ShaderCache/6/6bd9c685f04245ea453bbc09233a6d98.bin
new file mode 100644
index 0000000000000000000000000000000000000000..541baa38c703fdb6e717f3c1bf0c04cf75bad82b
Binary files /dev/null and b/Library/ShaderCache/6/6bd9c685f04245ea453bbc09233a6d98.bin differ
diff --git a/Library/ShaderCache/7/7744113ccf42e5d345744ffece509240.bin b/Library/ShaderCache/7/7744113ccf42e5d345744ffece509240.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7d2560b01e2f99c0c4affa48758c33210f0d661c
Binary files /dev/null and b/Library/ShaderCache/7/7744113ccf42e5d345744ffece509240.bin differ
diff --git a/Library/ShaderCache/8/84eaf748dc5d43fc82b24f35077bbbfc.bin b/Library/ShaderCache/8/84eaf748dc5d43fc82b24f35077bbbfc.bin
new file mode 100644
index 0000000000000000000000000000000000000000..3266397239a680251008aa689fe9cf55d9fe90ac
Binary files /dev/null and b/Library/ShaderCache/8/84eaf748dc5d43fc82b24f35077bbbfc.bin differ
diff --git a/Library/ShaderCache/EditorEncounteredVariants b/Library/ShaderCache/EditorEncounteredVariants
index 41996ad9fedf1eaf0559594b98765ce3f729bad4..cad8c1547b435cf0f967dd080352cc339a4ed0cc 100644
Binary files a/Library/ShaderCache/EditorEncounteredVariants and b/Library/ShaderCache/EditorEncounteredVariants differ
diff --git a/Library/ShaderCache/a/ae0aa87628f0cc07f68916ede75e901d.bin b/Library/ShaderCache/a/ae0aa87628f0cc07f68916ede75e901d.bin
new file mode 100644
index 0000000000000000000000000000000000000000..2e2b5384a6d7f75bf210a17726b998792e55cada
Binary files /dev/null and b/Library/ShaderCache/a/ae0aa87628f0cc07f68916ede75e901d.bin differ
diff --git a/Library/ShaderCache/c/c6bedaae7e6907bb71a56bc57b345333.bin b/Library/ShaderCache/c/c6bedaae7e6907bb71a56bc57b345333.bin
new file mode 100644
index 0000000000000000000000000000000000000000..fb9b48b43a484c614f803decc5d51e687fe193fc
Binary files /dev/null and b/Library/ShaderCache/c/c6bedaae7e6907bb71a56bc57b345333.bin differ
diff --git a/Library/ShaderCache/d/d33cc2927af7fdb0b87ef77a281d0fa5.bin b/Library/ShaderCache/d/d33cc2927af7fdb0b87ef77a281d0fa5.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0d0f8c82424550777273f6195ef880dbcf7f76fb
Binary files /dev/null and b/Library/ShaderCache/d/d33cc2927af7fdb0b87ef77a281d0fa5.bin differ
diff --git a/Library/StateCache/Hierarchy/396449-mainStage.json b/Library/StateCache/Hierarchy/396449-mainStage.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c8b6a2f59c73a0e02b632409ca3537e6a680a64
--- /dev/null
+++ b/Library/StateCache/Hierarchy/396449-mainStage.json
@@ -0,0 +1 @@
+{"m_ExpandedPrefabGameObjectFileIDs":[],"m_ExpandedSceneGameObjectInstanceIDs":[-1138],"m_ScrollY":0.0,"m_LastClickedFileID":0,"m_LastClickedInstanceID":0}
\ No newline at end of file
diff --git a/Library/StateCache/Hierarchy/e6781f-7a1574fc4930e1596a.json b/Library/StateCache/Hierarchy/e6781f-7a1574fc4930e1596a.json
new file mode 100644
index 0000000000000000000000000000000000000000..487c1371c30973c1c187967027e17b5aafa373d1
--- /dev/null
+++ b/Library/StateCache/Hierarchy/e6781f-7a1574fc4930e1596a.json
@@ -0,0 +1 @@
+{"m_ExpandedPrefabGameObjectFileIDs":[503890977451490883],"m_ExpandedSceneGameObjectInstanceIDs":[],"m_ScrollY":0.0,"m_LastClickedFileID":503890977451490883,"m_LastClickedInstanceID":0}
\ No newline at end of file
diff --git a/Library/StateCache/Hierarchy/e6781f-mainStage.json b/Library/StateCache/Hierarchy/e6781f-mainStage.json
index 4461fa5f1bb8381d1f2522c3a5d4f6ddda3056fb..aeadf2b23db4f0f4f32ddc9a3d9d9563bf2b5868 100644
--- a/Library/StateCache/Hierarchy/e6781f-mainStage.json
+++ b/Library/StateCache/Hierarchy/e6781f-mainStage.json
@@ -1 +1 @@
-{"m_ExpandedPrefabGameObjectFileIDs":[],"m_ExpandedSceneGameObjectInstanceIDs":[],"m_ScrollY":0.0,"m_LastClickedFileID":0,"m_LastClickedInstanceID":0}
\ No newline at end of file
+{"m_ExpandedPrefabGameObjectFileIDs":[],"m_ExpandedSceneGameObjectInstanceIDs":[-1138,12488],"m_ScrollY":0.0,"m_LastClickedFileID":0,"m_LastClickedInstanceID":12480}
\ No newline at end of file
diff --git a/Library/StateCache/SceneView/04014a-7a1574fc4930e1596a.json b/Library/StateCache/SceneView/04014a-7a1574fc4930e1596a.json
new file mode 100644
index 0000000000000000000000000000000000000000..535966f4ec1d49a2835efba58391b008211442e6
--- /dev/null
+++ b/Library/StateCache/SceneView/04014a-7a1574fc4930e1596a.json
@@ -0,0 +1 @@
+{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":false,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":0.5,"y":-1.0,"z":0.0},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":10.565155982971192,"orthographic":true}
\ No newline at end of file
diff --git a/Library/StateCache/SceneView/04014a-mainStage.json b/Library/StateCache/SceneView/04014a-mainStage.json
index 03c4013354074e6c44664c96786648984b6a6b95..74291cd9a73bbc0bff410d0ed2b0cb8188211646 100644
--- a/Library/StateCache/SceneView/04014a-mainStage.json
+++ b/Library/StateCache/SceneView/04014a-mainStage.json
@@ -1 +1 @@
-{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":true,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":0.0,"y":0.0,"z":0.0},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":10.0,"orthographic":true}
\ No newline at end of file
+{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":true,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":-0.02522282302379608,"y":-0.9909615516662598,"z":-4.378386497497559},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":8.437125205993653,"orthographic":true}
\ No newline at end of file
diff --git a/Library/StateCache/SceneView/5c1236-mainStage.json b/Library/StateCache/SceneView/5c1236-mainStage.json
new file mode 100644
index 0000000000000000000000000000000000000000..d5d875236956a8e1e665897fe365c06a014cb7a8
--- /dev/null
+++ b/Library/StateCache/SceneView/5c1236-mainStage.json
@@ -0,0 +1 @@
+{"cameraMode":{"drawMode":0,"name":"Shaded","section":"Shading Mode"},"sceneLighting":true,"audioPlay":false,"sceneViewState":{"showFog":true,"showMaterialUpdate":false,"showSkybox":true,"showFlares":true,"showImageEffects":true,"showParticleSystems":true},"in2DMode":true,"pivot":{"x":-2.1125106811523439,"y":-0.7280447483062744,"z":-2.7481884956359865},"rotation":{"x":0.0,"y":0.0,"z":0.0,"w":1.0},"size":7.302018642425537,"orthographic":true}
\ No newline at end of file
diff --git a/Library/TilemapEditorUserSettings.asset b/Library/TilemapEditorUserSettings.asset
index a05be486b6285d286fae222fa4b023b394f33af1..d9a78b7d6ba6ee7be19685a77e69642e6d2c656b 100644
Binary files a/Library/TilemapEditorUserSettings.asset and b/Library/TilemapEditorUserSettings.asset differ
diff --git a/Library/UIElements/EditorWindows/UnityEditor.InspectorWindow.pref b/Library/UIElements/EditorWindows/UnityEditor.InspectorWindow.pref
new file mode 100644
index 0000000000000000000000000000000000000000..a887f62ba8c87c28d06b318998b015d9ef40ae21
--- /dev/null
+++ b/Library/UIElements/EditorWindows/UnityEditor.InspectorWindow.pref
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+  m_ObjectHideFlags: 61
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 12386, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Keys: []
+  m_Values: []
diff --git a/Library/assetDatabase3 b/Library/assetDatabase3
index 6f5057ce8e1e184e82ba1e963b73ba0b66314f92..57331e35e1801e5747b3a734c41ada5f8fd1c6b9 100644
Binary files a/Library/assetDatabase3 and b/Library/assetDatabase3 differ
diff --git a/Library/expandedItems b/Library/expandedItems
index 53aa9d3ac4c74a5adce6b662af405f274443f5ac..a98341d922abe40d7ccafdf3f60d16fa2bfa1178 100644
Binary files a/Library/expandedItems and b/Library/expandedItems differ
diff --git a/Library/metadata/01/0181db608628b494d8ae50728e507ce1 b/Library/metadata/01/0181db608628b494d8ae50728e507ce1
new file mode 100644
index 0000000000000000000000000000000000000000..9a5dfffee7f210a1c4288c31f6befcb3483a622c
Binary files /dev/null and b/Library/metadata/01/0181db608628b494d8ae50728e507ce1 differ
diff --git a/Library/metadata/01/0181db608628b494d8ae50728e507ce1.info b/Library/metadata/01/0181db608628b494d8ae50728e507ce1.info
new file mode 100644
index 0000000000000000000000000000000000000000..b74e8083ba07f4798fd1eeb165c4d888171544d7
Binary files /dev/null and b/Library/metadata/01/0181db608628b494d8ae50728e507ce1.info differ
diff --git a/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496 b/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496
new file mode 100644
index 0000000000000000000000000000000000000000..a75a4e03a162048580521aad0bf456eaa0a85f95
Binary files /dev/null and b/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496 differ
diff --git a/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496.info b/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496.info
new file mode 100644
index 0000000000000000000000000000000000000000..07a3b9abf446176dd5bfdd3f69cf85a882eae0f2
Binary files /dev/null and b/Library/metadata/02/0282251d79d6e964089ace2dc6e6e496.info differ
diff --git a/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6 b/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6
new file mode 100644
index 0000000000000000000000000000000000000000..410f0ba8debcfa954f574114f94e09ccd7d1404b
Binary files /dev/null and b/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6 differ
diff --git a/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6.info b/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6.info
new file mode 100644
index 0000000000000000000000000000000000000000..aa67a98001d5becd51a5b2b0e4d67e70021f931b
Binary files /dev/null and b/Library/metadata/04/048dcb775445a4a478914781ec3ca9c6.info differ
diff --git a/Library/metadata/04/04e6f1d86089cda409e925cd975436d9 b/Library/metadata/04/04e6f1d86089cda409e925cd975436d9
new file mode 100644
index 0000000000000000000000000000000000000000..0e4b6e42325aa25b2d750858a7ea1038177e8afb
Binary files /dev/null and b/Library/metadata/04/04e6f1d86089cda409e925cd975436d9 differ
diff --git a/Library/metadata/04/04e6f1d86089cda409e925cd975436d9.info b/Library/metadata/04/04e6f1d86089cda409e925cd975436d9.info
new file mode 100644
index 0000000000000000000000000000000000000000..f064948652bc4bf9c3337df4c967819cca94c6cb
Binary files /dev/null and b/Library/metadata/04/04e6f1d86089cda409e925cd975436d9.info differ
diff --git a/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1 b/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1
new file mode 100644
index 0000000000000000000000000000000000000000..f109c1203e78cfdf428a9e93895b0a3f7e4e6fea
Binary files /dev/null and b/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1 differ
diff --git a/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1.info b/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1.info
new file mode 100644
index 0000000000000000000000000000000000000000..c7b778f79108251754d3bdf8f1be3d0398e7c2f2
Binary files /dev/null and b/Library/metadata/04/04f84431f4a703b8882f8a65d0f48fd1.info differ
diff --git a/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61 b/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61
new file mode 100644
index 0000000000000000000000000000000000000000..b9047d4c32781016654791501c571f2239efd24a
Binary files /dev/null and b/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61 differ
diff --git a/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61.info b/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61.info
new file mode 100644
index 0000000000000000000000000000000000000000..2addb6d2ccb97341a44b40a5e3de7f2615c0b0e7
Binary files /dev/null and b/Library/metadata/05/05acc715f855ced458d76ee6f8ac6c61.info differ
diff --git a/Library/metadata/08/08f377be21554a243b61d840fdb6099f b/Library/metadata/08/08f377be21554a243b61d840fdb6099f
new file mode 100644
index 0000000000000000000000000000000000000000..80374facae69c073ce84232f041754d349cba273
Binary files /dev/null and b/Library/metadata/08/08f377be21554a243b61d840fdb6099f differ
diff --git a/Library/metadata/08/08f377be21554a243b61d840fdb6099f.info b/Library/metadata/08/08f377be21554a243b61d840fdb6099f.info
new file mode 100644
index 0000000000000000000000000000000000000000..c93bc95a85766cb26d59733ef02ac28dc6cd10b5
Binary files /dev/null and b/Library/metadata/08/08f377be21554a243b61d840fdb6099f.info differ
diff --git a/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3 b/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3
new file mode 100644
index 0000000000000000000000000000000000000000..73c8bc34fc07d51217b070f4f8e10bc98dc4cb3e
Binary files /dev/null and b/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3 differ
diff --git a/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3.info b/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3.info
new file mode 100644
index 0000000000000000000000000000000000000000..0ee111615307123e01e2a46ed2135d8791f4cfbc
Binary files /dev/null and b/Library/metadata/09/09bbdebfb730034b18c53bc0cf4afbc3.info differ
diff --git a/Library/metadata/0d/0d832c901796201458d7c595a98a0242 b/Library/metadata/0d/0d832c901796201458d7c595a98a0242
new file mode 100644
index 0000000000000000000000000000000000000000..8932c59e6b0d9c542bc7d6be2c3fe9504885e6f9
Binary files /dev/null and b/Library/metadata/0d/0d832c901796201458d7c595a98a0242 differ
diff --git a/Library/metadata/0d/0d832c901796201458d7c595a98a0242.info b/Library/metadata/0d/0d832c901796201458d7c595a98a0242.info
new file mode 100644
index 0000000000000000000000000000000000000000..c33e7ec33060556c3219893875dc7f6b8d64e04c
Binary files /dev/null and b/Library/metadata/0d/0d832c901796201458d7c595a98a0242.info differ
diff --git a/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25 b/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25
new file mode 100644
index 0000000000000000000000000000000000000000..98b0a48fe1528fb37e7395063476da769f048801
Binary files /dev/null and b/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25 differ
diff --git a/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25.info b/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25.info
new file mode 100644
index 0000000000000000000000000000000000000000..a9693fee439fa8482e31a038c7926fe37571c8a7
Binary files /dev/null and b/Library/metadata/0e/0eb9f23cde3a1734da334cfa0831dd25.info differ
diff --git a/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634 b/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634
new file mode 100644
index 0000000000000000000000000000000000000000..8fd1c9e9947d4b6c8f56fd571762287020868a75
Binary files /dev/null and b/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634 differ
diff --git a/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634.info b/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634.info
new file mode 100644
index 0000000000000000000000000000000000000000..e77bdc66b3ca7e464bc3e28d8b6803573527fcfb
Binary files /dev/null and b/Library/metadata/0f/0f7633c93f0364a418841eeb8b058634.info differ
diff --git a/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41 b/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41
new file mode 100644
index 0000000000000000000000000000000000000000..4346dfe29b5305dfc5d771cbacabe07a6efbfe16
Binary files /dev/null and b/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41 differ
diff --git a/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41.info b/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41.info
new file mode 100644
index 0000000000000000000000000000000000000000..9fe25d6f2711329abc5ef815e319fb5dc59ce9dc
Binary files /dev/null and b/Library/metadata/0f/0fafdc3d4f989ff48803e7d870539b41.info differ
diff --git a/Library/metadata/10/106c8ef36bbe196e99e74b1655605517 b/Library/metadata/10/106c8ef36bbe196e99e74b1655605517
new file mode 100644
index 0000000000000000000000000000000000000000..577a9629a5b3130d72cd3c75898f949875bbbbfb
Binary files /dev/null and b/Library/metadata/10/106c8ef36bbe196e99e74b1655605517 differ
diff --git a/Library/metadata/10/106c8ef36bbe196e99e74b1655605517.info b/Library/metadata/10/106c8ef36bbe196e99e74b1655605517.info
new file mode 100644
index 0000000000000000000000000000000000000000..ff65c3e4ce2ff99d1d97400afe21322b351256d0
Binary files /dev/null and b/Library/metadata/10/106c8ef36bbe196e99e74b1655605517.info differ
diff --git a/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912 b/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912
new file mode 100644
index 0000000000000000000000000000000000000000..28012ece0bcd2aa6e4d63d34da7db7cb94ce5e95
Binary files /dev/null and b/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912 differ
diff --git a/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912.info b/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912.info
new file mode 100644
index 0000000000000000000000000000000000000000..05046ba1e799d524eedd9878bbdc1b60b418e069
Binary files /dev/null and b/Library/metadata/10/10e6f8c815d3c4d45b1d98b951d53912.info differ
diff --git a/Library/metadata/11/1123a444101eb774ba7490990b50736a b/Library/metadata/11/1123a444101eb774ba7490990b50736a
new file mode 100644
index 0000000000000000000000000000000000000000..ff3b6ddb0a69c246c878535950c89a72d2c53b4c
Binary files /dev/null and b/Library/metadata/11/1123a444101eb774ba7490990b50736a differ
diff --git a/Library/metadata/11/1123a444101eb774ba7490990b50736a.info b/Library/metadata/11/1123a444101eb774ba7490990b50736a.info
new file mode 100644
index 0000000000000000000000000000000000000000..879606ff127c4f865190522fa0c57c70b2945b37
Binary files /dev/null and b/Library/metadata/11/1123a444101eb774ba7490990b50736a.info differ
diff --git a/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91 b/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91
new file mode 100644
index 0000000000000000000000000000000000000000..b18d179694558cf16c149ea888df79a6399f83de
Binary files /dev/null and b/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91 differ
diff --git a/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91.info b/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91.info
new file mode 100644
index 0000000000000000000000000000000000000000..2c0e816116cf7bc4e2602d922f16ff3e95be898b
Binary files /dev/null and b/Library/metadata/11/1186b8795dc3fc84e8ec53bd314d8e91.info differ
diff --git a/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718 b/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718
new file mode 100644
index 0000000000000000000000000000000000000000..dd415b4c80843cf5dd7f9c6d4b65d7fd274e227c
Binary files /dev/null and b/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718 differ
diff --git a/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718.info b/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718.info
new file mode 100644
index 0000000000000000000000000000000000000000..3fec4ea720681e8cd3cf1673215c3008a9032938
Binary files /dev/null and b/Library/metadata/15/15ebf04de67923d41a36c21e1fc63718.info differ
diff --git a/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b b/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b
new file mode 100644
index 0000000000000000000000000000000000000000..f9ff8ac4c57e43d3bbf2179deb2b61a69ca9c807
Binary files /dev/null and b/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b differ
diff --git a/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b.info b/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b.info
new file mode 100644
index 0000000000000000000000000000000000000000..af78499dcd88de7f79cb7bae67b09e2110af2296
Binary files /dev/null and b/Library/metadata/15/15ef94834d9e4aa44ac8fe619843346b.info differ
diff --git a/Library/metadata/2c/2cda990e2423bbf4892e6590ba056729 b/Library/metadata/1b/1b835c351f58555019caf0b30ad9d019
similarity index 95%
rename from Library/metadata/2c/2cda990e2423bbf4892e6590ba056729
rename to Library/metadata/1b/1b835c351f58555019caf0b30ad9d019
index 9b6255813a3afbeb260319437deb9f3d8df989d9..2af6b07dd495ce648ec365e4a7353f4c6a0be6d6 100644
Binary files a/Library/metadata/2c/2cda990e2423bbf4892e6590ba056729 and b/Library/metadata/1b/1b835c351f58555019caf0b30ad9d019 differ
diff --git a/Library/metadata/1b/1b835c351f58555019caf0b30ad9d019.info b/Library/metadata/1b/1b835c351f58555019caf0b30ad9d019.info
new file mode 100644
index 0000000000000000000000000000000000000000..a432b7d56eb0fe165dc38f6eed38a4bdac8c53ff
Binary files /dev/null and b/Library/metadata/1b/1b835c351f58555019caf0b30ad9d019.info differ
diff --git a/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510 b/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510
new file mode 100644
index 0000000000000000000000000000000000000000..3fbbe01b77d7e5322d45ab3516c1a6b1371dd577
Binary files /dev/null and b/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510 differ
diff --git a/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510.info b/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510.info
new file mode 100644
index 0000000000000000000000000000000000000000..b56b49c99146ef37e8aa2a679f52bd65620a195b
Binary files /dev/null and b/Library/metadata/1e/1e24085edff8e4e499582d8dcf099510.info differ
diff --git a/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b b/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b
new file mode 100644
index 0000000000000000000000000000000000000000..32990aa2609153005bfedc7a249af73d7a42cd85
Binary files /dev/null and b/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b differ
diff --git a/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b.info b/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b.info
new file mode 100644
index 0000000000000000000000000000000000000000..613f48bc1e844e52853c8394e22b7994907d7c71
Binary files /dev/null and b/Library/metadata/1e/1e8b78ac948f05a46a6d8339a503172b.info differ
diff --git a/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd b/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd
new file mode 100644
index 0000000000000000000000000000000000000000..5b8fdff2fc1f532aea16b6137bef1d2ff3dea08f
Binary files /dev/null and b/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd differ
diff --git a/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd.info b/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd.info
new file mode 100644
index 0000000000000000000000000000000000000000..9cf827a1abf20c6acf08a8465d630c8c95615633
Binary files /dev/null and b/Library/metadata/1f/1fa3cd9f91afee64e96c128a82544bcd.info differ
diff --git a/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e b/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e
new file mode 100644
index 0000000000000000000000000000000000000000..97ad8be8fa7a88a314bca4fda7448a2c826264ec
Binary files /dev/null and b/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e differ
diff --git a/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e.info b/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e.info
new file mode 100644
index 0000000000000000000000000000000000000000..8817a04b0766117a8537270dda0cc6b4a5a2f0e9
Binary files /dev/null and b/Library/metadata/1f/1ff9d8296ed1f02419bf4f417ff2265e.info differ
diff --git a/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530 b/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530
new file mode 100644
index 0000000000000000000000000000000000000000..5c84a5bd8fcb2c6cdd5641fa6c2358b19bec7915
Binary files /dev/null and b/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530 differ
diff --git a/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530.info b/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530.info
new file mode 100644
index 0000000000000000000000000000000000000000..1ea1c5416a427f343fe56987cbe8fcdf0b39834b
Binary files /dev/null and b/Library/metadata/20/20a705aea2d80e0478fb89b6f43d8530.info differ
diff --git a/Library/metadata/20/20e46be82478fa24b90f748044c06b4b b/Library/metadata/20/20e46be82478fa24b90f748044c06b4b
new file mode 100644
index 0000000000000000000000000000000000000000..32eeb42a44b744827152f65ecaa8388f17f641f0
Binary files /dev/null and b/Library/metadata/20/20e46be82478fa24b90f748044c06b4b differ
diff --git a/Library/metadata/20/20e46be82478fa24b90f748044c06b4b.info b/Library/metadata/20/20e46be82478fa24b90f748044c06b4b.info
new file mode 100644
index 0000000000000000000000000000000000000000..7be85b10ed30734256d7207f2a0e835fd9ae4422
Binary files /dev/null and b/Library/metadata/20/20e46be82478fa24b90f748044c06b4b.info differ
diff --git a/Library/metadata/21/211d719bb25901043833928f50e9d0ea b/Library/metadata/21/211d719bb25901043833928f50e9d0ea
new file mode 100644
index 0000000000000000000000000000000000000000..6fe098f9cd679f387dcc59d8166cb35f04944ca5
Binary files /dev/null and b/Library/metadata/21/211d719bb25901043833928f50e9d0ea differ
diff --git a/Library/metadata/21/211d719bb25901043833928f50e9d0ea.info b/Library/metadata/21/211d719bb25901043833928f50e9d0ea.info
new file mode 100644
index 0000000000000000000000000000000000000000..2e31b1b5f903a4091eee962b4287eb8f0b622f57
Binary files /dev/null and b/Library/metadata/21/211d719bb25901043833928f50e9d0ea.info differ
diff --git a/Library/metadata/24/2449eb616c871d044adce04ac98030a6 b/Library/metadata/24/2449eb616c871d044adce04ac98030a6
new file mode 100644
index 0000000000000000000000000000000000000000..15befd748c051ea1a51904c259d316c966229431
Binary files /dev/null and b/Library/metadata/24/2449eb616c871d044adce04ac98030a6 differ
diff --git a/Library/metadata/24/2449eb616c871d044adce04ac98030a6.info b/Library/metadata/24/2449eb616c871d044adce04ac98030a6.info
new file mode 100644
index 0000000000000000000000000000000000000000..bfd39bfcc7942811ff84617a594e5553b5888e47
Binary files /dev/null and b/Library/metadata/24/2449eb616c871d044adce04ac98030a6.info differ
diff --git a/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9 b/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9
new file mode 100644
index 0000000000000000000000000000000000000000..3e83954fdad639ccbb717e0e09fc281eb128eb45
Binary files /dev/null and b/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9 differ
diff --git a/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9.info b/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9.info
new file mode 100644
index 0000000000000000000000000000000000000000..f1b16ed270a82771ebad0d932a8f3c1dfb545f36
Binary files /dev/null and b/Library/metadata/24/247be52eadac5044e9f8b7b4d8d0ada9.info differ
diff --git a/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32 b/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32
new file mode 100644
index 0000000000000000000000000000000000000000..179a0f82a83f7a7c56275f1a325185d63f4ea112
Binary files /dev/null and b/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32 differ
diff --git a/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32.info b/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32.info
new file mode 100644
index 0000000000000000000000000000000000000000..2aa18c83c2031f49166dfe5c51ab8505d7d911f0
Binary files /dev/null and b/Library/metadata/24/24ec24775a1b45e4ea81ac13002dee32.info differ
diff --git a/Library/metadata/26/2643ac9881a89594a80c242b565b34ec b/Library/metadata/26/2643ac9881a89594a80c242b565b34ec
new file mode 100644
index 0000000000000000000000000000000000000000..df10ced70f7a6e981b77b7767adff502766b2f6d
Binary files /dev/null and b/Library/metadata/26/2643ac9881a89594a80c242b565b34ec differ
diff --git a/Library/metadata/26/2643ac9881a89594a80c242b565b34ec.info b/Library/metadata/26/2643ac9881a89594a80c242b565b34ec.info
new file mode 100644
index 0000000000000000000000000000000000000000..a7c3c946cde1040d45c9eaf89f23558ed63418ab
Binary files /dev/null and b/Library/metadata/26/2643ac9881a89594a80c242b565b34ec.info differ
diff --git a/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b b/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b
new file mode 100644
index 0000000000000000000000000000000000000000..20b384bfcd7bac8afad6b8e6d5f8df521a430db2
Binary files /dev/null and b/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b differ
diff --git a/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b.info b/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b.info
new file mode 100644
index 0000000000000000000000000000000000000000..886116f75880f85a6d127d4c16cd05a27786fabe
Binary files /dev/null and b/Library/metadata/29/29d58ccb958d24942bf23fafcec87c0b.info differ
diff --git a/Library/metadata/2a/2a15a1e455bcc7543872f50762449739 b/Library/metadata/2a/2a15a1e455bcc7543872f50762449739
new file mode 100644
index 0000000000000000000000000000000000000000..f9a8d5950511e84d4f3c2f673e071979e0bb96d6
Binary files /dev/null and b/Library/metadata/2a/2a15a1e455bcc7543872f50762449739 differ
diff --git a/Library/metadata/2a/2a15a1e455bcc7543872f50762449739.info b/Library/metadata/2a/2a15a1e455bcc7543872f50762449739.info
new file mode 100644
index 0000000000000000000000000000000000000000..28ecf65cfb2c96dbcdaf8d3cce77bc4526c39bce
Binary files /dev/null and b/Library/metadata/2a/2a15a1e455bcc7543872f50762449739.info differ
diff --git a/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4 b/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4
new file mode 100644
index 0000000000000000000000000000000000000000..583b94f9be4f4d6b775605da25d385db176ea11b
Binary files /dev/null and b/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4 differ
diff --git a/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4.info b/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4.info
new file mode 100644
index 0000000000000000000000000000000000000000..fd1410286dfcbfe631cc75d34f05813ac08f625b
Binary files /dev/null and b/Library/metadata/2a/2a82dea150a2b394388860e48a701ed4.info differ
diff --git a/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b b/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b
new file mode 100644
index 0000000000000000000000000000000000000000..592b0e797ee2446b3944f73aaa18f7bc52ef88e4
Binary files /dev/null and b/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b differ
diff --git a/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b.info b/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b.info
new file mode 100644
index 0000000000000000000000000000000000000000..111ceeaf324258cd92bb3ead1e1e6a27dc51a3d3
Binary files /dev/null and b/Library/metadata/2b/2bb09c3bc24a82648a2e4fc008a28d8b.info differ
diff --git a/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39 b/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39
new file mode 100644
index 0000000000000000000000000000000000000000..47f65540e9240f5328e9af8b8f7591c0e23ee6b2
Binary files /dev/null and b/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39 differ
diff --git a/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39.info b/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39.info
new file mode 100644
index 0000000000000000000000000000000000000000..6620a1cefa25898da268a1f7dacf8ee48c6868d8
Binary files /dev/null and b/Library/metadata/2c/2c760cb7073c57e44959f36cbed8ed39.info differ
diff --git a/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9 b/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9
new file mode 100644
index 0000000000000000000000000000000000000000..59c79bc0226908bd185aa3909aa7d3e17f6b049b
Binary files /dev/null and b/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9 differ
diff --git a/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9.info b/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9.info
new file mode 100644
index 0000000000000000000000000000000000000000..abc470d2909f8c6f64825c0a87043e1f071d9d40
Binary files /dev/null and b/Library/metadata/2c/2cb260ebb2d3dc87fa66ae685e481ef9.info differ
diff --git a/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae b/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae
new file mode 100644
index 0000000000000000000000000000000000000000..58098ae9f1dc4c698cc7cea68cc9470c7a519fed
Binary files /dev/null and b/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae differ
diff --git a/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae.info b/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae.info
new file mode 100644
index 0000000000000000000000000000000000000000..538140b427d8dae4886cfd055fcfc844a8c29ec2
Binary files /dev/null and b/Library/metadata/2d/2d37e5385efd7064cb1d54c94960acae.info differ
diff --git a/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3 b/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3
new file mode 100644
index 0000000000000000000000000000000000000000..34aff5fbde416e08e814acc5004a67e8ab3afaa5
Binary files /dev/null and b/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3 differ
diff --git a/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3.info b/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3.info
new file mode 100644
index 0000000000000000000000000000000000000000..07a776948ab658f3db598138bad88fd92d8a39d6
Binary files /dev/null and b/Library/metadata/2e/2e2928f837376bb90baa22cc527f8cd3.info differ
diff --git a/Library/metadata/31/319d2fe34a804e245819465c9505ea59 b/Library/metadata/31/319d2fe34a804e245819465c9505ea59
new file mode 100644
index 0000000000000000000000000000000000000000..e1bfcce0f8fbfabf796dbff41635a3e3dd0af5fc
Binary files /dev/null and b/Library/metadata/31/319d2fe34a804e245819465c9505ea59 differ
diff --git a/Library/metadata/31/319d2fe34a804e245819465c9505ea59.info b/Library/metadata/31/319d2fe34a804e245819465c9505ea59.info
new file mode 100644
index 0000000000000000000000000000000000000000..ba29802bfd87b26cb3e42f09c3b30e2408a5837c
Binary files /dev/null and b/Library/metadata/31/319d2fe34a804e245819465c9505ea59.info differ
diff --git a/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b b/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b
new file mode 100644
index 0000000000000000000000000000000000000000..fc87adf9dc0144fa82dc281f57630b43bb1e2d68
Binary files /dev/null and b/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b differ
diff --git a/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b.info b/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b.info
new file mode 100644
index 0000000000000000000000000000000000000000..ccdbe339eb54ee38830cac9f8937d661805ac6cd
Binary files /dev/null and b/Library/metadata/31/31c3ab7d86d07034eb528155d40c016b.info differ
diff --git a/Library/metadata/32/3226d9f88577be74197693bd17cff8c3 b/Library/metadata/32/3226d9f88577be74197693bd17cff8c3
new file mode 100644
index 0000000000000000000000000000000000000000..8438a7b467e4a1e88f73523caaa381563d09216f
Binary files /dev/null and b/Library/metadata/32/3226d9f88577be74197693bd17cff8c3 differ
diff --git a/Library/metadata/32/3226d9f88577be74197693bd17cff8c3.info b/Library/metadata/32/3226d9f88577be74197693bd17cff8c3.info
new file mode 100644
index 0000000000000000000000000000000000000000..897cf1f143ae15facfd180683b20b47daf133496
Binary files /dev/null and b/Library/metadata/32/3226d9f88577be74197693bd17cff8c3.info differ
diff --git a/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1 b/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1
new file mode 100644
index 0000000000000000000000000000000000000000..219f33fd60e911163956feb693f85d1cf76f76a1
Binary files /dev/null and b/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1 differ
diff --git a/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1.info b/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1.info
new file mode 100644
index 0000000000000000000000000000000000000000..5c2536e9b4b45f8b890019f11441c42f5fc3b510
Binary files /dev/null and b/Library/metadata/32/325a6a3050a061e4b8aa51386c30e8e1.info differ
diff --git a/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5 b/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5
new file mode 100644
index 0000000000000000000000000000000000000000..25d485f6ce8f1b0c72ab1e939752ebc03d3196f0
Binary files /dev/null and b/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5 differ
diff --git a/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5.info b/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5.info
new file mode 100644
index 0000000000000000000000000000000000000000..e7bb24e9bb7ea70ff8dca9272a45877ec6c64a60
Binary files /dev/null and b/Library/metadata/33/33395df238582a175b4a9e0adb96cbd5.info differ
diff --git a/Library/metadata/36/360979aafebd332448626a2236bafdb4 b/Library/metadata/36/360979aafebd332448626a2236bafdb4
new file mode 100644
index 0000000000000000000000000000000000000000..8176795e4d9cf8b45e36a40e1516ffab2097b11e
Binary files /dev/null and b/Library/metadata/36/360979aafebd332448626a2236bafdb4 differ
diff --git a/Library/metadata/36/360979aafebd332448626a2236bafdb4.info b/Library/metadata/36/360979aafebd332448626a2236bafdb4.info
new file mode 100644
index 0000000000000000000000000000000000000000..7cba9558d8d80c3934b88e2d80af3e960ae75e19
Binary files /dev/null and b/Library/metadata/36/360979aafebd332448626a2236bafdb4.info differ
diff --git a/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3 b/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3
new file mode 100644
index 0000000000000000000000000000000000000000..be3100591bfa102348807fd8e6eee5d910d5fd8e
Binary files /dev/null and b/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3 differ
diff --git a/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3.info b/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3.info
new file mode 100644
index 0000000000000000000000000000000000000000..e4331be00455e2040d4e60d4bc5901719ce1afbf
Binary files /dev/null and b/Library/metadata/36/36baaa8bdcb9d8b49b9199833965d2c3.info differ
diff --git a/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c b/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c
new file mode 100644
index 0000000000000000000000000000000000000000..ce378be3b3bc49a9742dd646e89b51691ab3beca
Binary files /dev/null and b/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c differ
diff --git a/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c.info b/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c.info
new file mode 100644
index 0000000000000000000000000000000000000000..10054c5ca1e0eb19ec7a8524d76329755792f0bb
Binary files /dev/null and b/Library/metadata/36/36d1163fa822e8b418a0a603ec078d5c.info differ
diff --git a/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36 b/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36
new file mode 100644
index 0000000000000000000000000000000000000000..b98d9dc1cecd3f70791e661994c7a4ac48628fa4
Binary files /dev/null and b/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36 differ
diff --git a/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36.info b/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36.info
new file mode 100644
index 0000000000000000000000000000000000000000..87ea30f6aeec76e78b1ae8fa51438ca376dc2df4
Binary files /dev/null and b/Library/metadata/37/370ef86f98f917fe8bbaa48745df5e36.info differ
diff --git a/Library/metadata/37/372fe04232d5ed94d8d71524616c1543 b/Library/metadata/37/372fe04232d5ed94d8d71524616c1543
new file mode 100644
index 0000000000000000000000000000000000000000..4800c1fce9af545ea04e5caddb0f87c8c8ca472f
Binary files /dev/null and b/Library/metadata/37/372fe04232d5ed94d8d71524616c1543 differ
diff --git a/Library/metadata/37/372fe04232d5ed94d8d71524616c1543.info b/Library/metadata/37/372fe04232d5ed94d8d71524616c1543.info
new file mode 100644
index 0000000000000000000000000000000000000000..863458f679359bca477dbde05081545ef3354000
Binary files /dev/null and b/Library/metadata/37/372fe04232d5ed94d8d71524616c1543.info differ
diff --git a/Library/metadata/3c/3c9beda531928fc40968802117a5d256 b/Library/metadata/3c/3c9beda531928fc40968802117a5d256
new file mode 100644
index 0000000000000000000000000000000000000000..fa7520800a6c6393f9ad4f398360b1dc203f638d
Binary files /dev/null and b/Library/metadata/3c/3c9beda531928fc40968802117a5d256 differ
diff --git a/Library/metadata/3c/3c9beda531928fc40968802117a5d256.info b/Library/metadata/3c/3c9beda531928fc40968802117a5d256.info
new file mode 100644
index 0000000000000000000000000000000000000000..e0199090efac042a256ef6af09b4295d004b0120
Binary files /dev/null and b/Library/metadata/3c/3c9beda531928fc40968802117a5d256.info differ
diff --git a/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c b/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c
new file mode 100644
index 0000000000000000000000000000000000000000..5653453fd590eb67ae45dbbc04853d8bf9955bfa
Binary files /dev/null and b/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c differ
diff --git a/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c.info b/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c.info
new file mode 100644
index 0000000000000000000000000000000000000000..91163551f7a8bbb18647bea31e52348187c4f508
Binary files /dev/null and b/Library/metadata/3d/3d53800f587b60a4191877d7713cd17c.info differ
diff --git a/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5 b/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5
new file mode 100644
index 0000000000000000000000000000000000000000..51a717121f240b1f42f03b347d03adc870fa8ede
Binary files /dev/null and b/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5 differ
diff --git a/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5.info b/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5.info
new file mode 100644
index 0000000000000000000000000000000000000000..7e3bc55275acb7c7e5de792a67eeaccfcc9f233b
Binary files /dev/null and b/Library/metadata/3f/3f7c779802a73d5448e38af7c39fbaa5.info differ
diff --git a/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661 b/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661
new file mode 100644
index 0000000000000000000000000000000000000000..fd88eb7e417f00f6c02a166ca4ba956482315c91
Binary files /dev/null and b/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661 differ
diff --git a/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661.info b/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661.info
new file mode 100644
index 0000000000000000000000000000000000000000..10a6b2f9c457a05c98be3dd21b4f8145ead2cdeb
Binary files /dev/null and b/Library/metadata/3f/3fed8968b96eb924891cf86f5c51f661.info differ
diff --git a/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3 b/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3
new file mode 100644
index 0000000000000000000000000000000000000000..8298f6aa6fb9796af51f46df17b549f7e73936fd
Binary files /dev/null and b/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3 differ
diff --git a/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3.info b/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3.info
new file mode 100644
index 0000000000000000000000000000000000000000..d3b3107ca532387cf42988837d0e4617e86ec597
Binary files /dev/null and b/Library/metadata/41/418e42c7d0405cc48a7b83f63ea53bb3.info differ
diff --git a/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3 b/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3
new file mode 100644
index 0000000000000000000000000000000000000000..303e331752ea568b63f98760e1b328d3c24250ca
Binary files /dev/null and b/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3 differ
diff --git a/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3.info b/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3.info
new file mode 100644
index 0000000000000000000000000000000000000000..e5048cc8bf7714e0b4884d8dbec67063ac3dfe9c
Binary files /dev/null and b/Library/metadata/42/42cf855b42713884aa8851e8bb50acc3.info differ
diff --git a/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db b/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db
new file mode 100644
index 0000000000000000000000000000000000000000..cf4b8d0a8fd7827fcc60c81642ec25f633caa691
Binary files /dev/null and b/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db differ
diff --git a/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db.info b/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db.info
new file mode 100644
index 0000000000000000000000000000000000000000..1d9984037aa78f1d619362e2da51421900911a5f
Binary files /dev/null and b/Library/metadata/43/435e0ab87d10d1d46966abe3e1b854db.info differ
diff --git a/Library/metadata/44/4489cd4d4289237999207f74ada5448b b/Library/metadata/44/4489cd4d4289237999207f74ada5448b
new file mode 100644
index 0000000000000000000000000000000000000000..56309cdc4c1471e4f0459b82852fedea6da399f9
Binary files /dev/null and b/Library/metadata/44/4489cd4d4289237999207f74ada5448b differ
diff --git a/Library/metadata/44/4489cd4d4289237999207f74ada5448b.info b/Library/metadata/44/4489cd4d4289237999207f74ada5448b.info
new file mode 100644
index 0000000000000000000000000000000000000000..913b86d23d3b6edf1574ddd3a6fced1643fec731
Binary files /dev/null and b/Library/metadata/44/4489cd4d4289237999207f74ada5448b.info differ
diff --git a/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c b/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c
new file mode 100644
index 0000000000000000000000000000000000000000..4cb158145437bed49599d7aef46325f9fee5873a
Binary files /dev/null and b/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c differ
diff --git a/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c.info b/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c.info
new file mode 100644
index 0000000000000000000000000000000000000000..05f3525d8a7bc33b0b5057dd4451c060ee95c49d
Binary files /dev/null and b/Library/metadata/44/44e81fca109f0dc5eb73f2f03c64911c.info differ
diff --git a/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea b/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea
new file mode 100644
index 0000000000000000000000000000000000000000..51148b8d077012bbfffe266275aaf97d9f9463ce
Binary files /dev/null and b/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea differ
diff --git a/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea.info b/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea.info
new file mode 100644
index 0000000000000000000000000000000000000000..187569e5012e6b2b7bdaad4006d230056d6b9879
Binary files /dev/null and b/Library/metadata/45/45e653bab7fb20e499bda25e1b646fea.info differ
diff --git a/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd b/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd
new file mode 100644
index 0000000000000000000000000000000000000000..c0eac86e288e9e4688b3d19bfe4a53e71fbd24a9
Binary files /dev/null and b/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd differ
diff --git a/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd.info b/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd.info
new file mode 100644
index 0000000000000000000000000000000000000000..f7bf0164fb5bd81998b42a149da9469358747597
Binary files /dev/null and b/Library/metadata/46/46965f9cbaf525742a6da4c2172a99cd.info differ
diff --git a/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988 b/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988
new file mode 100644
index 0000000000000000000000000000000000000000..ee56dab841c916ff77f9bc159e6a86d7a2c9c438
Binary files /dev/null and b/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988 differ
diff --git a/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988.info b/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988.info
new file mode 100644
index 0000000000000000000000000000000000000000..314c4f38fc1418c22f11adf74fc95f2d3a3ea61b
Binary files /dev/null and b/Library/metadata/47/4700f9f03ad19f94baf0367cb7a9c988.info differ
diff --git a/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78 b/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78
new file mode 100644
index 0000000000000000000000000000000000000000..333ee63ade33d34971320084c1ba285228e7fb20
Binary files /dev/null and b/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78 differ
diff --git a/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78.info b/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78.info
new file mode 100644
index 0000000000000000000000000000000000000000..2f534d6d5b8e99ff65cb5a07764455497518ac56
Binary files /dev/null and b/Library/metadata/47/47030f88f181f334ab93c4b8ccfe1b78.info differ
diff --git a/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b b/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b
new file mode 100644
index 0000000000000000000000000000000000000000..ba665cff158d54a008d923a942b9bd92bddae896
Binary files /dev/null and b/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b differ
diff --git a/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b.info b/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b.info
new file mode 100644
index 0000000000000000000000000000000000000000..42a3f62c1b9ae51f235f18529c05c3a3c3724bdc
Binary files /dev/null and b/Library/metadata/4a/4a9c464b0191f7d4da1d129d97d8240b.info differ
diff --git a/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38 b/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38
new file mode 100644
index 0000000000000000000000000000000000000000..e2653180f16ee5d09f19ee5eee995579af3941d7
Binary files /dev/null and b/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38 differ
diff --git a/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38.info b/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38.info
new file mode 100644
index 0000000000000000000000000000000000000000..24d777791b650cc753be7cd4b7079dd3f306dc9e
Binary files /dev/null and b/Library/metadata/4f/4fa53a91a43ae1a4bbf6b29961b45c38.info differ
diff --git a/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e b/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e
new file mode 100644
index 0000000000000000000000000000000000000000..e0b1acb293dfd45f4f56c1aefc14626da0a3d523
Binary files /dev/null and b/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e differ
diff --git a/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e.info b/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e.info
new file mode 100644
index 0000000000000000000000000000000000000000..4ac78881b16f491cf142789d78497e925bbc3bd6
Binary files /dev/null and b/Library/metadata/53/53258ad9ad6e71e48bb8643c9522112e.info differ
diff --git a/Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb b/Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb
new file mode 100644
index 0000000000000000000000000000000000000000..24464b24395f1524e4ea5da7ec270ddcd91e9f95
Binary files /dev/null and b/Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb differ
diff --git a/Library/metadata/2c/2cda990e2423bbf4892e6590ba056729.info b/Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb.info
similarity index 79%
rename from Library/metadata/2c/2cda990e2423bbf4892e6590ba056729.info
rename to Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb.info
index bae9976bca6e64ce3a87871bd5b3a801eec82589..9165cd97ed93272b2479ac73ec6e5848fb3f7798 100644
Binary files a/Library/metadata/2c/2cda990e2423bbf4892e6590ba056729.info and b/Library/metadata/53/53d1a8915872ab53ba8ac41e37e27bbb.info differ
diff --git a/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d b/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d
new file mode 100644
index 0000000000000000000000000000000000000000..75f9ea4dff84b9b4538cb79e41daf0bc438a021a
Binary files /dev/null and b/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d differ
diff --git a/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d.info b/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d.info
new file mode 100644
index 0000000000000000000000000000000000000000..f664d8c909cf70842000d942a3e2b417a2121154
Binary files /dev/null and b/Library/metadata/54/54b24e51e2a9fa242b38d80ee11f3b2d.info differ
diff --git a/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7 b/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7
new file mode 100644
index 0000000000000000000000000000000000000000..5279f1f54fa71cd2d8072a35acdbd433ccc00cad
Binary files /dev/null and b/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7 differ
diff --git a/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7.info b/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7.info
new file mode 100644
index 0000000000000000000000000000000000000000..9da5346020a952a603b6fd4f69375bff5898da25
Binary files /dev/null and b/Library/metadata/55/554b0ed52734c154eab51f6cedd3a7d7.info differ
diff --git a/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d b/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d
new file mode 100644
index 0000000000000000000000000000000000000000..af9232e6e12b4c2eb7a4d13cd414fc9706d3c9af
Binary files /dev/null and b/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d differ
diff --git a/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d.info b/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d.info
new file mode 100644
index 0000000000000000000000000000000000000000..f3dc9fd337b904349ced7ec39a1c92e9542571ce
Binary files /dev/null and b/Library/metadata/55/557c6f70a7173744abaa3967b6da6f5d.info differ
diff --git a/Library/metadata/57/57744762d9079934292f57896d8193e0 b/Library/metadata/57/57744762d9079934292f57896d8193e0
new file mode 100644
index 0000000000000000000000000000000000000000..fb4e18e5ab3bc71ebe1e72a825b0c8d870ab159f
Binary files /dev/null and b/Library/metadata/57/57744762d9079934292f57896d8193e0 differ
diff --git a/Library/metadata/57/57744762d9079934292f57896d8193e0.info b/Library/metadata/57/57744762d9079934292f57896d8193e0.info
new file mode 100644
index 0000000000000000000000000000000000000000..90f37f4000addadf4fd8bd637e9c177ab43a448b
Binary files /dev/null and b/Library/metadata/57/57744762d9079934292f57896d8193e0.info differ
diff --git a/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2 b/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2
new file mode 100644
index 0000000000000000000000000000000000000000..20218e55741feef6e46d4479b20638ec7fd9af78
Binary files /dev/null and b/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2 differ
diff --git a/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2.info b/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2.info
new file mode 100644
index 0000000000000000000000000000000000000000..bc122b2d76b93a93f43a32aab76bed3b256fcd1e
Binary files /dev/null and b/Library/metadata/57/5778d22ca832d9f47b5e73a8c5fe78a2.info differ
diff --git a/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c b/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c
new file mode 100644
index 0000000000000000000000000000000000000000..74b4a98fab80f3ce963a6b69791b93bba097daca
Binary files /dev/null and b/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c differ
diff --git a/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c.info b/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c.info
new file mode 100644
index 0000000000000000000000000000000000000000..33dc8d74a4dff7c5ca4c2d27e5b97725b8455894
Binary files /dev/null and b/Library/metadata/5b/5bcc7b697df67f3328b8bb01ee59df7c.info differ
diff --git a/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b b/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b
new file mode 100644
index 0000000000000000000000000000000000000000..500ca5b9c4ed2375d5e626cc821b6521480060fa
Binary files /dev/null and b/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b differ
diff --git a/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b.info b/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b.info
new file mode 100644
index 0000000000000000000000000000000000000000..4da3ba0987a6dfc6c940c5b222ffeef8adb693dc
Binary files /dev/null and b/Library/metadata/5c/5c8c8333a4e559b94b63466f98c4d58b.info differ
diff --git a/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2 b/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2
new file mode 100644
index 0000000000000000000000000000000000000000..03f6aa3fc0d8dc8a3c806cc58bac51a3af58b5a2
Binary files /dev/null and b/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2 differ
diff --git a/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2.info b/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2.info
new file mode 100644
index 0000000000000000000000000000000000000000..2a3ba98c68d417ceefd2c291a82f1ad10793a2d3
Binary files /dev/null and b/Library/metadata/5f/5f2a108eb023faf43a809979fd3d38f2.info differ
diff --git a/Library/metadata/60/6036af5730313e54699c5a693891fe90 b/Library/metadata/60/6036af5730313e54699c5a693891fe90
new file mode 100644
index 0000000000000000000000000000000000000000..6fccc2c35a13aac7bf985892d22a82138e1f4783
Binary files /dev/null and b/Library/metadata/60/6036af5730313e54699c5a693891fe90 differ
diff --git a/Library/metadata/60/6036af5730313e54699c5a693891fe90.info b/Library/metadata/60/6036af5730313e54699c5a693891fe90.info
new file mode 100644
index 0000000000000000000000000000000000000000..ca2d154f3d0c666d50012271e1534fe439135697
Binary files /dev/null and b/Library/metadata/60/6036af5730313e54699c5a693891fe90.info differ
diff --git a/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d b/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d
new file mode 100644
index 0000000000000000000000000000000000000000..dd5f220eab29798ef8a8efe39ff16a7e573be342
Binary files /dev/null and b/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d differ
diff --git a/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d.info b/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d.info
new file mode 100644
index 0000000000000000000000000000000000000000..ffb7263045c8d1162f9489b1b6d4b4ddfa8104a9
Binary files /dev/null and b/Library/metadata/62/620aee1bd928b2a4981896c6b4e1bf0d.info differ
diff --git a/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec b/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec
new file mode 100644
index 0000000000000000000000000000000000000000..90a7af09812e0f584ce3c68b8a07c3260d16fb1d
Binary files /dev/null and b/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec differ
diff --git a/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec.info b/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec.info
new file mode 100644
index 0000000000000000000000000000000000000000..1b6d5380035bf5ff7430c08c0556d5de24456cec
Binary files /dev/null and b/Library/metadata/68/68839a4bf8790cd449d4043f5efb5aec.info differ
diff --git a/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240 b/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240
new file mode 100644
index 0000000000000000000000000000000000000000..fb86d5fc24d2b6c5c199dde45596504138b66ba4
Binary files /dev/null and b/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240 differ
diff --git a/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240.info b/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240.info
new file mode 100644
index 0000000000000000000000000000000000000000..631da97faa96e719b8ca26d182386f95a97c7f8e
Binary files /dev/null and b/Library/metadata/68/68b0627ea3d796448b29ab0938f2c240.info differ
diff --git a/Library/metadata/68/68bb026fafb42b14791938953eaace77 b/Library/metadata/68/68bb026fafb42b14791938953eaace77
new file mode 100644
index 0000000000000000000000000000000000000000..134d6c01d5268820f728c12dff29e695730fe607
Binary files /dev/null and b/Library/metadata/68/68bb026fafb42b14791938953eaace77 differ
diff --git a/Library/metadata/68/68bb026fafb42b14791938953eaace77.info b/Library/metadata/68/68bb026fafb42b14791938953eaace77.info
new file mode 100644
index 0000000000000000000000000000000000000000..3df7af4e5a8ec1e449f59fc7497925b67ddc6692
Binary files /dev/null and b/Library/metadata/68/68bb026fafb42b14791938953eaace77.info differ
diff --git a/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0 b/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0
new file mode 100644
index 0000000000000000000000000000000000000000..52d6ad4cbe689fa1619327d0d2e64d471f2d6164
Binary files /dev/null and b/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0 differ
diff --git a/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0.info b/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0.info
new file mode 100644
index 0000000000000000000000000000000000000000..9a0b1c0d29ecaf6f63f7e1999de19775af913f0d
Binary files /dev/null and b/Library/metadata/6a/6a0472cd31396f741969b8c1af8dd5a0.info differ
diff --git a/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0 b/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0
new file mode 100644
index 0000000000000000000000000000000000000000..853cc34e7fb52b39d6a7a37155bce427c26f4957
Binary files /dev/null and b/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0 differ
diff --git a/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0.info b/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0.info
new file mode 100644
index 0000000000000000000000000000000000000000..dcca976de977e2edfcf94c1559234935150590b8
Binary files /dev/null and b/Library/metadata/6a/6ad980451443d70438faac0bc6c235a0.info differ
diff --git a/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063 b/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063
new file mode 100644
index 0000000000000000000000000000000000000000..bf8dfb8026a0f9a9cb87cc4085ed6d37e324f098
Binary files /dev/null and b/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063 differ
diff --git a/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063.info b/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063.info
new file mode 100644
index 0000000000000000000000000000000000000000..3edcafee67a54ae6a0bafa0c8ce898ad377f2696
Binary files /dev/null and b/Library/metadata/6b/6b46e8ffe448f084ab12938cb774d063.info differ
diff --git a/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71 b/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71
new file mode 100644
index 0000000000000000000000000000000000000000..cc382e4f33c9f03757d68f33cc6003996ade3828
Binary files /dev/null and b/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71 differ
diff --git a/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71.info b/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71.info
new file mode 100644
index 0000000000000000000000000000000000000000..0658e18c240555a231efa6ec8463890d4b047629
Binary files /dev/null and b/Library/metadata/6c/6c26251a3e1f5ac41afa5ffb404c5f71.info differ
diff --git a/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29 b/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29
new file mode 100644
index 0000000000000000000000000000000000000000..b0f318dcd62729031a29d879727019a96af3662f
Binary files /dev/null and b/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29 differ
diff --git a/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29.info b/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29.info
new file mode 100644
index 0000000000000000000000000000000000000000..c5a0c2eb0ebaa43b5875439c503d464d2594b102
Binary files /dev/null and b/Library/metadata/6c/6cef82e891a45884fb2b70604b0f8c29.info differ
diff --git a/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25 b/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25
new file mode 100644
index 0000000000000000000000000000000000000000..67878e7f165d47ecb59f638b42556097c1f052ee
Binary files /dev/null and b/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25 differ
diff --git a/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25.info b/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25.info
new file mode 100644
index 0000000000000000000000000000000000000000..2af0cc80d43d5d7045af40066c5041b65be87c5f
Binary files /dev/null and b/Library/metadata/71/711aad28b4057bd4783120e26ff2ee25.info differ
diff --git a/Library/metadata/72/729aad4491e915a41bda2b8325cf757a b/Library/metadata/72/729aad4491e915a41bda2b8325cf757a
new file mode 100644
index 0000000000000000000000000000000000000000..60dc5967f1c0a1ff3ffbc55e3fb2c90288b78eff
Binary files /dev/null and b/Library/metadata/72/729aad4491e915a41bda2b8325cf757a differ
diff --git a/Library/metadata/72/729aad4491e915a41bda2b8325cf757a.info b/Library/metadata/72/729aad4491e915a41bda2b8325cf757a.info
new file mode 100644
index 0000000000000000000000000000000000000000..b773e888b8e546f526a96cc983733038bc40b73a
Binary files /dev/null and b/Library/metadata/72/729aad4491e915a41bda2b8325cf757a.info differ
diff --git a/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f b/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f
new file mode 100644
index 0000000000000000000000000000000000000000..69ea7f7075ec9eb045539d513536eeb86bec1149
Binary files /dev/null and b/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f differ
diff --git a/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f.info b/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f.info
new file mode 100644
index 0000000000000000000000000000000000000000..6905b27ca685360406d242c38f0ccfcd35422b37
Binary files /dev/null and b/Library/metadata/72/72ece51f2901e7445ab60da3685d6b5f.info differ
diff --git a/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce b/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce
new file mode 100644
index 0000000000000000000000000000000000000000..b11de20017f1a21b249c88642f6accfb38274389
Binary files /dev/null and b/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce differ
diff --git a/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce.info b/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce.info
new file mode 100644
index 0000000000000000000000000000000000000000..4b6f114f228520733cfa871c554f854621fa39dd
Binary files /dev/null and b/Library/metadata/74/74d8c4d6e5d0338469ae46c13725f3ce.info differ
diff --git a/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca b/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca
new file mode 100644
index 0000000000000000000000000000000000000000..ad92523e54159d490e729dfe8de46de4d4e13dca
Binary files /dev/null and b/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca differ
diff --git a/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca.info b/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca.info
new file mode 100644
index 0000000000000000000000000000000000000000..5b24038b78b00ec3497b6fe2d88be6d8de20873a
Binary files /dev/null and b/Library/metadata/7c/7c5ef7f54d4edad3091faa533cfc49ca.info differ
diff --git a/Library/metadata/82/829e606f890b35c47aa29643517add2e b/Library/metadata/82/829e606f890b35c47aa29643517add2e
new file mode 100644
index 0000000000000000000000000000000000000000..088865168aa75fbe1dfc335e2d558e838bd9668a
Binary files /dev/null and b/Library/metadata/82/829e606f890b35c47aa29643517add2e differ
diff --git a/Library/metadata/82/829e606f890b35c47aa29643517add2e.info b/Library/metadata/82/829e606f890b35c47aa29643517add2e.info
new file mode 100644
index 0000000000000000000000000000000000000000..76e0581a07ba9c846eed1688e74796fdb6f2631c
Binary files /dev/null and b/Library/metadata/82/829e606f890b35c47aa29643517add2e.info differ
diff --git a/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f b/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f
new file mode 100644
index 0000000000000000000000000000000000000000..92f6de5afb0f75ae33fe8b53d060357af8eac984
Binary files /dev/null and b/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f differ
diff --git a/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f.info b/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f.info
new file mode 100644
index 0000000000000000000000000000000000000000..cdef5c6bee423ace8875353b77557983b0fc251c
Binary files /dev/null and b/Library/metadata/84/8473f1ceba63c2d01ac809d19f2f999f.info differ
diff --git a/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91 b/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91
new file mode 100644
index 0000000000000000000000000000000000000000..b6ea1750a9e03c4257411e288e9a6a2cdc51b890
Binary files /dev/null and b/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91 differ
diff --git a/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91.info b/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91.info
new file mode 100644
index 0000000000000000000000000000000000000000..4dfe82fc69568e6c30fbb242676a611526984dc5
Binary files /dev/null and b/Library/metadata/86/8608ec81ee27a15488d33f9dad239e91.info differ
diff --git a/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f b/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f
new file mode 100644
index 0000000000000000000000000000000000000000..5fd3b81ed3bddb391838a3dcf634a789f8d4f887
Binary files /dev/null and b/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f differ
diff --git a/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f.info b/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f.info
new file mode 100644
index 0000000000000000000000000000000000000000..d6bfc71d96b1009ac7975c852fd2ba8b4c2f25ea
Binary files /dev/null and b/Library/metadata/86/8656080a6ad58f046abadcd6f2c0fb4f.info differ
diff --git a/Library/metadata/87/8786806e37330e349b5885f2972851b6 b/Library/metadata/87/8786806e37330e349b5885f2972851b6
new file mode 100644
index 0000000000000000000000000000000000000000..ba8ac5974fbd16231dd7097d2a3dde71ade349fe
Binary files /dev/null and b/Library/metadata/87/8786806e37330e349b5885f2972851b6 differ
diff --git a/Library/metadata/87/8786806e37330e349b5885f2972851b6.info b/Library/metadata/87/8786806e37330e349b5885f2972851b6.info
new file mode 100644
index 0000000000000000000000000000000000000000..425a7a71c602f4436e718f87c3edafe194e9154a
Binary files /dev/null and b/Library/metadata/87/8786806e37330e349b5885f2972851b6.info differ
diff --git a/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a b/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a
new file mode 100644
index 0000000000000000000000000000000000000000..81a886c689e9d8d8b0dec158670390f15aaa0303
Binary files /dev/null and b/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a differ
diff --git a/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a.info b/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a.info
new file mode 100644
index 0000000000000000000000000000000000000000..53e0cabe30384e4c144dc73e283b0182ca26690f
Binary files /dev/null and b/Library/metadata/89/8986fa27e90db314d8a3359520e7fd1a.info differ
diff --git a/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753 b/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753
new file mode 100644
index 0000000000000000000000000000000000000000..a7afd476fb5592079e50563b998f321788cfa857
Binary files /dev/null and b/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753 differ
diff --git a/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753.info b/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753.info
new file mode 100644
index 0000000000000000000000000000000000000000..6d204d1341b90eece1a4b4633b1904c5190497d6
Binary files /dev/null and b/Library/metadata/8a/8ad60cb17f7694c43a8190c617281753.info differ
diff --git a/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d b/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d
new file mode 100644
index 0000000000000000000000000000000000000000..be7932f1a714ccf78a23019e844946a1bfb85837
Binary files /dev/null and b/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d differ
diff --git a/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d.info b/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d.info
new file mode 100644
index 0000000000000000000000000000000000000000..25aa58e905d22f8d24ce0447414d11127f4208a8
Binary files /dev/null and b/Library/metadata/8f/8f107aadf823af24889bc290a1cca90d.info differ
diff --git a/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb b/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb
new file mode 100644
index 0000000000000000000000000000000000000000..de2d3b9496f922aa54116a866bc2deb925b34c2e
Binary files /dev/null and b/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb differ
diff --git a/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb.info b/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb.info
new file mode 100644
index 0000000000000000000000000000000000000000..7aabb02fa2d50b7234e34478705d34a30f683add
Binary files /dev/null and b/Library/metadata/8f/8ff71e4494488a1a7802eb0bc10abbfb.info differ
diff --git a/Library/metadata/90/90fb794a295e73545af71bcdb7375791 b/Library/metadata/90/90fb794a295e73545af71bcdb7375791
new file mode 100644
index 0000000000000000000000000000000000000000..332df65d836d85ac9d4b2ff46139ca252e10a948
Binary files /dev/null and b/Library/metadata/90/90fb794a295e73545af71bcdb7375791 differ
diff --git a/Library/metadata/90/90fb794a295e73545af71bcdb7375791.info b/Library/metadata/90/90fb794a295e73545af71bcdb7375791.info
new file mode 100644
index 0000000000000000000000000000000000000000..891669648e7af702d327de48b9d668871c1ce871
Binary files /dev/null and b/Library/metadata/90/90fb794a295e73545af71bcdb7375791.info differ
diff --git a/Library/metadata/93/934e82a10e8463078961789d3301417f b/Library/metadata/93/934e82a10e8463078961789d3301417f
new file mode 100644
index 0000000000000000000000000000000000000000..d308f5ac24ecdc918f906c8cb5225ccccb6f9c8d
Binary files /dev/null and b/Library/metadata/93/934e82a10e8463078961789d3301417f differ
diff --git a/Library/metadata/93/934e82a10e8463078961789d3301417f.info b/Library/metadata/93/934e82a10e8463078961789d3301417f.info
new file mode 100644
index 0000000000000000000000000000000000000000..4e42f783a4d0b6ce828e2ab13c442931d1951c0f
Binary files /dev/null and b/Library/metadata/93/934e82a10e8463078961789d3301417f.info differ
diff --git a/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f b/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f
new file mode 100644
index 0000000000000000000000000000000000000000..0579a0f81ab8e0cc6d18019a7f83c687c7193663
Binary files /dev/null and b/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f differ
diff --git a/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f.info b/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f.info
new file mode 100644
index 0000000000000000000000000000000000000000..978403eefa8be99f874cb6921ecfbfa0154d1a1f
Binary files /dev/null and b/Library/metadata/93/9384ab8608cdc3d479fe89cd51eed48f.info differ
diff --git a/Library/metadata/94/940e1f5ebd555e802afc17091e515459 b/Library/metadata/94/940e1f5ebd555e802afc17091e515459
new file mode 100644
index 0000000000000000000000000000000000000000..f1476f5a2a694423a53cbe995b5b035b895ddeaa
Binary files /dev/null and b/Library/metadata/94/940e1f5ebd555e802afc17091e515459 differ
diff --git a/Library/metadata/94/940e1f5ebd555e802afc17091e515459.info b/Library/metadata/94/940e1f5ebd555e802afc17091e515459.info
new file mode 100644
index 0000000000000000000000000000000000000000..b5b8b0ea6381d8ca6baf92be9c546a1aa3d2db88
Binary files /dev/null and b/Library/metadata/94/940e1f5ebd555e802afc17091e515459.info differ
diff --git a/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a b/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a
new file mode 100644
index 0000000000000000000000000000000000000000..50999768c2359a275e92f6705a0de0bba653324a
Binary files /dev/null and b/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a differ
diff --git a/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a.info b/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a.info
new file mode 100644
index 0000000000000000000000000000000000000000..25825b0d3365354c5be56d0d194832c671e8b972
Binary files /dev/null and b/Library/metadata/94/94f3a07cf39a9f317be6d875b54dd56a.info differ
diff --git a/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a b/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a
new file mode 100644
index 0000000000000000000000000000000000000000..7141dc698f0441478a5feeeb23be8779267bc9da
Binary files /dev/null and b/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a differ
diff --git a/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a.info b/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a.info
new file mode 100644
index 0000000000000000000000000000000000000000..0e73a20c47400b7393231c7999140733f3b55dd2
Binary files /dev/null and b/Library/metadata/96/961772e8b1d75dd4a915fb8a236d5a8a.info differ
diff --git a/Library/metadata/97/97b73382799481021af9ea46fd49fcf8 b/Library/metadata/97/97b73382799481021af9ea46fd49fcf8
new file mode 100644
index 0000000000000000000000000000000000000000..5c14f883f5bfe0d183bb9023ba634a87a77efd01
Binary files /dev/null and b/Library/metadata/97/97b73382799481021af9ea46fd49fcf8 differ
diff --git a/Library/metadata/97/97b73382799481021af9ea46fd49fcf8.info b/Library/metadata/97/97b73382799481021af9ea46fd49fcf8.info
new file mode 100644
index 0000000000000000000000000000000000000000..5117ef2a1ea2528ed40ecf884729068f54c572c8
Binary files /dev/null and b/Library/metadata/97/97b73382799481021af9ea46fd49fcf8.info differ
diff --git a/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c b/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c
new file mode 100644
index 0000000000000000000000000000000000000000..fee2b630f7f5af5236c3a8760e55052e50828006
Binary files /dev/null and b/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c differ
diff --git a/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c.info b/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c.info
new file mode 100644
index 0000000000000000000000000000000000000000..b65fa271bcf37a2f9877f6015a654967929c4cbf
Binary files /dev/null and b/Library/metadata/99/99a9c787e5d1bbf48a389834c4a9641c.info differ
diff --git a/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6 b/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6
new file mode 100644
index 0000000000000000000000000000000000000000..abd51b251029852133737b3f56ecd226a0e64052
Binary files /dev/null and b/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6 differ
diff --git a/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6.info b/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6.info
new file mode 100644
index 0000000000000000000000000000000000000000..8f308ec712f2d935998e050addb9d1021c45d7fc
Binary files /dev/null and b/Library/metadata/99/99ab3e8b62cb69145b760fc81e2d18d6.info differ
diff --git a/Library/metadata/9a/9a53087ba28aaf145a184ea363108831 b/Library/metadata/9a/9a53087ba28aaf145a184ea363108831
new file mode 100644
index 0000000000000000000000000000000000000000..9a27700a0af452c577e265c740359c9326b1233f
Binary files /dev/null and b/Library/metadata/9a/9a53087ba28aaf145a184ea363108831 differ
diff --git a/Library/metadata/9a/9a53087ba28aaf145a184ea363108831.info b/Library/metadata/9a/9a53087ba28aaf145a184ea363108831.info
new file mode 100644
index 0000000000000000000000000000000000000000..072ee8b4e7cd699b03737913162595b730c099b1
Binary files /dev/null and b/Library/metadata/9a/9a53087ba28aaf145a184ea363108831.info differ
diff --git a/Library/metadata/9c/9c644b247df49ee47957d373411a85c3 b/Library/metadata/9c/9c644b247df49ee47957d373411a85c3
new file mode 100644
index 0000000000000000000000000000000000000000..511c2834c1b65677a002e087ddcae1cc0f73ce67
Binary files /dev/null and b/Library/metadata/9c/9c644b247df49ee47957d373411a85c3 differ
diff --git a/Library/metadata/9c/9c644b247df49ee47957d373411a85c3.info b/Library/metadata/9c/9c644b247df49ee47957d373411a85c3.info
new file mode 100644
index 0000000000000000000000000000000000000000..cda539072206e779f1b347192a6dc9a5cf99cc3d
Binary files /dev/null and b/Library/metadata/9c/9c644b247df49ee47957d373411a85c3.info differ
diff --git a/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31 b/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31
new file mode 100644
index 0000000000000000000000000000000000000000..033679ce7218695632fadebfd5335015ad216f95
Binary files /dev/null and b/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31 differ
diff --git a/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31.info b/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31.info
new file mode 100644
index 0000000000000000000000000000000000000000..b00108f4c6d9f70d76bcdb2fffbb649d654974bf
Binary files /dev/null and b/Library/metadata/9c/9ce16cd7e31794b48b2843381cd87d31.info differ
diff --git a/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c b/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c
new file mode 100644
index 0000000000000000000000000000000000000000..25f83a4c66084778e5636089aef4a0af91cd0096
Binary files /dev/null and b/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c differ
diff --git a/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c.info b/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c.info
new file mode 100644
index 0000000000000000000000000000000000000000..2ffde6eb0484e613309a8a7acf19bcb3fe4680e6
Binary files /dev/null and b/Library/metadata/9d/9d5b46a4a3526d14080bfc4bb247664c.info differ
diff --git a/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94 b/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94
new file mode 100644
index 0000000000000000000000000000000000000000..52cbb66c3a3f997117ce8be6b1bc221dd9faf96c
Binary files /dev/null and b/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94 differ
diff --git a/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94.info b/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94.info
new file mode 100644
index 0000000000000000000000000000000000000000..2f8466f3266e1b1011df58aa10e1346d385ede4c
Binary files /dev/null and b/Library/metadata/9f/9f96161bfc85a364aac3baa0b7279f94.info differ
diff --git a/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904 b/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904
new file mode 100644
index 0000000000000000000000000000000000000000..9113e2deb94be4354b7828c51ddabfe9cedeb049
Binary files /dev/null and b/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904 differ
diff --git a/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904.info b/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904.info
new file mode 100644
index 0000000000000000000000000000000000000000..b1614458582fe41b284e763aeedb270aa44d8cb8
Binary files /dev/null and b/Library/metadata/a2/a200b19ca1a9685429ed7e043c28e904.info differ
diff --git a/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80 b/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80
new file mode 100644
index 0000000000000000000000000000000000000000..44afa3644bfa6e86a393920e2782dd94a8cb2f38
Binary files /dev/null and b/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80 differ
diff --git a/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80.info b/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80.info
new file mode 100644
index 0000000000000000000000000000000000000000..ad69c986fbf652821d534668c748880745e2527c
Binary files /dev/null and b/Library/metadata/a2/a2fba25a5cd15594e8f050a11e386c80.info differ
diff --git a/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666 b/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666
new file mode 100644
index 0000000000000000000000000000000000000000..a28c2f66b6ad8dc9b7a9c6aef28cc210c4b084f8
Binary files /dev/null and b/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666 differ
diff --git a/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666.info b/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666.info
new file mode 100644
index 0000000000000000000000000000000000000000..df1cdb1026c50a8fef6dafec2e4a35279cee996d
Binary files /dev/null and b/Library/metadata/a3/a3dacaec0287d7444b4bd276816e1666.info differ
diff --git a/Library/metadata/a4/a4c41ac9245b87c4192012080077d830 b/Library/metadata/a4/a4c41ac9245b87c4192012080077d830
new file mode 100644
index 0000000000000000000000000000000000000000..6edf56382f7f6a1c8a43ad22799b0c98cb547298
Binary files /dev/null and b/Library/metadata/a4/a4c41ac9245b87c4192012080077d830 differ
diff --git a/Library/metadata/a4/a4c41ac9245b87c4192012080077d830.info b/Library/metadata/a4/a4c41ac9245b87c4192012080077d830.info
new file mode 100644
index 0000000000000000000000000000000000000000..aaa9ad628e161f508ec09b80f12161af0d89523a
Binary files /dev/null and b/Library/metadata/a4/a4c41ac9245b87c4192012080077d830.info differ
diff --git a/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7 b/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7
new file mode 100644
index 0000000000000000000000000000000000000000..1021a8241f95b3f097cb4ca94ec6af201073206c
Binary files /dev/null and b/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7 differ
diff --git a/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7.info b/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7.info
new file mode 100644
index 0000000000000000000000000000000000000000..29e90c08bd3b5aae0868c64c02ef920c656bcf22
Binary files /dev/null and b/Library/metadata/a6/a60d9407e2bb20e4ea00281b1e33eae7.info differ
diff --git a/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f b/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f
new file mode 100644
index 0000000000000000000000000000000000000000..39869ee5855a639c819cb35ce717f2e19c147a4a
Binary files /dev/null and b/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f differ
diff --git a/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f.info b/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f.info
new file mode 100644
index 0000000000000000000000000000000000000000..50d8bbcd66c1819f7ba7aa4853bc4d1a017308e6
Binary files /dev/null and b/Library/metadata/a6/a63f9f2267c36684e855add13ad5499f.info differ
diff --git a/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d b/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d
new file mode 100644
index 0000000000000000000000000000000000000000..9b61fbb5135d422fc990540a533ef48958913195
Binary files /dev/null and b/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d differ
diff --git a/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d.info b/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d.info
new file mode 100644
index 0000000000000000000000000000000000000000..809a6fd7a628a41733fdead803459fb8a283611e
Binary files /dev/null and b/Library/metadata/a7/a73149a4b6c41d741bc5e4e3b7711c0d.info differ
diff --git a/Library/metadata/ac/ac0b09e7857660247b1477e93731de29 b/Library/metadata/ac/ac0b09e7857660247b1477e93731de29
new file mode 100644
index 0000000000000000000000000000000000000000..122bea74bfea97e585eef793a2c7bc820a88bbeb
Binary files /dev/null and b/Library/metadata/ac/ac0b09e7857660247b1477e93731de29 differ
diff --git a/Library/metadata/ac/ac0b09e7857660247b1477e93731de29.info b/Library/metadata/ac/ac0b09e7857660247b1477e93731de29.info
new file mode 100644
index 0000000000000000000000000000000000000000..bdd10afd13f57bbd3521bd23556ba8d671a165ec
Binary files /dev/null and b/Library/metadata/ac/ac0b09e7857660247b1477e93731de29.info differ
diff --git a/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa b/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa
new file mode 100644
index 0000000000000000000000000000000000000000..e2a5734a2f48ee65f6497fb61ceabf972ebe0e3d
Binary files /dev/null and b/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa differ
diff --git a/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa.info b/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa.info
new file mode 100644
index 0000000000000000000000000000000000000000..fb61aaa78b460b48bc1a1b3afb1633d159bf676f
Binary files /dev/null and b/Library/metadata/ac/aceb1a3f85f55c249bba6eaade29f2aa.info differ
diff --git a/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112 b/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112
new file mode 100644
index 0000000000000000000000000000000000000000..e0417193c59e3d0129935a52315020df9d6d351d
Binary files /dev/null and b/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112 differ
diff --git a/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112.info b/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112.info
new file mode 100644
index 0000000000000000000000000000000000000000..1aa294b9dadb657713cb9a764536b7de34d2e121
Binary files /dev/null and b/Library/metadata/b2/b241f91b9ccf8ff489abf204b30d3112.info differ
diff --git a/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc b/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc
new file mode 100644
index 0000000000000000000000000000000000000000..c483ada6e3b008f141cff731b1c60e3b7e26d6f3
Binary files /dev/null and b/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc differ
diff --git a/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc.info b/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc.info
new file mode 100644
index 0000000000000000000000000000000000000000..0548a0524d9ee1beeeda13638c0011322f9cac79
Binary files /dev/null and b/Library/metadata/b2/b2f73bdc979030e419f33c10913639cc.info differ
diff --git a/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b b/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b
new file mode 100644
index 0000000000000000000000000000000000000000..58150404734906bc3476ce10f12fd2693fd0a485
Binary files /dev/null and b/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b differ
diff --git a/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b.info b/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b.info
new file mode 100644
index 0000000000000000000000000000000000000000..90e68585b61c200577ae39b20c52d5d1814225ed
Binary files /dev/null and b/Library/metadata/b7/b7f59e54f2bfd184b9dd451a678d089b.info differ
diff --git a/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc b/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc
new file mode 100644
index 0000000000000000000000000000000000000000..9505ec457d052d5a2abbb9739fe37079b1462ed2
Binary files /dev/null and b/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc differ
diff --git a/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc.info b/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc.info
new file mode 100644
index 0000000000000000000000000000000000000000..80910d989406411c7e272c70ec76d7ac72d45e81
Binary files /dev/null and b/Library/metadata/ba/ba59c38a116ff2f4fb69f825ba0da3bc.info differ
diff --git a/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516 b/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516
new file mode 100644
index 0000000000000000000000000000000000000000..648541131bddd33eb968e0cba846a80d33c91b96
Binary files /dev/null and b/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516 differ
diff --git a/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516.info b/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516.info
new file mode 100644
index 0000000000000000000000000000000000000000..b0a9510f1d343ce5bea23acc3e7ef6c945e291ce
Binary files /dev/null and b/Library/metadata/ba/ba8ca52498573cb76b94e65e6338a516.info differ
diff --git a/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2 b/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2
new file mode 100644
index 0000000000000000000000000000000000000000..5f9f0d3f773232c5a26d4aefde0c5ccdfdc79859
Binary files /dev/null and b/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2 differ
diff --git a/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2.info b/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2.info
new file mode 100644
index 0000000000000000000000000000000000000000..20d2108a7bb2429736bf13a7655db4bb96e44916
Binary files /dev/null and b/Library/metadata/bd/bd64b24e9a338132884cf642b9beded2.info differ
diff --git a/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d b/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d
new file mode 100644
index 0000000000000000000000000000000000000000..972b4883ec092f0fa745c1b09b9c703b6f506d47
Binary files /dev/null and b/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d differ
diff --git a/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d.info b/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d.info
new file mode 100644
index 0000000000000000000000000000000000000000..32f986304f733e1c5226f1a795a27b0b44dd4c82
Binary files /dev/null and b/Library/metadata/bf/bf34fbe7a6e71634493d770ed0031f9d.info differ
diff --git a/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c b/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c
new file mode 100644
index 0000000000000000000000000000000000000000..46779bfb21ed06e6725995279a6703c842068695
Binary files /dev/null and b/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c differ
diff --git a/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c.info b/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c.info
new file mode 100644
index 0000000000000000000000000000000000000000..db1c2d3dedf1596cdf3787f1af24084fe43f81a4
Binary files /dev/null and b/Library/metadata/c2/c2a918f460a69394eb9726b31e1d404c.info differ
diff --git a/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd b/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd
new file mode 100644
index 0000000000000000000000000000000000000000..2a022734c47dd33ac45a047b716ff706249811b0
Binary files /dev/null and b/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd differ
diff --git a/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd.info b/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd.info
new file mode 100644
index 0000000000000000000000000000000000000000..d0ca6d583925ff93976c0f78ca5700010074b9d0
Binary files /dev/null and b/Library/metadata/c5/c5da6ce9225f948438f7d6a072499ecd.info differ
diff --git a/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602 b/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602
new file mode 100644
index 0000000000000000000000000000000000000000..928730569e8f939ed57de544d62968b20596de15
Binary files /dev/null and b/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602 differ
diff --git a/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602.info b/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602.info
new file mode 100644
index 0000000000000000000000000000000000000000..297c42894cb14854c783a8c00177bd30d3f413ef
Binary files /dev/null and b/Library/metadata/c6/c6ae48a0771f1c840a7525eda8db3602.info differ
diff --git a/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8 b/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8
new file mode 100644
index 0000000000000000000000000000000000000000..6ace965d8b54d70172798efae5af261ba8d4a5b3
Binary files /dev/null and b/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8 differ
diff --git a/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8.info b/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8.info
new file mode 100644
index 0000000000000000000000000000000000000000..54a6d24c05926ae43e662380d65d1d23abc5f62e
Binary files /dev/null and b/Library/metadata/c7/c7d73314dfe49f8458398c6dc8edcda8.info differ
diff --git a/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6 b/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6
new file mode 100644
index 0000000000000000000000000000000000000000..597c4460cccddb8e7cf8afca33b9d5e5a730fb92
Binary files /dev/null and b/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6 differ
diff --git a/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6.info b/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6.info
new file mode 100644
index 0000000000000000000000000000000000000000..671e50ee0205233849e0c1a1b5cbcd7153f00823
Binary files /dev/null and b/Library/metadata/c8/c88d2a04cc828c044b0fcc133fd481e6.info differ
diff --git a/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065 b/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065
new file mode 100644
index 0000000000000000000000000000000000000000..3ac774298f2da4348d66dbd6c301d63435cd7e6a
Binary files /dev/null and b/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065 differ
diff --git a/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065.info b/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065.info
new file mode 100644
index 0000000000000000000000000000000000000000..3d6fc27c2447bcae172caf0751e69b9d4bbe597a
Binary files /dev/null and b/Library/metadata/ca/ca058052cfb44474dbd1f8ec45658065.info differ
diff --git a/Library/metadata/ca/ca2168befea188b41a64ed01e777e286 b/Library/metadata/ca/ca2168befea188b41a64ed01e777e286
new file mode 100644
index 0000000000000000000000000000000000000000..a6e468779856be6d2d58298c254c81ef49d9d5c6
Binary files /dev/null and b/Library/metadata/ca/ca2168befea188b41a64ed01e777e286 differ
diff --git a/Library/metadata/ca/ca2168befea188b41a64ed01e777e286.info b/Library/metadata/ca/ca2168befea188b41a64ed01e777e286.info
new file mode 100644
index 0000000000000000000000000000000000000000..44529b8c9987af59a9719e16882e835ea4fdc55a
Binary files /dev/null and b/Library/metadata/ca/ca2168befea188b41a64ed01e777e286.info differ
diff --git a/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7 b/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7
new file mode 100644
index 0000000000000000000000000000000000000000..13b9a76aa88de634a34db10061ce5b34cd82c6bc
Binary files /dev/null and b/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7 differ
diff --git a/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7.info b/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7.info
new file mode 100644
index 0000000000000000000000000000000000000000..dfc5a5608ed27342a5f6d7b60aca62c5855f7f02
Binary files /dev/null and b/Library/metadata/ca/ca8847a89493c0737857ccd5e4eeadd7.info differ
diff --git a/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919 b/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919
new file mode 100644
index 0000000000000000000000000000000000000000..53ec97afeba9d83e52f1628b76134cb3b89e299f
Binary files /dev/null and b/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919 differ
diff --git a/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919.info b/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919.info
new file mode 100644
index 0000000000000000000000000000000000000000..9fbf457f9419f2679a9e2162b74c1fee59016094
Binary files /dev/null and b/Library/metadata/d0/d093acf2bada69e4bbbcf0a8b4534919.info differ
diff --git a/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c b/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c
new file mode 100644
index 0000000000000000000000000000000000000000..4517a9628b3a72250482f5cfa315b63c8b988745
Binary files /dev/null and b/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c differ
diff --git a/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c.info b/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c.info
new file mode 100644
index 0000000000000000000000000000000000000000..1529571263a8aa6cd44bd045a30c52b8ff3076a3
Binary files /dev/null and b/Library/metadata/d3/d30409ab90458e5409807c8b0274ac9c.info differ
diff --git a/Library/metadata/d4/d4a408a1b506d0046875061c677944d8 b/Library/metadata/d4/d4a408a1b506d0046875061c677944d8
new file mode 100644
index 0000000000000000000000000000000000000000..f792bd2750217dcff4334a4e86a8ad85a9c24638
Binary files /dev/null and b/Library/metadata/d4/d4a408a1b506d0046875061c677944d8 differ
diff --git a/Library/metadata/d4/d4a408a1b506d0046875061c677944d8.info b/Library/metadata/d4/d4a408a1b506d0046875061c677944d8.info
new file mode 100644
index 0000000000000000000000000000000000000000..30cd234a4c802549dc899106c5bdfe7db46d0d76
Binary files /dev/null and b/Library/metadata/d4/d4a408a1b506d0046875061c677944d8.info differ
diff --git a/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9 b/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9
new file mode 100644
index 0000000000000000000000000000000000000000..800991e964852b696650e488a86173798424df89
Binary files /dev/null and b/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9 differ
diff --git a/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9.info b/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9.info
new file mode 100644
index 0000000000000000000000000000000000000000..64f1b2e9993ac64d506809405686e8119c93914d
Binary files /dev/null and b/Library/metadata/d6/d62f748f5292bb343be9e6b0c84416d9.info differ
diff --git a/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c b/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c
new file mode 100644
index 0000000000000000000000000000000000000000..1d23ba52aa8ea431bf5347289f738155704aa64f
Binary files /dev/null and b/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c differ
diff --git a/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c.info b/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c.info
new file mode 100644
index 0000000000000000000000000000000000000000..6b84ce9b140d4776418a98f46ba7465e7b604e5e
Binary files /dev/null and b/Library/metadata/d8/d8623b6a09cb5ab4ea2c51347a3a074c.info differ
diff --git a/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55 b/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55
new file mode 100644
index 0000000000000000000000000000000000000000..964c06d8ef453a02e5e5e38c9fff436d8db8b03f
Binary files /dev/null and b/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55 differ
diff --git a/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55.info b/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55.info
new file mode 100644
index 0000000000000000000000000000000000000000..22aace79b936d4a522deb7c2c55e06a77cb0d89b
Binary files /dev/null and b/Library/metadata/d9/d9ca844c06be1ab40a3f7fc9e3c42c55.info differ
diff --git a/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7 b/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7
new file mode 100644
index 0000000000000000000000000000000000000000..6aa839f8f0ed2c60309ea899013bf9a55234445b
Binary files /dev/null and b/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7 differ
diff --git a/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7.info b/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7.info
new file mode 100644
index 0000000000000000000000000000000000000000..6535eac45eca5ce52c5458f3e495875e21de537c
Binary files /dev/null and b/Library/metadata/de/debc36b20bd3f2ebfb8a0444e8bd4ed7.info differ
diff --git a/Library/metadata/de/dec69862942cc9744ade63216979cafd b/Library/metadata/de/dec69862942cc9744ade63216979cafd
new file mode 100644
index 0000000000000000000000000000000000000000..3766ea0dd2d571a53c46d6688060f231036d5a49
Binary files /dev/null and b/Library/metadata/de/dec69862942cc9744ade63216979cafd differ
diff --git a/Library/metadata/de/dec69862942cc9744ade63216979cafd.info b/Library/metadata/de/dec69862942cc9744ade63216979cafd.info
new file mode 100644
index 0000000000000000000000000000000000000000..3bab0b57cb51eef843f2a9a7408e78f25d37a5e4
Binary files /dev/null and b/Library/metadata/de/dec69862942cc9744ade63216979cafd.info differ
diff --git a/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb b/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb
new file mode 100644
index 0000000000000000000000000000000000000000..fb333666d434ba981cb02a62948b7f3c77b4cdea
Binary files /dev/null and b/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb differ
diff --git a/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb.info b/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb.info
new file mode 100644
index 0000000000000000000000000000000000000000..9ff6858986341b816b5660b2e8d9b8cd52728d5a
Binary files /dev/null and b/Library/metadata/e4/e44b92e217bfdf24d99acb4344918eeb.info differ
diff --git a/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2 b/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2
new file mode 100644
index 0000000000000000000000000000000000000000..6135e273ece479b1d8b1d5f8b8dc96d53e88f280
Binary files /dev/null and b/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2 differ
diff --git a/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2.info b/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2.info
new file mode 100644
index 0000000000000000000000000000000000000000..50f23b72d14a9284db7323d10de11d08307bd040
Binary files /dev/null and b/Library/metadata/e4/e470c2ed2957ae0abb8f2e14bb0d29c2.info differ
diff --git a/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f b/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f
new file mode 100644
index 0000000000000000000000000000000000000000..6f3dd57ce0056abe7154a708291a16d6e20aaf01
Binary files /dev/null and b/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f differ
diff --git a/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f.info b/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f.info
new file mode 100644
index 0000000000000000000000000000000000000000..592be9da6dfafdd2e2edd292ce0e9609241627f5
Binary files /dev/null and b/Library/metadata/e5/e501d18bb52cf8c40b1853ca4904654f.info differ
diff --git a/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39 b/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39
new file mode 100644
index 0000000000000000000000000000000000000000..78322ae74246f181fc01ba9e47c072f0e7a7875c
Binary files /dev/null and b/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39 differ
diff --git a/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39.info b/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39.info
new file mode 100644
index 0000000000000000000000000000000000000000..a068264375df26e5f58a638264971d8232a95226
Binary files /dev/null and b/Library/metadata/e5/e54b95371574a3144b851b0ca93ceb39.info differ
diff --git a/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731 b/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731
new file mode 100644
index 0000000000000000000000000000000000000000..b0785a94c77041403b2d1fcdbda19b106b8ce9db
Binary files /dev/null and b/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731 differ
diff --git a/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731.info b/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731.info
new file mode 100644
index 0000000000000000000000000000000000000000..cceee1a67a7f679ebedf382e16bc989496457dbe
Binary files /dev/null and b/Library/metadata/e5/e5eb80d8e62d9d145bb50fb783c0f731.info differ
diff --git a/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2 b/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2
new file mode 100644
index 0000000000000000000000000000000000000000..10a076a1bab17ade26644f9f7ea1a8080989281b
Binary files /dev/null and b/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2 differ
diff --git a/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2.info b/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2.info
new file mode 100644
index 0000000000000000000000000000000000000000..f24e686cfce9150e30c9f8ee2ff898f213297f97
Binary files /dev/null and b/Library/metadata/e8/e8413e2c94231d544b120f2b71d432e2.info differ
diff --git a/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7 b/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7
new file mode 100644
index 0000000000000000000000000000000000000000..f56cc32b6fc9033a3a5f3a0dfa259b6ec12d873a
Binary files /dev/null and b/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7 differ
diff --git a/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7.info b/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7.info
new file mode 100644
index 0000000000000000000000000000000000000000..566d6b028784f89e2fd447af8c613907a4bc246d
Binary files /dev/null and b/Library/metadata/eb/eb68ab9c964640e2d80dcd592a73f8e7.info differ
diff --git a/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342 b/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342
new file mode 100644
index 0000000000000000000000000000000000000000..0226cfc2688b6a19b1ade5939b3194468f2b60bc
Binary files /dev/null and b/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342 differ
diff --git a/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342.info b/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342.info
new file mode 100644
index 0000000000000000000000000000000000000000..31aa3d00dccc487dc3dc8dc1cdd4628250d1b920
Binary files /dev/null and b/Library/metadata/eb/eb8e037cb3f873743a725427c8c22342.info differ
diff --git a/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31 b/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31
new file mode 100644
index 0000000000000000000000000000000000000000..8bfcb2714d5744ea24563e6a6d5ea6b918b63338
Binary files /dev/null and b/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31 differ
diff --git a/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31.info b/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31.info
new file mode 100644
index 0000000000000000000000000000000000000000..21a99c28025af7f0f642b453bb741d026bc48abf
Binary files /dev/null and b/Library/metadata/ed/ed3efd28525441947b55ec9b5d68ba31.info differ
diff --git a/Library/metadata/ee/ee42f1964a0e8224c90be81905946699 b/Library/metadata/ee/ee42f1964a0e8224c90be81905946699
new file mode 100644
index 0000000000000000000000000000000000000000..d57df7d7a865d5ce798c04892970edab38660ff2
Binary files /dev/null and b/Library/metadata/ee/ee42f1964a0e8224c90be81905946699 differ
diff --git a/Library/metadata/ee/ee42f1964a0e8224c90be81905946699.info b/Library/metadata/ee/ee42f1964a0e8224c90be81905946699.info
new file mode 100644
index 0000000000000000000000000000000000000000..21f663d4ad7984d653630daf715ed612d18bbfe9
Binary files /dev/null and b/Library/metadata/ee/ee42f1964a0e8224c90be81905946699.info differ
diff --git a/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542 b/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542
new file mode 100644
index 0000000000000000000000000000000000000000..7feaf3e1f5ce8742c6608a713f3caf152ef2521a
Binary files /dev/null and b/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542 differ
diff --git a/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542.info b/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542.info
new file mode 100644
index 0000000000000000000000000000000000000000..ee6a80c7ee045e7b8550505754c463323c875353
Binary files /dev/null and b/Library/metadata/f0/f017eeef0145589348b6ac65eba3e542.info differ
diff --git a/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0 b/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0
new file mode 100644
index 0000000000000000000000000000000000000000..75a1cdd987617b4ca04b7f14487c2a1a01b00f9e
Binary files /dev/null and b/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0 differ
diff --git a/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0.info b/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0.info
new file mode 100644
index 0000000000000000000000000000000000000000..0b279d1231b5e3feb03da4954e10c8350ce23142
Binary files /dev/null and b/Library/metadata/f1/f15624949ca514549b2f04481b49bdd0.info differ
diff --git a/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09 b/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09
new file mode 100644
index 0000000000000000000000000000000000000000..034b16e155bc8b4916be99c33b59a22dd811032a
Binary files /dev/null and b/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09 differ
diff --git a/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09.info b/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09.info
new file mode 100644
index 0000000000000000000000000000000000000000..926621ea9b782e459438563362fd596f90296aa8
Binary files /dev/null and b/Library/metadata/f2/f24a4388d07ef494e8516cb859803e09.info differ
diff --git a/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a b/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a
new file mode 100644
index 0000000000000000000000000000000000000000..75b5b6b5d7ea96e667a8ac125f3ed387eef57548
Binary files /dev/null and b/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a differ
diff --git a/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a.info b/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a.info
new file mode 100644
index 0000000000000000000000000000000000000000..5c7bae79fbc4a1eeb8a8c580a01c38f04b423a67
Binary files /dev/null and b/Library/metadata/f2/f2afec556bffd168fa321c6e694a7d0a.info differ
diff --git a/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc b/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc
new file mode 100644
index 0000000000000000000000000000000000000000..22d697751e2e4d998efe63f22fe7054d5b00c384
Binary files /dev/null and b/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc differ
diff --git a/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc.info b/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc.info
new file mode 100644
index 0000000000000000000000000000000000000000..497b0681dc40810725a742265423fa85b114baeb
Binary files /dev/null and b/Library/metadata/f3/f34e35dc1dc67c54c841b728548d69cc.info differ
diff --git a/Library/metadata/f4/f4044717213e31446939f7bd49c896ea b/Library/metadata/f4/f4044717213e31446939f7bd49c896ea
new file mode 100644
index 0000000000000000000000000000000000000000..2ed083d6e4b27cc03f83760cbeea02c908f7c539
Binary files /dev/null and b/Library/metadata/f4/f4044717213e31446939f7bd49c896ea differ
diff --git a/Library/metadata/f4/f4044717213e31446939f7bd49c896ea.info b/Library/metadata/f4/f4044717213e31446939f7bd49c896ea.info
new file mode 100644
index 0000000000000000000000000000000000000000..d141898dcb70895785445f868fbbecca2a6e4797
Binary files /dev/null and b/Library/metadata/f4/f4044717213e31446939f7bd49c896ea.info differ
diff --git a/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93 b/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93
new file mode 100644
index 0000000000000000000000000000000000000000..aa7d7c46a6bbf7f1786e6cfc2cacff7b7e486ee3
Binary files /dev/null and b/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93 differ
diff --git a/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93.info b/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93.info
new file mode 100644
index 0000000000000000000000000000000000000000..f50ba6988e9d3c069c99b43f89a25590f37c151f
Binary files /dev/null and b/Library/metadata/f4/f497b01325ac7a041bd6e365a9ea0e93.info differ
diff --git a/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b b/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b
new file mode 100644
index 0000000000000000000000000000000000000000..43aa841533a52f8101f0931cd2e7934e83278519
Binary files /dev/null and b/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b differ
diff --git a/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b.info b/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b.info
new file mode 100644
index 0000000000000000000000000000000000000000..7ac487506b9dab92f1c2ba4d049ed9b59effbae7
Binary files /dev/null and b/Library/metadata/f6/f6542fc5402b30a4482cd20a3621602b.info differ
diff --git a/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999 b/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999
new file mode 100644
index 0000000000000000000000000000000000000000..97636ff2b35f787661f83c4dba071b1e7fa58fbe
Binary files /dev/null and b/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999 differ
diff --git a/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999.info b/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999.info
new file mode 100644
index 0000000000000000000000000000000000000000..0fcda1b9982dc5767023e432d4fba824cdee7b9a
Binary files /dev/null and b/Library/metadata/f9/f9b1c2f36ac2bafeead53c9fd8f4c999.info differ
diff --git a/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b b/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b
new file mode 100644
index 0000000000000000000000000000000000000000..ebfd2a827192480236d55b41d974951c8b970461
Binary files /dev/null and b/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b differ
diff --git a/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b.info b/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b.info
new file mode 100644
index 0000000000000000000000000000000000000000..bacebb5f4a91d567e3139e67e6f9467883a9c1db
Binary files /dev/null and b/Library/metadata/f9/f9e81eceaa4926345af2955aff7cf00b.info differ
diff --git a/Library/metadata/fa/fa7155796051b734daa718462081dc5f b/Library/metadata/fa/fa7155796051b734daa718462081dc5f
new file mode 100644
index 0000000000000000000000000000000000000000..581561ea6ce9dddf0e59fb3362f4a542ce097e02
Binary files /dev/null and b/Library/metadata/fa/fa7155796051b734daa718462081dc5f differ
diff --git a/Library/metadata/fa/fa7155796051b734daa718462081dc5f.info b/Library/metadata/fa/fa7155796051b734daa718462081dc5f.info
new file mode 100644
index 0000000000000000000000000000000000000000..b747edde38d98ca152e2c2946748c7f4ccc94265
Binary files /dev/null and b/Library/metadata/fa/fa7155796051b734daa718462081dc5f.info differ
diff --git a/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e b/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e
new file mode 100644
index 0000000000000000000000000000000000000000..6958e8333435d912c13900783ab09ae4d99354cb
Binary files /dev/null and b/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e differ
diff --git a/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e.info b/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e.info
new file mode 100644
index 0000000000000000000000000000000000000000..8b0cce917ca575bfa06d66873829a7fcfc0c6f1f
Binary files /dev/null and b/Library/metadata/fc/fca2bf25139920d4f9bf86711457992e.info differ
diff --git a/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7 b/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7
new file mode 100644
index 0000000000000000000000000000000000000000..fec2335016135ed31731f49115da2bcc99d10e03
Binary files /dev/null and b/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7 differ
diff --git a/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7.info b/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7.info
new file mode 100644
index 0000000000000000000000000000000000000000..eaa3b0877884aa23a362f9bd4ad39e31e5ab7166
Binary files /dev/null and b/Library/metadata/fd/fd10c4a322c950342a9d03a14ae879b7.info differ
diff --git a/Library/shadercompiler-UnityShaderCompiler1.log b/Library/shadercompiler-UnityShaderCompiler1.log
new file mode 100644
index 0000000000000000000000000000000000000000..26501758082e02a46ac908c3892f16a565b27054
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler1.log
@@ -0,0 +1,8 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=0 insize=731 outsize=2426 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+Cmd: compileSnippet
+  api=15 type=0 insize=1596 outsize=17120 kw=UNITY_PASS_FORWARDBASE DIRECTIONAL LIGHTPROBE_SH pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/Library/shadercompiler-UnityShaderCompiler2.log b/Library/shadercompiler-UnityShaderCompiler2.log
new file mode 100644
index 0000000000000000000000000000000000000000..0f390a252711ef9c6f16030ba19bd275d18fe2f9
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler2.log
@@ -0,0 +1,8 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=1 insize=731 outsize=0 kw= pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+Cmd: compileSnippet
+  api=15 type=0 insize=1596 outsize=17344 kw=UNITY_PASS_FORWARDBASE DIRECTIONAL LIGHTPROBE_SH _EMISSION pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/Library/shadercompiler-UnityShaderCompiler3.log b/Library/shadercompiler-UnityShaderCompiler3.log
new file mode 100644
index 0000000000000000000000000000000000000000..a738ed8371c34d22fff739c227d23f825f22dff4
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler3.log
@@ -0,0 +1,8 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=0 insize=731 outsize=2819 kw=ETC1_EXTERNAL_ALPHA pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+Cmd: compileSnippet
+  api=15 type=0 insize=1302 outsize=3069 kw=UNITY_PASS_SHADOWCASTER SHADOWS_DEPTH pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/Library/shadercompiler-UnityShaderCompiler4.log b/Library/shadercompiler-UnityShaderCompiler4.log
new file mode 100644
index 0000000000000000000000000000000000000000..b8b460c4b85fe4e957acbc3aae1b930b20b807b1
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler4.log
@@ -0,0 +1,8 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=1 insize=731 outsize=0 kw=ETC1_EXTERNAL_ALPHA pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+Cmd: compileSnippet
+  api=15 type=1 insize=1302 outsize=0 kw=UNITY_PASS_SHADOWCASTER SHADOWS_DEPTH pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/Library/shadercompiler-UnityShaderCompiler5.log b/Library/shadercompiler-UnityShaderCompiler5.log
new file mode 100644
index 0000000000000000000000000000000000000000..6eaec7cb917b843b91448dc7d32a56ae5f8f4cd9
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler5.log
@@ -0,0 +1,6 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=1 insize=1596 outsize=0 kw=UNITY_PASS_FORWARDBASE DIRECTIONAL LIGHTPROBE_SH pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/Library/shadercompiler-UnityShaderCompiler6.log b/Library/shadercompiler-UnityShaderCompiler6.log
new file mode 100644
index 0000000000000000000000000000000000000000..dc343a7cdb75e120375da2a0d21658f0e3739cc2
--- /dev/null
+++ b/Library/shadercompiler-UnityShaderCompiler6.log
@@ -0,0 +1,6 @@
+Base path: /home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data
+Cmd: initializeCompiler
+Cmd: compileSnippet
+  api=15 type=1 insize=1596 outsize=0 kw=UNITY_PASS_FORWARDBASE DIRECTIONAL LIGHTPROBE_SH _EMISSION pd=UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR ok=1
+
+Quitting shader compiler process
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index 1c92a7840ec11895c76785f65d949a3d20d53355..4459eeb04b42ef0e8de94137fd650d893cadef69 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -13,7 +13,7 @@ TagManager:
   - UI
   - 
   - 
-  - 
+  - Player
   - 
   - 
   - 
diff --git a/Temp/UnityTempFile-11951eb6fab28797eaef8bb40d34af04 b/Temp/UnityTempFile-11951eb6fab28797eaef8bb40d34af04
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-11951eb6fab28797eaef8bb40d34af04
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-23d213b001011062081bf605ec935e3b b/Temp/UnityTempFile-23d213b001011062081bf605ec935e3b
new file mode 100644
index 0000000000000000000000000000000000000000..c4709ca12d27141e44eba2d9df7cc30553e7472b
--- /dev/null
+++ b/Temp/UnityTempFile-23d213b001011062081bf605ec935e3b
@@ -0,0 +1,353 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
diff --git a/Temp/UnityTempFile-24c3cdfac8211502a83214356aecd8cb b/Temp/UnityTempFile-24c3cdfac8211502a83214356aecd8cb
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-24c3cdfac8211502a83214356aecd8cb
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-44a06006f58b28e1a9d86be5dcc37acf b/Temp/UnityTempFile-44a06006f58b28e1a9d86be5dcc37acf
new file mode 100644
index 0000000000000000000000000000000000000000..a4a591432f578b323cd064afc9c35fc7803c69ee
--- /dev/null
+++ b/Temp/UnityTempFile-44a06006f58b28e1a9d86be5dcc37acf
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/MovementScript.cs"
diff --git a/Temp/UnityTempFile-5fff8492c095acdda96835fe0c4c501c b/Temp/UnityTempFile-5fff8492c095acdda96835fe0c4c501c
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-5fff8492c095acdda96835fe0c4c501c
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-67336cfde54f0978081576404cfedc6e b/Temp/UnityTempFile-67336cfde54f0978081576404cfedc6e
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-67336cfde54f0978081576404cfedc6e
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-73d53acacb848e7a68ddedd4461ca588 b/Temp/UnityTempFile-73d53acacb848e7a68ddedd4461ca588
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-73d53acacb848e7a68ddedd4461ca588
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-78cd63638b16e32cfbbf08cbb80a9cbf b/Temp/UnityTempFile-78cd63638b16e32cfbbf08cbb80a9cbf
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-78cd63638b16e32cfbbf08cbb80a9cbf
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-79eb3ffd6344aa046881032b4bd54a92 b/Temp/UnityTempFile-79eb3ffd6344aa046881032b4bd54a92
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-79eb3ffd6344aa046881032b4bd54a92
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-85a67418eb7b149f282505cf6e2799c8 b/Temp/UnityTempFile-85a67418eb7b149f282505cf6e2799c8
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-85a67418eb7b149f282505cf6e2799c8
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-9612d98fd33da118ba9babfcd27602ff b/Temp/UnityTempFile-9612d98fd33da118ba9babfcd27602ff
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-9612d98fd33da118ba9babfcd27602ff
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-9c787aeeb122379bfb5a813aef7adff5 b/Temp/UnityTempFile-9c787aeeb122379bfb5a813aef7adff5
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-9c787aeeb122379bfb5a813aef7adff5
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/UnityTempFile-a844e9952a10c52809386bc269443b39 b/Temp/UnityTempFile-a844e9952a10c52809386bc269443b39
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-a844e9952a10c52809386bc269443b39
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-d22094da202ce1eada9a93e4e760b7a3 b/Temp/UnityTempFile-d22094da202ce1eada9a93e4e760b7a3
new file mode 100644
index 0000000000000000000000000000000000000000..b8c224d38750aaae96b7502f3000705c39efd42e
--- /dev/null
+++ b/Temp/UnityTempFile-d22094da202ce1eada9a93e4e760b7a3
@@ -0,0 +1,354 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_STANDARD_2_0
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBlendListCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineBrain.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineClearShot.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineCollider.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineConfiner.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineDollyCart.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineExternalCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFollowZoom.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineFreeLook.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineMixingCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachinePipeline.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoother.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineSmoothPath.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineStateDrivenCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineTargetGroup.cs"
+"Assets/Cinemachine/Base/Runtime/Behaviours/CinemachineVirtualCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineBasicMultiChannelPerlin.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineFramingTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineGroupComposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLockToTarget.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineHardLookAt.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineOrbitalTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachinePOV.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineSameAsFollowObject.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTrackedDolly.cs"
+"Assets/Cinemachine/Base/Runtime/Components/CinemachineTransposer.cs"
+"Assets/Cinemachine/Base/Runtime/Core/AxisState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CameraState.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlend.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineBlenderSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineComponentBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineCore.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineDebugLogger.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineExtension.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePathBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachinePropertyAttribute.cs"
+"Assets/Cinemachine/Base/Runtime/Core/CinemachineVirtualCameraBase.cs"
+"Assets/Cinemachine/Base/Runtime/Core/GaussianFilter.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineCamera.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ICinemachineComponent.cs"
+"Assets/Cinemachine/Base/Runtime/Core/LensSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/NoiseSettings.cs"
+"Assets/Cinemachine/Base/Runtime/Core/Predictor.cs"
+"Assets/Cinemachine/Base/Runtime/Core/ReflectionHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/SplineHelpers.cs"
+"Assets/Cinemachine/Base/Runtime/Core/UnityVectorExtensions.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostFX.cs"
+"Assets/Cinemachine/PostFX/CinemachinePostProcessing.cs"
+"Assets/Cinemachine/Timeline/CinemachineMixer.cs"
+"Assets/Cinemachine/Timeline/CinemachineShot.cs"
+"Assets/Cinemachine/Timeline/CinemachineTrack.cs"
+"Assets/Scripts/MovementScript.cs"
diff --git a/Temp/UnityTempFile-d3acf313a9dd09f19988a52351cebe8a b/Temp/UnityTempFile-d3acf313a9dd09f19988a52351cebe8a
new file mode 100644
index 0000000000000000000000000000000000000000..2a45060159d3a142fa8f4a4bf60973e29382a828
--- /dev/null
+++ b/Temp/UnityTempFile-d3acf313a9dd09f19988a52351cebe8a
@@ -0,0 +1,361 @@
+/target:library
+/nowarn:0169
+/out:"Temp/Assembly-CSharp-Editor.dll"
+/debug:portable
+/optimize-
+/nostdlib+
+/preferreduilang:en-US
+/langversion:latest
+/reference:"Library/ScriptAssemblies/Assembly-CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/Unity.Locator.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.Timeline.dll"
+/reference:"Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll"
+/reference:"Library/ScriptAssemblies/Unity.TextMeshPro.dll"
+/reference:"Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/Managed/UnityEditor.Graphs.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/MacStandaloneSupport/UnityEditor.OSXStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/LinuxStandaloneSupport/UnityEditor.LinuxStandalone.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.StandardEvents.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Editor.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.analytics@3.3.2/Unity.Analytics.Tracker.dll"
+/reference:"/mnt/DATA-KHAIRUL/Projects/Game Projects/Tugas Besar 2 PBD/Library/PackageCache/com.unity.purchasing@2.0.6/Editor/UnityEditor.Purchasing.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll"
+/reference:"/home/mkhairulmakirin/Unity-2019.1.0f2/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll"
+/define:UNITY_2019_1_0
+/define:UNITY_2019_1
+/define:UNITY_2019
+/define:UNITY_5_3_OR_NEWER
+/define:UNITY_5_4_OR_NEWER
+/define:UNITY_5_5_OR_NEWER
+/define:UNITY_5_6_OR_NEWER
+/define:UNITY_2017_1_OR_NEWER
+/define:UNITY_2017_2_OR_NEWER
+/define:UNITY_2017_3_OR_NEWER
+/define:UNITY_2017_4_OR_NEWER
+/define:UNITY_2018_1_OR_NEWER
+/define:UNITY_2018_2_OR_NEWER
+/define:UNITY_2018_3_OR_NEWER
+/define:UNITY_2019_1_OR_NEWER
+/define:PLATFORM_ARCH_64
+/define:UNITY_64
+/define:UNITY_INCLUDE_TESTS
+/define:ENABLE_AUDIO
+/define:ENABLE_CACHING
+/define:ENABLE_CLOTH
+/define:ENABLE_DUCK_TYPING
+/define:ENABLE_MICROPHONE
+/define:ENABLE_MULTIPLE_DISPLAYS
+/define:ENABLE_PHYSICS
+/define:ENABLE_SPRITES
+/define:ENABLE_GRID
+/define:ENABLE_TILEMAP
+/define:ENABLE_TERRAIN
+/define:ENABLE_TEXTURE_STREAMING
+/define:ENABLE_DIRECTOR
+/define:ENABLE_UNET
+/define:ENABLE_LZMA
+/define:ENABLE_UNITYEVENTS
+/define:ENABLE_WEBCAM
+/define:ENABLE_WWW
+/define:ENABLE_CLOUD_SERVICES_COLLAB
+/define:ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS
+/define:ENABLE_CLOUD_SERVICES_ADS
+/define:ENABLE_CLOUD_HUB
+/define:ENABLE_CLOUD_PROJECT_ID
+/define:ENABLE_CLOUD_SERVICES_USE_WEBREQUEST
+/define:ENABLE_CLOUD_SERVICES_UNET
+/define:ENABLE_CLOUD_SERVICES_BUILD
+/define:ENABLE_CLOUD_LICENSE
+/define:ENABLE_EDITOR_HUB
+/define:ENABLE_EDITOR_HUB_LICENSE
+/define:ENABLE_WEBSOCKET_CLIENT
+/define:ENABLE_DIRECTOR_AUDIO
+/define:ENABLE_DIRECTOR_TEXTURE
+/define:ENABLE_TIMELINE
+/define:ENABLE_EDITOR_METRICS
+/define:ENABLE_EDITOR_METRICS_CACHING
+/define:ENABLE_MANAGED_JOBS
+/define:ENABLE_MANAGED_TRANSFORM_JOBS
+/define:ENABLE_MANAGED_ANIMATION_JOBS
+/define:ENABLE_MANAGED_AUDIO_JOBS
+/define:INCLUDE_DYNAMIC_GI
+/define:INCLUDE_GI
+/define:ENABLE_MONO_BDWGC
+/define:PLATFORM_SUPPORTS_MONO
+/define:RENDER_SOFTWARE_CURSOR
+/define:INCLUDE_PUBNUB
+/define:ENABLE_VIDEO
+/define:ENABLE_CUSTOM_RENDER_TEXTURE
+/define:ENABLE_LOCALIZATION
+/define:PLATFORM_STANDALONE_LINUX
+/define:PLATFORM_STANDALONE
+/define:UNITY_STANDALONE_LINUX
+/define:UNITY_STANDALONE
+/define:UNITY_STANDALONE_LINUX_API
+/define:PLAYERPREFS_SERIALIZE_TO_XML
+/define:ENABLE_SUBSTANCE
+/define:ENABLE_RUNTIME_GI
+/define:ENABLE_MOVIES
+/define:ENABLE_NETWORK
+/define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
+/define:ENABLE_UNITYWEBREQUEST
+/define:ENABLE_CLOUD_SERVICES
+/define:ENABLE_CLOUD_SERVICES_ANALYTICS
+/define:ENABLE_CLOUD_SERVICES_PURCHASING
+/define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
+/define:ENABLE_SCRIPTING_GC_WBARRIERS
+/define:ENABLE_CLUSTER_SYNC
+/define:ENABLE_CLUSTERINPUT
+/define:ENABLE_VR
+/define:ENABLE_SPATIALTRACKING
+/define:ENABLE_MODULAR_UNITYENGINE_ASSEMBLIES
+/define:ENABLE_WEBSOCKET_HOST
+/define:ENABLE_MONO
+/define:NET_4_6
+/define:ENABLE_PROFILER
+/define:DEBUG
+/define:TRACE
+/define:UNITY_ASSERTIONS
+/define:UNITY_EDITOR
+/define:UNITY_EDITOR_64
+/define:UNITY_EDITOR_LINUX
+/define:ENABLE_UNITY_COLLECTIONS_CHECKS
+/define:ENABLE_BURST_AOT
+/define:UNITY_TEAM_LICENSE
+/define:UNITY_PRO_LICENSE
+/define:CSHARP_7_OR_LATER
+/define:CSHARP_7_3_OR_NEWER
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBasicMultiChannelPerlinEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlenderSettingsEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBlendListCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineBrainEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineClearShotEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineColliderEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineConfinerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineExternalCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFramingTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineFreeLookEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineGroupComposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLockToTargetEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineHardLookAtEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineMixingCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineOrbitalTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachinePOVEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineScreenComposerGuides.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineSmoothPathEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineStateDrivenCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTargetGroupEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTrackedDollyEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineTransposerEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraBaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Editors/CinemachineVirtualCameraEditor.cs"
+"Assets/Cinemachine/Base/Editor/Menus/CinemachineMenu.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineBlendDefinitionPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/CinemachineTagFieldPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/GetSetDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/LensSettingsPropertyDrawer.cs"
+"Assets/Cinemachine/Base/Editor/PropertyDrawers/MinDrawer.cs"
+"Assets/Cinemachine/Base/Editor/Utility/BaseEditor.cs"
+"Assets/Cinemachine/Base/Editor/Utility/EmbeddedAssetHelpers.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SaveDuringPlay.cs"
+"Assets/Cinemachine/Base/Editor/Utility/ScriptableObjectUtility.cs"
+"Assets/Cinemachine/Base/Editor/Utility/SerializedPropertyHelper.cs"
+"Assets/Cinemachine/Base/Editor/Windows/AboutWindow.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineColliderPrefs.cs"
+"Assets/Cinemachine/Base/Editor/Windows/CinemachineSettings.cs"
+"Assets/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs"
+"Assets/Cinemachine/PostFX/Editor/PostFXAutoImport.cs"
+"Assets/Cinemachine/Timeline/Editor/CinemachineShotEditor.cs"
diff --git a/Temp/__Backupscenes/0.backup b/Temp/__Backupscenes/0.backup
new file mode 100644
index 0000000000000000000000000000000000000000..1fa2622f73ba71860c52663aefe7fe5364fd51c9
Binary files /dev/null and b/Temp/__Backupscenes/0.backup differ
diff --git a/Tugas Besar 2 PBD.sln b/Tugas Besar 2 PBD.sln
new file mode 100644
index 0000000000000000000000000000000000000000..4111f3e23a0b8b644033557f761775b6f254c2dd
--- /dev/null
+++ b/Tugas Besar 2 PBD.sln	
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2C2E23CF-77D4-3120-1560-5A3A7A3D6AF1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BB57502B-73C8-7226-E9EA-F2AEF3A21BDA}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal