Tests for past performances on PerformanceProcess

--- Source/Process.UnitTests/PerformanceProcessTests/GetPerformancesTests.cs
+++ Source/Process.UnitTests/PerformanceProcessTests/GetPerformancesTests.cs
@@ -1,4 +1,4 @@
-using System;
+using System.Linq;
 using Ewk.BandWebsite.UnitTests.ModelCreators;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Rhino.Mocks;
@@ -9,9 +9,11 @@
     public class GetPerformancesTests : PerformanceProcessTestBase
     {
         [TestMethod]
-        public void When_GetPerformances_is_called_with_a_valid_Guid_then_GetPerformance_on_the_BandRepository_is_called_with_that_Guid()
+        public void When_GetPerformances_is_called_then_GetAllPerformance_on_the_BandRepository_is_called()
         {
-            var performances = PerformanceCreator.CreateFutureCollection();
+            var futurePerformances = PerformanceCreator.CreateFutureCollection();
+            var pastPerformances = PerformanceCreator.CreatePastCollection();
+            var performances = pastPerformances.Union(futurePerformances);

             BandRepository
                 .Expect(repository =>
@@ -20,8 +22,69 @@
                 .Repeat.Once();
             BandRepository.Replay();

-            Process.GetPerformances();
+            var result = Process.GetPerformances();

+            Assert.AreEqual(performances.Count(), result.Count());
+            BandRepository.VerifyAllExpectations();
+        }
+
+        [TestMethod]
+        public void When_GetPerformances_is_called_with_a_valid_page_and_pageSize_then_GetPerformance_on_the_BandRepository_is_called()
+        {
+            var futurePerformances = PerformanceCreator.CreateFutureCollection();
+            var pastPerformances = PerformanceCreator.CreatePastCollection();
+            var performances = pastPerformances.Union(futurePerformances);
+
+            BandRepository
+                .Expect(repository =>
+                        repository.GetPerformances(Arg<int>.Is.Anything, Arg<int>.Is.Anything))
+                .Return(performances)
+                .Repeat.Once();
+            BandRepository.Replay();
+
+            var result = Process.GetPerformances(0, 32);
+
+            Assert.AreEqual(performances.Count(), result.Count());
+            BandRepository.VerifyAllExpectations();
+        }
+
+        [TestMethod]
+        public void When_GetPastPerformances_is_called_then_GetAllPastPerformance_on_the_BandRepository_is_called()
+        {
+            var futurePerformances = PerformanceCreator.CreateFutureCollection();
+            var pastPerformances = PerformanceCreator.CreatePastCollection();
+            var performances = pastPerformances.Union(futurePerformances);
+
+            BandRepository
+                .Expect(repository =>
+                        repository.GetAllPastPerformances())
+                .Return(performances)
+                .Repeat.Once();
+            BandRepository.Replay();
+
+            var result = Process.GetPastPerformances();
+
+            Assert.AreEqual(performances.Count(), result.Count());
+            BandRepository.VerifyAllExpectations();
+        }
+
+        [TestMethod]
+        public void When_GetPastPerformances_is_called_with_a_valid_page_and_pageSize_then_GetPastPerformance_on_the_BandRepository_is_called()
+        {
+            var futurePerformances = PerformanceCreator.CreateFutureCollection();
+            var pastPerformances = PerformanceCreator.CreatePastCollection();
+            var performances = pastPerformances.Union(futurePerformances);
+
+            BandRepository
+                .Expect(repository =>
+                        repository.GetPastPerformances(Arg<int>.Is.Anything, Arg<int>.Is.Anything))
+                .Return(performances)
+                .Repeat.Once();
+            BandRepository.Replay();
+
+            var result = Process.GetPastPerformances(0, 32);
+
+            Assert.AreEqual(performances.Count(), result.Count());
             BandRepository.VerifyAllExpectations();
         }
     }


SetFileTimeProxy - move DateTime conversion to try catch to return InvalidParameter in case of throw

--- DokanNet/DokanOperationProxy.cs
+++ DokanNet/DokanOperationProxy.cs
@@ -760,24 +760,24 @@
             ref FILETIME rawLastWriteTime,
             DokanFileInfo rawFileInfo)
         {
-            var ctime = (rawCreationTime.dwLowDateTime != 0 || rawCreationTime.dwHighDateTime != 0) &&
-                        (rawCreationTime.dwLowDateTime != -1 || rawCreationTime.dwHighDateTime != -1)
-                ? DateTime.FromFileTime(((long)rawCreationTime.dwHighDateTime << 32) |
-                                        (uint)rawCreationTime.dwLowDateTime)
-                : (DateTime?)null;
-            var atime = (rawLastAccessTime.dwLowDateTime != 0 || rawLastAccessTime.dwHighDateTime != 0) &&
-                        (rawLastAccessTime.dwLowDateTime != -1 || rawLastAccessTime.dwHighDateTime != -1)
-                ? DateTime.FromFileTime(((long)rawLastAccessTime.dwHighDateTime << 32) |
-                                        (uint)rawLastAccessTime.dwLowDateTime)
-                : (DateTime?)null;
-            var mtime = (rawLastWriteTime.dwLowDateTime != 0 || rawLastWriteTime.dwHighDateTime != 0) &&
-                        (rawLastWriteTime.dwLowDateTime != -1 || rawLastWriteTime.dwHighDateTime != -1)
-                ? DateTime.FromFileTime(((long)rawLastWriteTime.dwHighDateTime << 32) |
-                                        (uint)rawLastWriteTime.dwLowDateTime)
-                : (DateTime?)null;
-
-            try
-            {
+            try
+            {
+                var ctime = (rawCreationTime.dwLowDateTime != 0 || rawCreationTime.dwHighDateTime != 0) &&
+                            (rawCreationTime.dwLowDateTime != -1 || rawCreationTime.dwHighDateTime != -1)
+                    ? DateTime.FromFileTime(((long) rawCreationTime.dwHighDateTime << 32) |
+                                            (uint) rawCreationTime.dwLowDateTime)
+                    : (DateTime?) null;
+                var atime = (rawLastAccessTime.dwLowDateTime != 0 || rawLastAccessTime.dwHighDateTime != 0) &&
+                            (rawLastAccessTime.dwLowDateTime != -1 || rawLastAccessTime.dwHighDateTime != -1)
+                    ? DateTime.FromFileTime(((long) rawLastAccessTime.dwHighDateTime << 32) |
+                                            (uint) rawLastAccessTime.dwLowDateTime)
+                    : (DateTime?) null;
+                var mtime = (rawLastWriteTime.dwLowDateTime != 0 || rawLastWriteTime.dwHighDateTime != 0) &&
+                            (rawLastWriteTime.dwLowDateTime != -1 || rawLastWriteTime.dwHighDateTime != -1)
+                    ? DateTime.FromFileTime(((long) rawLastWriteTime.dwHighDateTime << 32) |
+                                            (uint) rawLastWriteTime.dwLowDateTime)
+                    : (DateTime?) null;
+
                 logger.Debug("SetFileTimeProxy : {0}", rawFileName);
                 logger.Debug("\tCreateTime\t{0}", ctime);
                 logger.Debug("\tAccessTime\t{0}", atime);


Added lucene query sorting for more predictable results.

It impacts on search time up to 10x, so consider not using it.
But without when we updating index books order will be
displaced and pagination won't work until all books re-indexed.

--- DotOPDS/Utils/LuceneSearcher.cs
+++ DotOPDS/Utils/LuceneSearcher.cs
@@ -57,11 +57,13 @@
         {
             Query = query.ToString();
             watch = Stopwatch.StartNew();
+            var fields = new SortField[] { SortField.FIELD_SCORE, new SortField("LibId", SortField.INT, false) };
+            var sort = new Sort(fields);

             using (var directory = new SimpleFSDirectory(new DirectoryInfo(Util.Normalize(Settings.Instance.Database))))
             using (var searcher = new IndexSearcher(directory))
             {
-                var docs = searcher.Search(query, null, skip + take);
+                var docs = searcher.Search(query, null, skip + take, sort);
                 count = docs.TotalHits;

                 var books = new List<Book>();


Removed NonSerialized attribute.

Removed NonSerialized attribute.

--- ElGamalExt/ElGamalParameters.cs
+++ ElGamalExt/ElGamalParameters.cs
@@ -25,7 +25,6 @@
         public byte[] Y;
         public ElGamalPaddingMode Padding;

-        [NonSerialized]
         public byte[] X;
     }
 }


Refactored the DNA converter to store the hashes.

--- UMAProject/Assets/UMA/UMA_Assets/DNA/HumanFemaleDNAConverterBehaviour.cs
+++ UMAProject/Assets/UMA/UMA_Assets/DNA/HumanFemaleDNAConverterBehaviour.cs
@@ -4,25 +4,91 @@

 public class HumanFemaleDNAConverterBehaviour : DnaConverterBehaviour
 {
-    public HumanFemaleDNAConverterBehaviour()
-    {
-        this.ApplyDnaAction = UpdateUMAFemaleDNABones;
-        this.DNAType = typeof(UMADnaHumanoid);
-    }
-
-	private static bool builtHashes = false;
-	private static int headAdjustHash;
-	private static int neckAdjustHash;
-	private static int leftOuterBreastHash;
-	private static int rightOuterBreastHash;
-	private static int leftEyeHash;
-	private static int rightEyeHash;
-	private static int spine1AdjustHash;
+	public HumanFemaleDNAConverterBehaviour()
+	{
+		this.ApplyDnaAction = UpdateUMAFemaleDNABones;
+		this.DNAType = typeof(UMADnaHumanoid);
+	}
+
+	static bool builtHashes = false;
+	static int headAdjustHash;
+	static int neckAdjustHash;
+	static int leftOuterBreastHash;
+	static int rightOuterBreastHash;
+	static int leftEyeHash;
+	static int rightEyeHash;
+	static int spine1AdjustHash;
+	static int spineAdjustHash;
+	static int lowerBackBellyHash;
+	static int lowerBackAdjustHash;
+	static int leftTrapeziusHash;
+	static int rightTrapeziusHash;
+	static int leftArmAdjustHash;
+	static int rightArmAdjustHash;
+	static int leftForeArmAdjustHash;
+	static int rightForeArmAdjustHash;
+	static int leftForeArmTwistAdjustHash;
+	static int rightForeArmTwistAdjustHash;
+	static int leftShoulderAdjustHash;
+	static int rightShoulderAdjustHash;
+	static int leftUpLegAdjustHash;
+	static int rightUpLegAdjustHash;
+	static int leftLegAdjustHash;
+	static int rightLegAdjustHash;
+	static int leftGluteusHash;
+	static int rightGluteusHash;
+	static int leftEarAdjustHash;
+	static int rightEarAdjustHash;
+	static int noseBaseAdjustHash;
+	static int noseMiddleAdjustHash;
+	static int leftNoseAdjustHash;
+	static int rightNoseAdjustHash;
+	static int upperLipsAdjustHash;
+	static int mandibleAdjustHash;
+	static int leftLowMaxilarAdjustHash;
+	static int rightLowMaxilarAdjustHash;
+	static int leftCheekAdjustHash;
+	static int rightCheekAdjustHash;
+	static int leftLowCheekAdjustHash;
+	static int rightLowCheekAdjustHash;
+	static int noseTopAdjustHash;
+	static int leftEyebrowLowAdjustHash;
+	static int rightEyebrowLowAdjustHash;
+	static int leftEyebrowMiddleAdjustHash;
+	static int rightEyebrowMiddleAdjustHash;
+	static int leftEyebrowUpAdjustHash;
+	static int rightEyebrowUpAdjustHash;
+	static int lipsSuperiorAdjustHash;
+	static int lipsInferiorAdjustHash;
+	static int leftLipsSuperiorMiddleAdjustHash;
+	static int rightLipsSuperiorMiddleAdjustHash;
+	static int leftLipsInferiorAdjustHash;
+	static int rightLipsInferiorAdjustHash;
+	static int leftLipsAdjustHash;
+	static int rightLipsAdjustHash;
+	static int globalHash;
+	static int positionHash;
+	static int lowerBackHash;
+	static int headHash;
+	static int leftArmHash;
+	static int rightArmHash;
+	static int leftForeArmHash;
+	static int rightForeArmHash;
+	static int leftHandHash;
+	static int rightHandHash;
+	static int leftFootHash;
+	static int rightFootHash;
+	static int leftUpLegHash;
+	static int rightUpLegHash;
+	static int leftShoulderHash;
+	static int rightShoulderHash;
+	static int mandibleHash;
+
 	private static void buildHashes()
 	{
 		if (builtHashes)
 			return;
-
+
 		headAdjustHash = UMASkeleton.StringToHash("HeadAdjust");
 		neckAdjustHash = UMASkeleton.StringToHash("NeckAdjust");
 		leftOuterBreastHash = UMASkeleton.StringToHash("LeftOuterBreast");
@@ -30,46 +96,112 @@
 		leftEyeHash = UMASkeleton.StringToHash("LeftEye");
 		rightEyeHash = UMASkeleton.StringToHash("RightEye");
 		spine1AdjustHash = UMASkeleton.StringToHash("Spine1Adjust");
+		spineAdjustHash = UMASkeleton.StringToHash("SpineAdjust");
+		lowerBackBellyHash = UMASkeleton.StringToHash("LowerBackBelly");
+		lowerBackAdjustHash = UMASkeleton.StringToHash("LowerBackAdjust");
+		leftTrapeziusHash = UMASkeleton.StringToHash("LeftTrapezius");
+		rightTrapeziusHash = UMASkeleton.StringToHash("RightTrapezius");
+		leftArmAdjustHash = UMASkeleton.StringToHash("LeftArmAdjust");
+		rightArmAdjustHash = UMASkeleton.StringToHash("RightArmAdjust");
+		leftForeArmAdjustHash = UMASkeleton.StringToHash("LeftForeArmAdjust");
+		rightForeArmAdjustHash = UMASkeleton.StringToHash("RightForeArmAdjust");
+		leftForeArmTwistAdjustHash = UMASkeleton.StringToHash("LeftForeArmTwistAdjust");
+		rightForeArmTwistAdjustHash = UMASkeleton.StringToHash("RightForeArmTwistAdjust");
+		leftShoulderAdjustHash = UMASkeleton.StringToHash("LeftShoulderAdjust");
+		rightShoulderAdjustHash = UMASkeleton.StringToHash("RightShoulderAdjust");
+		leftUpLegAdjustHash = UMASkeleton.StringToHash("LeftUpLegAdjust");
+		rightUpLegAdjustHash = UMASkeleton.StringToHash("RightUpLegAdjust");
+		leftLegAdjustHash = UMASkeleton.StringToHash("LeftLegAdjust");
+		rightLegAdjustHash = UMASkeleton.StringToHash("RightLegAdjust");
+		leftGluteusHash = UMASkeleton.StringToHash("LeftGluteus");
+		rightGluteusHash = UMASkeleton.StringToHash("RightGluteus");
+		leftEarAdjustHash = UMASkeleton.StringToHash("LeftEarAdjust");
+		rightEarAdjustHash = UMASkeleton.StringToHash("RightEarAdjust");
+		noseBaseAdjustHash = UMASkeleton.StringToHash("NoseBaseAdjust");
+		noseMiddleAdjustHash = UMASkeleton.StringToHash("NoseMiddleAdjust");
+		leftNoseAdjustHash = UMASkeleton.StringToHash("LeftNoseAdjust");
+		rightNoseAdjustHash = UMASkeleton.StringToHash("RightNoseAdjust");
+		upperLipsAdjustHash = UMASkeleton.StringToHash("UpperLipsAdjust");
+		mandibleAdjustHash = UMASkeleton.StringToHash("MandibleAdjust");
+		leftLowMaxilarAdjustHash = UMASkeleton.StringToHash("LeftLowMaxilarAdjust");
+		rightLowMaxilarAdjustHash = UMASkeleton.StringToHash("RightLowMaxilarAdjust");
+		leftCheekAdjustHash = UMASkeleton.StringToHash("LeftCheekAdjust");
+		rightCheekAdjustHash = UMASkeleton.StringToHash("RightCheekAdjust");
+		leftLowCheekAdjustHash = UMASkeleton.StringToHash("LeftLowCheekAdjust");
+		rightLowCheekAdjustHash = UMASkeleton.StringToHash("RightLowCheekAdjust");
+		noseTopAdjustHash = UMASkeleton.StringToHash("NoseTopAdjust");
+		leftEyebrowLowAdjustHash = UMASkeleton.StringToHash("LeftEyebrowLowAdjust");
+		rightEyebrowLowAdjustHash = UMASkeleton.StringToHash("RightEyebrowLowAdjust");
+		leftEyebrowMiddleAdjustHash = UMASkeleton.StringToHash("LeftEyebrowMiddleAdjust");
+		rightEyebrowMiddleAdjustHash = UMASkeleton.StringToHash("RightEyebrowMiddleAdjust");
+		leftEyebrowUpAdjustHash = UMASkeleton.StringToHash("LeftEyebrowUpAdjust");
+		rightEyebrowUpAdjustHash = UMASkeleton.StringToHash("RightEyebrowUpAdjust");
+		lipsSuperiorAdjustHash = UMASkeleton.StringToHash("LipsSuperiorAdjust");
+		lipsInferiorAdjustHash = UMASkeleton.StringToHash("LipsInferiorAdjust");
+		leftLipsSuperiorMiddleAdjustHash = UMASkeleton.StringToHash("LeftLipsSuperiorMiddleAdjust");
+		rightLipsSuperiorMiddleAdjustHash = UMASkeleton.StringToHash("RightLipsSuperiorMiddleAdjust");
+		leftLipsInferiorAdjustHash = UMASkeleton.StringToHash("LeftLipsInferiorAdjust");
+		rightLipsInferiorAdjustHash = UMASkeleton.StringToHash("RightLipsInferiorAdjust");
+		leftLipsAdjustHash = UMASkeleton.StringToHash("LeftLipsAdjust");
+		rightLipsAdjustHash = UMASkeleton.StringToHash("RightLipsAdjust");
+		globalHash = UMASkeleton.StringToHash("Global");
+		positionHash = UMASkeleton.StringToHash("Position");
+		lowerBackHash = UMASkeleton.StringToHash("LowerBack");
+		headHash = UMASkeleton.StringToHash("Head");
+		leftArmHash = UMASkeleton.StringToHash("LeftArm");
+		rightArmHash = UMASkeleton.StringToHash("RightArm");
+		leftForeArmHash = UMASkeleton.StringToHash("LeftForeArm");
+		rightForeArmHash = UMASkeleton.StringToHash("RightForeArm");
+		leftHandHash = UMASkeleton.StringToHash("LeftHand");
+		rightHandHash = UMASkeleton.StringToHash("RightHand");
+		leftFootHash = UMASkeleton.StringToHash("LeftFoot");
+		rightFootHash = UMASkeleton.StringToHash("RightFoot");
+		leftUpLegHash = UMASkeleton.StringToHash("LeftUpLeg");
+		rightUpLegHash = UMASkeleton.StringToHash("RightUpLeg");
+		leftShoulderHash = UMASkeleton.StringToHash("LeftShoulder");
+		rightShoulderHash = UMASkeleton.StringToHash("RightShoulder");
+		mandibleHash = UMASkeleton.StringToHash("Mandible");
 		builtHashes = true;
 	}
-
-    public static void UpdateUMAFemaleDNABones(UMAData umaData, UMASkeleton skeleton)
-    {
+
+
+	public static void UpdateUMAFemaleDNABones(UMAData umaData, UMASkeleton skeleton)
+	{
 		buildHashes();
-        var umaDna = umaData.GetDna<UMADnaHumanoid>();
+		var umaDna = umaData.GetDna<UMADnaHumanoid>();
 		skeleton.SetScale(headAdjustHash,
-			new Vector3(
-				Mathf.Clamp(1, 1, 1),
-				Mathf.Clamp(1 + (umaDna.headWidth - 0.5f) * 0.30f, 0.5f, 1.6f),
-				Mathf.Clamp(1 , 1, 1)));
-
+		                  new Vector3(
+			Mathf.Clamp(1, 1, 1),
+			Mathf.Clamp(1 + (umaDna.headWidth - 0.5f) * 0.30f, 0.5f, 1.6f),
+			Mathf.Clamp(1 , 1, 1)));
+
 		//umaData.boneList["HeadAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 1, 1),
 		//Mathf.Clamp(1 + (umaDna.headWidth - 0.5f) * 0.30f, 0.5f, 1.6f),
 		//Mathf.Clamp(1 , 1, 1));

 		skeleton.SetScale(neckAdjustHash,
-			new Vector3(
-				Mathf.Clamp(1, 0.6f, 2),
-				Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 0.80f, 0.5f, 1.6f),
-				Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 1.2f, 0.5f, 1.6f)));
-
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 0.80f, 0.5f, 1.6f),
+			Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 1.2f, 0.5f, 1.6f)));
+
 		//umaData.boneList["NeckAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 0.80f, 0.5f, 1.6f),
 		//Mathf.Clamp(1 + (umaDna.neckThickness - 0.5f) * 1.2f, 0.5f, 1.6f));

 		skeleton.SetScale(leftOuterBreastHash,
-			new Vector3(
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f)));
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f)));
 		skeleton.SetScale(rightOuterBreastHash,
-		    new Vector3(
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
-				Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f)));
-
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f)));
+
 		//umaData.boneList["LeftOuterBreast"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f),
@@ -80,16 +212,16 @@
 		//Mathf.Clamp(1 + (umaDna.breastSize - 0.5f) * 1.50f + (umaDna.upperWeight - 0.5f) * 0.10f, 0.6f, 1.5f));

 		skeleton.SetScale(leftEyeHash,
-		    new Vector3(
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f)));
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f)));
 		skeleton.SetScale(rightEyeHash,
-		    new Vector3(
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
-				Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f)));
-
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
+			Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f)));
+
 		//umaData.boneList["LeftEye"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
 		//Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
@@ -98,70 +230,70 @@
 		//Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
 		//Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f),
 		//Mathf.Clamp(1 + (umaDna.eyeSize - 0.5f) * 0.3f , 0.7f, 1.4f));
-
+
 		skeleton.SetRotation(leftEyeHash,
-			Quaternion.Euler(new Vector3((umaDna.eyeRotation - 0.5f) * 20, -90, -180)));
+		                     Quaternion.Euler(new Vector3((umaDna.eyeRotation - 0.5f) * 20, -90, -180)));
 		skeleton.SetRotation(rightEyeHash,
-			Quaternion.Euler(new Vector3(-(umaDna.eyeRotation - 0.5f) * 20, -90, -180)));
-
+		                     Quaternion.Euler(new Vector3(-(umaDna.eyeRotation - 0.5f) * 20, -90, -180)));
+
 		//umaData.boneList["LeftEye"].boneTransform.localEulerAngles = new Vector3((umaDna.eyeRotation - 0.5f) * 20, -90, -180);
 		//umaData.boneList["RightEye"].boneTransform.localEulerAngles = new Vector3(-(umaDna.eyeRotation - 0.5f) * 20, -90, -180);

 		skeleton.SetScale(spine1AdjustHash,
-		    new Vector3(
-				Mathf.Clamp(1, 0.6f, 2),
-				Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.15f, 0.75f, 1.10f),
-				Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.00f)));
-
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.15f, 0.75f, 1.10f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.00f)));
+
 		//umaData.boneList["Spine1Adjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.15f, 0.75f, 1.10f),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.10f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.00f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("SpineAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.350f),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.450f)));
-
+
+		skeleton.SetScale(spineAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.350f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.450f)));
+
 		//umaData.boneList["SpineAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.350f),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.upperMuscle - 0.5f) * 0.25f, 0.85f, 1.450f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LowerBackBelly"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 1.75f, 0.35f, 1.75f),
-			  Mathf.Clamp(1 + (umaDna.waist - 0.5f) * 1.75f, 0.35f, 1.75f),
-			  Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 3.00f, 0.35f, 3.0f)));
-
+
+		skeleton.SetScale(lowerBackBellyHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 1.75f, 0.35f, 1.75f),
+			Mathf.Clamp(1 + (umaDna.waist - 0.5f) * 1.75f, 0.35f, 1.75f),
+			Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 3.00f, 0.35f, 3.0f)));
+
 		//umaData.boneList["LowerBackBelly"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 1.75f, 0.35f, 1.75f),
 		//Mathf.Clamp(1 + (umaDna.waist - 0.5f) * 1.75f, 0.35f, 1.75f),
 		//Mathf.Clamp(1 + (umaDna.belly - 0.5f) * 3.00f, 0.35f, 3.0f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LowerBackAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f)));
-
+
+		skeleton.SetScale(lowerBackAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f)));
+
 		//umaData.boneList["LowerBackAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.25f + (umaDna.lowerWeight - 0.5f) * 0.15f, 0.85f, 1.5f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftTrapezius"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightTrapezius"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f)));
-
+
+		skeleton.SetScale(leftTrapeziusHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f)));
+		skeleton.SetScale(rightTrapeziusHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f)));
+
 		//umaData.boneList["LeftTrapezius"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
 		//Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
@@ -170,18 +302,18 @@
 		//Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
 		//Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f),
 		//Mathf.Clamp(1 + (umaDna.upperMuscle - 0.5f) * 1.35f, 0.65f, 1.35f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftArmAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
-			  Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightArmAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
-			  Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f)));
-
+
+		skeleton.SetScale(leftArmAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
+			Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f)));
+		skeleton.SetScale(rightArmAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
+			Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f)));
+
 		//umaData.boneList["LeftArmAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
@@ -190,18 +322,18 @@
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f),
 		//Mathf.Clamp(1 + (umaDna.armWidth - 0.5f) * 0.65f, 0.65f, 1.65f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftForeArmAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightForeArmAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f)));
-
+
+		skeleton.SetScale(leftForeArmAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f)));
+		skeleton.SetScale(rightForeArmAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f)));
+
 		//umaData.boneList["LeftForeArmAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
@@ -210,18 +342,18 @@
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.65f, 0.75f, 1.25f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftForeArmTwistAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightForeArmTwistAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f)));
-
+
+		skeleton.SetScale(leftForeArmTwistAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f)));
+		skeleton.SetScale(rightForeArmTwistAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f)));
+
 		//umaData.boneList["LeftForeArmTwistAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
@@ -230,18 +362,18 @@
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f),
 		//Mathf.Clamp(1 + (umaDna.forearmWidth - 0.5f) * 0.35f, 0.75f, 1.25f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftShoulderAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightShoulderAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
-			  Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f)));
-
+
+		skeleton.SetScale(leftShoulderAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f)));
+		skeleton.SetScale(rightShoulderAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
+			Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f)));
+
 		//umaData.boneList["LeftShoulderAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
@@ -250,18 +382,18 @@
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f),
 		//Mathf.Clamp(1 + (umaDna.upperWeight - 0.5f) * 0.35f + (umaDna.upperMuscle - 0.5f) * 0.55f, 0.75f, 1.25f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftUpLegAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightUpLegAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f)));
-
+
+		skeleton.SetScale(leftUpLegAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f)));
+		skeleton.SetScale(rightUpLegAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f)));
+
 		//umaData.boneList["LeftUpLegAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
@@ -270,18 +402,18 @@
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f),
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.65f + (umaDna.lowerMuscle - 0.5f) * 0.15f - (umaDna.legsSize - 0.5f), 0.45f, 1.35f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftLegAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.75f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightLegAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1, 0.6f, 2),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
-			  Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.75f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f)));
-
+
+		skeleton.SetScale(leftLegAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.75f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f)));
+		skeleton.SetScale(rightLegAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1, 0.6f, 2),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
+			Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.75f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f)));
+
 		//umaData.boneList["LeftLegAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1, 0.6f, 2),
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
@@ -291,17 +423,17 @@
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.95f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f),
 		//Mathf.Clamp(1 + (umaDna.lowerWeight - 0.5f) * 0.15f + (umaDna.lowerMuscle - 0.5f) * 0.75f - (umaDna.legsSize - 0.5f), 0.65f, 1.45f));

-		skeleton.SetScale(UMASkeleton.StringToHash("LeftGluteus"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightGluteus"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
-			  Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f)));
-
+		skeleton.SetScale(leftGluteusHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f)));
+		skeleton.SetScale(rightGluteusHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
+			Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f)));
+
 		//umaData.boneList["LeftGluteus"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
 		//Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
@@ -310,18 +442,18 @@
 		//Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
 		//Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f),
 		//Mathf.Clamp(1 + (umaDna.gluteusSize - 0.5f) * 1.35f , 0.25f, 2.35f));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftEarAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightEarAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f)));
-
+
+		skeleton.SetScale(leftEarAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f)));
+		skeleton.SetScale(rightEarAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f)));
+
 		//umaData.boneList["LeftEarAdjust"].boneTransform.localScale = new Vector3(
 		//Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
@@ -330,365 +462,363 @@
 		//Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f),
 		//Mathf.Clamp(1 + (umaDna.earsSize - 0.5f) * 1.0f, 0.75f, 1.5f));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftEarAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftEarAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.01f, -0.01f, 0.01f),
-				Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.03f, -0.03f, 0.03f),
-				Mathf.Clamp(0 + (umaDna.earsPosition - 0.5f) * 0.02f, -0.02f, 0.02f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightEarAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightEarAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.01f, -0.01f, 0.01f),
-				Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * 0.03f, -0.03f, 0.03f),
-				Mathf.Clamp(0 + (umaDna.earsPosition - 0.5f) * 0.02f, -0.02f, 0.02f)));
-
-		skeleton.SetRotation(UMASkeleton.StringToHash("LeftEarAdjust"),
-			Quaternion.Euler(new Vector3(
-			  Mathf.Clamp(0, -30, 80),
-			  Mathf.Clamp(0, -30, 80),
-			  Mathf.Clamp((umaDna.earsRotation - 0.5f) * 40, -15, 40))));
-		skeleton.SetRotation(UMASkeleton.StringToHash("RightEarAdjust"),
-			Quaternion.Euler(new Vector3(
-			  Mathf.Clamp(0, -30, 80),
-			  Mathf.Clamp(0, -30, 80),
-			  Mathf.Clamp((umaDna.earsRotation - 0.5f) * -40, -40, 15))));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("NoseBaseAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 1.5f, 0.4f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 0.15f + (umaDna.noseWidth - 0.5f) * 1.0f, 0.25f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 0.15f + (umaDna.noseFlatten - 0.5f) * 0.75f, 0.25f, 3.0f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("NoseMiddleAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 1.9f + (umaDna.noseSize - 0.5f) * 1.0f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 0.15f + (umaDna.noseSize - 0.5f) * 0.25f + (umaDna.noseWidth - 0.5f) * 0.5f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 0.15f + (umaDna.noseSize - 0.5f) * 0.10f, 0.5f, 3.0f)));
-		skeleton.SetRotation(UMASkeleton.StringToHash("NoseBaseAdjust"),
-			Quaternion.Euler(new Vector3(
-			  Mathf.Clamp(0, -30, 80),
-			  Mathf.Clamp((umaDna.noseInclination - 0.5f) * 60, -60, 30),
-			  Mathf.Clamp(0, -30, 80))));
-		skeleton.SetPosition(UMASkeleton.StringToHash("NoseBaseAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("NoseBaseAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("NoseMiddleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("NoseBaseAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.006f, -0.012f, 0.012f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.007f, -0.015f, 0.015f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftNoseAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftNoseAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightNoseAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightNoseAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("UpperLipsAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("UpperLipsAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0045f, -0.0045f, 0.0045f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("MandibleAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.chinPronounced - 0.5f) * 0.18f, 0.55f, 1.75f),
-			  Mathf.Clamp(1 + (umaDna.chinSize - 0.5f) * 1.3f, 0.75f, 1.3f),
-			  Mathf.Clamp(1, 0.4f, 1.5f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("MandibleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("MandibleAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.0125f, 0.0125f),
-				Mathf.Clamp(0, -0.0125f, 0.0125f),
-				Mathf.Clamp(0 + (umaDna.chinPosition - 0.5f) * 0.0075f, -0.0075f, 0.0075f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftLowMaxilarAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftLowMaxilarAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.jawsSize - 0.5f) * 0.025f, -0.025f, 0.025f),
-				Mathf.Clamp(0 + (umaDna.jawsPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightLowMaxilarAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightLowMaxilarAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.jawsSize - 0.5f) * -0.025f, -0.025f, 0.025f),
-				Mathf.Clamp(0 + (umaDna.jawsPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftCheekAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightCheekAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
-			  Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftCheekAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftCheekAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.cheekPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightCheekAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightCheekAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.cheekPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftLowCheekAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftLowCheekAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.lowCheekPronounced - 0.5f) * -0.035f, -0.07f, 0.035f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.lowCheekPosition - 0.5f) * 0.06f, -0.06f, 0.06f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightLowCheekAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightLowCheekAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.lowCheekPronounced - 0.5f) * -0.035f, -0.07f, 0.035f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.lowCheekPosition - 0.5f) * 0.06f, -0.06f, 0.06f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("NoseTopAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("NoseTopAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.025f + (umaDna.foreheadSize - 0.5f) * -0.0015f, -0.015f, 0.0025f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftEyebrowLowAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftEyebrowLowAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.02f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.015f, 0.005f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftEyebrowMiddleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftEyebrowMiddleAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.04f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.025f, 0.005f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftEyebrowUpAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftEyebrowUpAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.007f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.010f, 0.005f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightEyebrowLowAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightEyebrowLowAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.02f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.015f, 0.005f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightEyebrowMiddleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightEyebrowMiddleAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.04f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.025f, 0.005f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightEyebrowUpAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightEyebrowUpAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.007f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.010f, 0.005f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LipsSuperiorAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("LipsInferiorAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 1.0f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 1.0f, 0.65f, 1.5f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftLipsSuperiorMiddleAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightLipsSuperiorMiddleAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftLipsInferiorAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightLipsInferiorAdjust"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
-			  Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LipsInferiorAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LipsInferiorAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftLipsAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftLipsAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.03f, -0.02f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightLipsAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightLipsAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.03f, -0.005f, 0.02f),
-				Mathf.Clamp(0, -0.05f, 0.05f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftLipsSuperiorMiddleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftLipsSuperiorMiddleAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.007f, -0.02f, 0.005f),
-				Mathf.Clamp(0, -0.05f, 0.05f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightLipsSuperiorMiddleAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightLipsSuperiorMiddleAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.007f, -0.005f, 0.02f),
-				Mathf.Clamp(0, -0.05f, 0.05f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftLipsInferiorAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftLipsInferiorAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.007f, -0.02f, 0.005f),
-				Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightLipsInferiorAdjust"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightLipsInferiorAdjust")) +
-		  new Vector3(
-				Mathf.Clamp(0, -0.05f, 0.05f),
-				Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.007f, -0.005f, 0.02f),
-				Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
-
-
+
+		skeleton.SetPosition(leftEarAdjustHash,
+		                     skeleton.GetPosition(leftEarAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.01f, -0.01f, 0.01f),
+			Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.03f, -0.03f, 0.03f),
+			Mathf.Clamp(0 + (umaDna.earsPosition - 0.5f) * 0.02f, -0.02f, 0.02f)));
+		skeleton.SetPosition(rightEarAdjustHash,
+		                     skeleton.GetPosition(rightEarAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * -0.01f, -0.01f, 0.01f),
+			Mathf.Clamp(0 + (umaDna.headWidth - 0.5f) * 0.03f, -0.03f, 0.03f),
+			Mathf.Clamp(0 + (umaDna.earsPosition - 0.5f) * 0.02f, -0.02f, 0.02f)));
+
+		skeleton.SetRotation(leftEarAdjustHash,
+		                     Quaternion.Euler(new Vector3(
+			Mathf.Clamp(0, -30, 80),
+			Mathf.Clamp(0, -30, 80),
+			Mathf.Clamp((umaDna.earsRotation - 0.5f) * 40, -15, 40))));
+		skeleton.SetRotation(rightEarAdjustHash,
+		                     Quaternion.Euler(new Vector3(
+			Mathf.Clamp(0, -30, 80),
+			Mathf.Clamp(0, -30, 80),
+			Mathf.Clamp((umaDna.earsRotation - 0.5f) * -40, -40, 15))));
+
+		skeleton.SetScale(noseBaseAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 1.5f, 0.4f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 0.15f + (umaDna.noseWidth - 0.5f) * 1.0f, 0.25f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.noseSize - 0.5f) * 0.15f + (umaDna.noseFlatten - 0.5f) * 0.75f, 0.25f, 3.0f)));
+		skeleton.SetScale(noseMiddleAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 1.9f + (umaDna.noseSize - 0.5f) * 1.0f, 0.5f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 0.15f + (umaDna.noseSize - 0.5f) * 0.25f + (umaDna.noseWidth - 0.5f) * 0.5f, 0.5f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.noseCurve - 0.5f) * 0.15f + (umaDna.noseSize - 0.5f) * 0.10f, 0.5f, 3.0f)));
+		skeleton.SetRotation(noseBaseAdjustHash,
+		                     Quaternion.Euler(new Vector3(
+			Mathf.Clamp(0, -30, 80),
+			Mathf.Clamp((umaDna.noseInclination - 0.5f) * 60, -60, 30),
+			Mathf.Clamp(0, -30, 80))));
+		skeleton.SetPosition(noseBaseAdjustHash,
+		                     skeleton.GetPosition(noseBaseAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
+		skeleton.SetPosition(noseMiddleAdjustHash,
+		                     skeleton.GetPosition(noseBaseAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.006f, -0.012f, 0.012f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.007f, -0.015f, 0.015f)));
+
+		skeleton.SetPosition(leftNoseAdjustHash,
+		                     skeleton.GetPosition(leftNoseAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
+		skeleton.SetPosition(rightNoseAdjustHash,
+		                     skeleton.GetPosition(rightNoseAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.nosePronounced - 0.5f) * -0.0125f, -0.025f, 0.025f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0125f, -0.025f, 0.025f)));
+
+		skeleton.SetPosition(upperLipsAdjustHash,
+		                     skeleton.GetPosition(upperLipsAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.nosePosition - 0.5f) * 0.0045f, -0.0045f, 0.0045f)));
+
+		skeleton.SetScale(mandibleAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.chinPronounced - 0.5f) * 0.18f, 0.55f, 1.75f),
+			Mathf.Clamp(1 + (umaDna.chinSize - 0.5f) * 1.3f, 0.75f, 1.3f),
+			Mathf.Clamp(1, 0.4f, 1.5f)));
+		skeleton.SetPosition(mandibleAdjustHash,
+		                     skeleton.GetPosition(mandibleAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.0125f, 0.0125f),
+			Mathf.Clamp(0, -0.0125f, 0.0125f),
+			Mathf.Clamp(0 + (umaDna.chinPosition - 0.5f) * 0.0075f, -0.0075f, 0.0075f)));
+
+		skeleton.SetPosition(leftLowMaxilarAdjustHash,
+		                     skeleton.GetPosition(leftLowMaxilarAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.jawsSize - 0.5f) * 0.025f, -0.025f, 0.025f),
+			Mathf.Clamp(0 + (umaDna.jawsPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
+		skeleton.SetPosition(rightLowMaxilarAdjustHash,
+		                     skeleton.GetPosition(rightLowMaxilarAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.jawsSize - 0.5f) * -0.025f, -0.025f, 0.025f),
+			Mathf.Clamp(0 + (umaDna.jawsPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
+
+		skeleton.SetScale(leftCheekAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f)));
+		skeleton.SetScale(rightCheekAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f),
+			Mathf.Clamp(1 + (umaDna.cheekSize - 0.5f) * 1.05f, 0.35f, 2.05f)));
+		skeleton.SetPosition(leftCheekAdjustHash,
+		                     skeleton.GetPosition(leftCheekAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.cheekPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
+		skeleton.SetPosition(rightCheekAdjustHash,
+		                     skeleton.GetPosition(rightCheekAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.cheekPosition - 0.5f) * 0.03f, -0.03f, 0.03f)));
+
+		skeleton.SetPosition(leftLowCheekAdjustHash,
+		                     skeleton.GetPosition(leftLowCheekAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.lowCheekPronounced - 0.5f) * -0.035f, -0.07f, 0.035f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.lowCheekPosition - 0.5f) * 0.06f, -0.06f, 0.06f)));
+		skeleton.SetPosition(rightLowCheekAdjustHash,
+		                     skeleton.GetPosition(rightLowCheekAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.lowCheekPronounced - 0.5f) * -0.035f, -0.07f, 0.035f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.lowCheekPosition - 0.5f) * 0.06f, -0.06f, 0.06f)));
+
+		skeleton.SetPosition(noseTopAdjustHash,
+		                     skeleton.GetPosition(noseTopAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.025f + (umaDna.foreheadSize - 0.5f) * -0.0015f, -0.015f, 0.0025f)));
+
+		skeleton.SetPosition(leftEyebrowLowAdjustHash,
+		                     skeleton.GetPosition(leftEyebrowLowAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.02f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.015f, 0.005f)));
+		skeleton.SetPosition(leftEyebrowMiddleAdjustHash,
+		                     skeleton.GetPosition(leftEyebrowMiddleAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.04f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.025f, 0.005f)));
+		skeleton.SetPosition(leftEyebrowUpAdjustHash,
+		                     skeleton.GetPosition(leftEyebrowUpAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.007f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.010f, 0.005f)));
+
+		skeleton.SetPosition(rightEyebrowLowAdjustHash,
+		                     skeleton.GetPosition(rightEyebrowLowAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.02f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.015f, 0.005f)));
+		skeleton.SetPosition(rightEyebrowMiddleAdjustHash,
+		                     skeleton.GetPosition(rightEyebrowMiddleAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.04f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.025f, 0.005f)));
+		skeleton.SetPosition(rightEyebrowUpAdjustHash,
+		                     skeleton.GetPosition(rightEyebrowUpAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0 + (umaDna.foreheadSize - 0.5f) * -0.015f, -0.025f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.foreheadPosition - 0.5f) * -0.007f + (umaDna.foreheadSize - 0.5f) * -0.005f, -0.010f, 0.005f)));
+
+		skeleton.SetScale(lipsSuperiorAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
+		skeleton.SetScale(lipsInferiorAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 1.0f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 1.0f, 0.65f, 1.5f)));
+
+		skeleton.SetScale(leftLipsSuperiorMiddleAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
+		skeleton.SetScale(rightLipsSuperiorMiddleAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
+		skeleton.SetScale(leftLipsInferiorAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
+		skeleton.SetScale(rightLipsInferiorAdjustHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.05f, 1.0f, 1.05f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f),
+			Mathf.Clamp(1 + (umaDna.lipsSize - 0.5f) * 0.9f, 0.65f, 1.5f)));
+
+		skeleton.SetPosition(lipsInferiorAdjustHash,
+		                     skeleton.GetPosition(lipsInferiorAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
+
+		skeleton.SetPosition(leftLipsAdjustHash,
+		                     skeleton.GetPosition(leftLipsAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.03f, -0.02f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f)));
+		skeleton.SetPosition(rightLipsAdjustHash,
+		                     skeleton.GetPosition(rightLipsAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.03f, -0.005f, 0.02f),
+			Mathf.Clamp(0, -0.05f, 0.05f)));
+
+		skeleton.SetPosition(leftLipsSuperiorMiddleAdjustHash,
+		                     skeleton.GetPosition(leftLipsSuperiorMiddleAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.007f, -0.02f, 0.005f),
+			Mathf.Clamp(0, -0.05f, 0.05f)));
+		skeleton.SetPosition(rightLipsSuperiorMiddleAdjustHash,
+		                     skeleton.GetPosition(rightLipsSuperiorMiddleAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.007f, -0.005f, 0.02f),
+			Mathf.Clamp(0, -0.05f, 0.05f)));
+		skeleton.SetPosition(leftLipsInferiorAdjustHash,
+		                     skeleton.GetPosition(leftLipsInferiorAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * 0.007f, -0.02f, 0.005f),
+			Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
+		skeleton.SetPosition(rightLipsInferiorAdjustHash,
+		                     skeleton.GetPosition(rightLipsInferiorAdjustHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -0.05f, 0.05f),
+			Mathf.Clamp(0 + (umaDna.mouthSize - 0.5f) * -0.007f, -0.005f, 0.02f),
+			Mathf.Clamp(0 + (umaDna.lipsSize - 0.5f) * -0.008f, -0.1f, 0.1f)));
+
+
 		////Bone structure change
-		skeleton.SetScale(UMASkeleton.StringToHash("Global"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("Position"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("Position")) +
-		  new Vector3(
-				Mathf.Clamp((umaDna.feetSize - 0.5f) * -0.27f, -0.15f, 0.0675f),
-				Mathf.Clamp(0, -10, 10),
-				Mathf.Clamp(0, -10, 10)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LowerBack"),
-		  new Vector3(
-			  Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
-			  Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("Head"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2),
-			  Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2),
-			  Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftArm"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightArm"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftForeArm"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightForeArm"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftHand"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightHand"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("LeftFoot"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
-		skeleton.SetScale(UMASkeleton.StringToHash("RightFoot"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
-			  Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftUpLeg"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftUpLeg")) +
-		  new Vector3(
-				Mathf.Clamp(0, -10, 10),
-				Mathf.Clamp((umaDna.legSeparation - 0.5f) * -0.15f + (umaDna.lowerWeight - 0.5f) * -0.035f + (umaDna.legsSize - 0.5f) * 0.1f, -0.055f, 0.055f),
-				Mathf.Clamp(0, -10, 10)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightUpLeg"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightUpLeg")) +
-		  new Vector3(
-				Mathf.Clamp(0, -10, 10),
-				Mathf.Clamp((umaDna.legSeparation - 0.5f) * 0.15f + (umaDna.lowerWeight - 0.5f) * 0.035f + (umaDna.legsSize - 0.5f) * -0.1f, -0.025f, 0.025f),
-				Mathf.Clamp(0, -10, 10)));
-
-		skeleton.SetPosition(UMASkeleton.StringToHash("LeftShoulder"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("LeftShoulder")) +
-		  new Vector3(
-				Mathf.Clamp(0, -10, 10),
-				Mathf.Clamp((umaDna.upperMuscle - 0.5f) * -0.0235f, -0.025f, 0.015f),
-				Mathf.Clamp(0, -10, 10)));
-		skeleton.SetPosition(UMASkeleton.StringToHash("RightShoulder"),
-			skeleton.GetPosition(UMASkeleton.StringToHash("RightShoulder")) +
-		  new Vector3(
-				Mathf.Clamp(0, -10, 10),
-				Mathf.Clamp((umaDna.upperMuscle - 0.5f) * 0.0235f, -0.015f, 0.025f),
-				Mathf.Clamp(0, -10, 10)));
-
-		skeleton.SetScale(UMASkeleton.StringToHash("Mandible"),
-		  new Vector3(
-			  Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f),
-			  Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f)));
-    }
-
-
+		skeleton.SetScale(globalHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
+			Mathf.Clamp(1 + (umaDna.height - 0.5f) * 1.0f + (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f)));
+
+		skeleton.SetPosition(positionHash,
+		                     skeleton.GetPosition(positionHash) +
+		                     new Vector3(
+			Mathf.Clamp((umaDna.feetSize - 0.5f) * -0.27f, -0.15f, 0.0675f),
+			Mathf.Clamp(0, -10, 10),
+			Mathf.Clamp(0, -10, 10)));
+
+		skeleton.SetScale(lowerBackHash,
+		                  new Vector3(
+			Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
+			Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f),
+			Mathf.Clamp(1 - (umaDna.legsSize - 0.5f) * 1.0f, 0.5f, 3.0f)));
+
+		skeleton.SetScale(headHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2),
+			Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2),
+			Mathf.Clamp(1 + (umaDna.headSize - 0.5f) * 2.0f, 0.5f, 2)));
+
+		skeleton.SetScale(leftArmHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
+		skeleton.SetScale(rightArmHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.armLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
+
+		skeleton.SetScale(leftForeArmHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
+		skeleton.SetScale(rightForeArmHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.forearmLength - 0.5f) * 2.0f, 0.5f, 2.0f)));
+
+		skeleton.SetScale(leftHandHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
+		skeleton.SetScale(rightHandHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.handsSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
+
+		skeleton.SetScale(leftFootHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
+		skeleton.SetScale(rightFootHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f),
+			Mathf.Clamp(1 + (umaDna.feetSize - 0.5f) * 2.0f, 0.5f, 2.0f)));
+
+		skeleton.SetPosition(leftUpLegHash,
+		                     skeleton.GetPosition(leftUpLegHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -10, 10),
+			Mathf.Clamp((umaDna.legSeparation - 0.5f) * -0.15f + (umaDna.lowerWeight - 0.5f) * -0.035f + (umaDna.legsSize - 0.5f) * 0.1f, -0.055f, 0.055f),
+			Mathf.Clamp(0, -10, 10)));
+		skeleton.SetPosition(rightUpLegHash,
+		                     skeleton.GetPosition(rightUpLegHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -10, 10),
+			Mathf.Clamp((umaDna.legSeparation - 0.5f) * 0.15f + (umaDna.lowerWeight - 0.5f) * 0.035f + (umaDna.legsSize - 0.5f) * -0.1f, -0.025f, 0.025f),
+			Mathf.Clamp(0, -10, 10)));
+
+		skeleton.SetPosition(leftShoulderHash,
+		                     skeleton.GetPosition(leftShoulderHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -10, 10),
+			Mathf.Clamp((umaDna.upperMuscle - 0.5f) * -0.0235f, -0.025f, 0.015f),
+			Mathf.Clamp(0, -10, 10)));
+		skeleton.SetPosition(rightShoulderHash,
+		                     skeleton.GetPosition(rightShoulderHash) +
+		                     new Vector3(
+			Mathf.Clamp(0, -10, 10),
+			Mathf.Clamp((umaDna.upperMuscle - 0.5f) * 0.0235f, -0.015f, 0.025f),
+			Mathf.Clamp(0, -10, 10)));
+
+		skeleton.SetScale(mandibleHash,
+		                  new Vector3(
+			Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f),
+			Mathf.Clamp(1 + (umaDna.mandibleSize - 0.5f) * 0.35f, 0.35f, 1.35f)));
+	}
 }


RaiseItemsUpdated: moved to DataSeries class.

--- YetAnotherChartComponent/YetAnotherChartComponent/Series/ColumnSeries.cs
+++ YetAnotherChartComponent/YetAnotherChartComponent/Series/ColumnSeries.cs
@@ -162,24 +162,6 @@
 			var rg = (st as ItemState<Path>).Element.Data as RectangleGeometry;
 			rg.Rect = new Rect(new Point(st.XValueAfterOffset, rg.Rect.Top), new Point(st.XValueAfterOffset + BarWidth, rg.Rect.Bottom));
 		}
-		/// <summary>
-		/// Invoke the items update event, trapping and reporting any <see cref="Exception"/> via <see cref="IChartErrorInfo"/>.
-		/// </summary>
-		/// <param name="icrc">Passed to args.</param>
-		/// <param name="ncca">Passed to args.</param>
-		/// <param name="startAt">Passed to args.</param>
-		/// <param name="reproc">Passed to args.</param>
-		void RaiseItemsUpdated(IChartRenderContext icrc, NotifyCollectionChangedAction ncca, int startAt, List<ItemState<Path>> reproc) {
-			try {
-				var args = new SeriesItemUpdateEventArgs(icrc, ncca, startAt, reproc);
-				ItemUpdates?.Invoke(this, args);
-			} catch (Exception ex) {
-				_trace.Error($"{Name} SeriesItemUpdate({ncca}).unhandled: {ex.Message}");
-				if (icrc is IChartErrorInfo icei) {
-					icei.Report(new ChartValidationResult(NameOrType(), $"SeriesItemUpdate({ncca}) failed: {ex.Message}"));
-				}
-			}
-		}
 		#endregion
 		#region IRequireEnterLeave
 		/// <summary>
@@ -315,7 +297,7 @@
 			// finish up
 			Layer.Remove(reproc.Select(xx => xx.Element).Where(el => el != null));
 			Dirty = false;
-			RaiseItemsUpdated(icrc, NotifyCollectionChangedAction.Remove, startAt, reproc);
+			RaiseItemsUpdated(ItemUpdates, icrc, NotifyCollectionChangedAction.Remove, startAt, reproc);
 		}
 		void IRequireDataSourceUpdates.Add(IChartRenderContext icrc, int startAt, IList items) {
 			if (CategoryAxis == null || ValueAxis == null) return;
@@ -336,7 +318,7 @@
 			// finish up
 			Layer.Add(recycler.Created);
 			Dirty = false;
-			RaiseItemsUpdated(icrc, NotifyCollectionChangedAction.Add, startAt, reproc);
+			RaiseItemsUpdated(ItemUpdates, icrc, NotifyCollectionChangedAction.Add, startAt, reproc);
 		}
 		#endregion
 	}


Dodanie metody prywatnej GetUser, skrócenie kodu, dostosowanie do nowej metody. Dodanie do AudiogramController nowego pola ApplicationDbContext.

--- SerwisAudiometryczny/SerwisAudiometryczny/Controllers/AudiogramController.cs
+++ SerwisAudiometryczny/SerwisAudiometryczny/Controllers/AudiogramController.cs
@@ -26,15 +26,18 @@
     public class AudiogramController : Controller
     {
         private ModelsDbContext db;
+        private ApplicationDbContext datab;

         public AudiogramController()
         {
             db = new ModelsDbContext();
-        }
-
-        public AudiogramController(ModelsDbContext dbContext)
+            datab = new ApplicationDbContext();
+        }
+
+        public AudiogramController(ModelsDbContext dbContext, ApplicationDbContext appDbContext)
         {
             db = dbContext;
+            datab = appDbContext;
         }

         public ActionResult Search()
@@ -127,15 +130,20 @@
             return View(results.OrderByDescending(x => x.ID).ToList());

         }
+
+        private ApplicationUser GetUser()
+        {
+            int userid = User.Identity.GetUserId<int>();
+            return datab.Users.FirstOrDefault(x => x.Id == userid);
+        }
+
         /// <summary>
         /// Metoda wyświetlająca wszystkie dostępne użytkownikowi audiogramy.
         /// </summary>
         /// <param name="page"></param>
         public ActionResult Index(int? page)
         {
-            var datab = ApplicationDbContext.Create();
-            int userid = User.Identity.GetUserId<int>();
-            ApplicationUser CurrentUser = datab.Users.FirstOrDefault(x => x.Id == userid);
+            ApplicationUser CurrentUser = GetUser();

             if (CurrentUser != null)
             {
@@ -146,21 +154,21 @@
                 if (CurrentUser.User && CurrentUser.Patient)
                 {
                     var results = from t in db.AudiogramModels
-                                  where t.EditorID == userid || t.PatientID == userid
+                                  where t.EditorID == CurrentUser.Id || t.PatientID == CurrentUser.Id
                                   select t;
                     return View(results.ToList());
                 }
                 if (CurrentUser.User)
                 {
                     var results = from t in db.AudiogramModels
-                                  where t.EditorID == userid
+                                  where t.EditorID == CurrentUser.Id
                                   select t;
                     return View(results.ToList());
                 }
                 if (CurrentUser.Patient)
                 {
                     var results = from t in db.AudiogramModels
-                                  where t.PatientID == userid
+                                  where t.PatientID == CurrentUser.Id
                                   select t;
                     return View(results.ToList());
                 }
@@ -178,9 +186,7 @@
             {
                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
             }
-            var datab = ApplicationDbContext.Create();
-            int userid = User.Identity.GetUserId<int>();
-            ApplicationUser CurrentUser = datab.Users.FirstOrDefault(x => x.Id == userid);
+            ApplicationUser CurrentUser = GetUser();

             AudiogramModel audiogramModel = db.AudiogramModels.Find(id);
             if (audiogramModel == null)
@@ -220,9 +226,7 @@
         /// </summary>
         public ActionResult Create()
         {
-            var datab = ApplicationDbContext.Create();
-            int userid = User.Identity.GetUserId<int>();
-            ApplicationUser CurrentUser = datab.Users.FirstOrDefault(x => x.Id == userid);
+            ApplicationUser CurrentUser = GetUser();

             if (CurrentUser != null && CurrentUser.User)
             {
@@ -313,9 +317,7 @@
             {
                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
             }
-            var datab = ApplicationDbContext.Create();
-            int userid = User.Identity.GetUserId<int>();
-            ApplicationUser CurrentUser = datab.Users.FirstOrDefault(x => x.Id == userid);
+            ApplicationUser CurrentUser = GetUser();

             if (CurrentUser != null && CurrentUser.User)
             {
@@ -401,9 +403,7 @@
             {
                 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
             }
-            var datab = ApplicationDbContext.Create();
-            int userid = User.Identity.GetUserId<int>();
-            ApplicationUser CurrentUser = datab.Users.FirstOrDefault(x => x.Id == userid);
+            ApplicationUser CurrentUser = GetUser();

             AudiogramModel audiogramModel = db.AudiogramModels.Find(id);
             if (CurrentUser != null && (CurrentUser.User && CurrentUser.Id == audiogramModel.EditorID))


updates tests for IneratcionRequestTrigger

--- Source/Wpf/Prism.Wpf.Tests/Interactivity/InteractionRequestTriggerFixture.cs
+++ Source/Wpf/Prism.Wpf.Tests/Interactivity/InteractionRequestTriggerFixture.cs
@@ -46,76 +46,6 @@
             request.Raise(new Notification());
             Assert.IsTrue(action.ExecutionCount == 1);
         }
-
-        [TestMethod]
-        public void WhenAssociatedObjectIsUnloaded_ShouldNotReactToEventBeingRaised()
-        {
-            InteractionRequest<INotification> request = new InteractionRequest<INotification>();
-            TestableInteractionRequestTrigger trigger = new TestableInteractionRequestTrigger();
-            MockFrameworkElement associatedObject = new MockFrameworkElement();
-
-            trigger.Attach(associatedObject);
-            trigger.SourceObject = request;
-
-            Assert.IsTrue(trigger.ExecutionCount == 0);
-
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 1);
-
-            associatedObject.RaiseUnloaded();
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 1);
-
-            trigger.Detach();
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 1);
-        }
-
-        [TestMethod]
-        public void WhenAssociatedObjectIsReloaded_ShouldReactToEventBeingRaisedAgain()
-        {
-            InteractionRequest<INotification> request = new InteractionRequest<INotification>();
-            TestableInteractionRequestTrigger trigger = new TestableInteractionRequestTrigger();
-            MockFrameworkElement associatedObject = new MockFrameworkElement();
-
-            trigger.Attach(associatedObject);
-            trigger.SourceObject = request;
-
-            Assert.IsTrue(trigger.ExecutionCount == 0);
-
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 1);
-
-            associatedObject.RaiseUnloaded();
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 1);
-
-            associatedObject.RaiseLoaded();
-            request.Raise(new Notification());
-            Assert.IsTrue(trigger.ExecutionCount == 2);
-        }
-
-        [TestMethod]
-        public void WhenAssociatedObjectIsUnloadedAndDiscarded_ShouldBeGarbageCollected()
-        {
-            InteractionRequest<INotification> request = new InteractionRequest<INotification>();
-            TestableInteractionRequestTrigger trigger = new TestableInteractionRequestTrigger();
-            MockFrameworkElement associatedObject = new MockFrameworkElement();
-
-            trigger.Attach(associatedObject);
-            trigger.SourceObject = request;
-
-            WeakReference weakTrigger = new WeakReference(trigger);
-            trigger = null;
-
-            GC.Collect();
-            Assert.IsTrue(weakTrigger.IsAlive);
-
-            associatedObject.RaiseUnloaded();
-            associatedObject = null;
-            GC.Collect();
-            Assert.IsFalse(weakTrigger.IsAlive);
-        }
     }

     public class TestableInteractionRequestTrigger : InteractionRequestTrigger


Rename ReplaceKeywords to ReplaceKeyword

--- StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1205CodeFixProvider.cs
+++ StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1205CodeFixProvider.cs
@@ -60,7 +60,7 @@

             var replacementModifiers = TypeDeclarationSyntaxHelper.AddModifier(typeDeclarationNode.Modifiers, ref keywordToken, accessModifierKind);
             var replacementNode = ReplaceModifiers(typeDeclarationNode, replacementModifiers);
-            replacementNode = ReplaceKeywords(replacementNode, keywordToken);
+            replacementNode = ReplaceKeyword(replacementNode, keywordToken);
             var newSyntaxRoot = syntaxRoot.ReplaceNode(typeDeclarationNode, replacementNode);
             return document.WithSyntaxRoot(newSyntaxRoot);
         }
@@ -82,7 +82,7 @@
         }

         // This code was copied from the Roslyn codebase (and slightly modified). It can be removed if TypeDeclarationSyntaxExtensions.WithModifiers is made public (roslyn issue #2186)
-        private static TypeDeclarationSyntax ReplaceKeywords(TypeDeclarationSyntax node, SyntaxToken keyword)
+        private static TypeDeclarationSyntax ReplaceKeyword(TypeDeclarationSyntax node, SyntaxToken keyword)
         {
             switch (node.Kind())
             {


Cleanup Trading Economics Calendar Downloader code

* Check for invalid values in ParseDecimal to prevent crashes

--- ToolBox/TradingEconomicsDataDownloader/TradingEconomicsCalendarDownloader.cs
+++ ToolBox/TradingEconomicsDataDownloader/TradingEconomicsCalendarDownloader.cs
@@ -264,28 +264,36 @@
                 return null;
             }

+            // Return null If we can't parse the result as is
+            decimal finalFigure;
+            if (!decimal.TryParse(newFigure, NumberStyles.Any, CultureInfo.InvariantCulture, out finalFigure))
+            {
+                Log.Error($"TradingEconomicsCalendarDownloader.ParseDecimal(): Failed to parse the figure {value}. Final form before parsing: {newFigure}");
+                return null;
+            }
+
             if (inPercent)
             {
-                return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture) / 100m;
-            }
-            else if (inTrillions)
-            {
-                return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture) * 1000000000000m;
-            }
-            else if (inBillions)
-            {
-                return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture) * 1000000000m;
-            }
-            else if (inMillions)
-            {
-                return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture) * 1000000m;
-            }
-            else if (inThousands)
-            {
-                return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture) * 1000m;
-            }
-
-            return Convert.ToDecimal(newFigure, CultureInfo.InvariantCulture);
+                return finalFigure / 100m;
+            }
+            if (inTrillions)
+            {
+                return finalFigure * 1000000000000m;
+            }
+            if (inBillions)
+            {
+                return finalFigure * 1000000000m;
+            }
+            if (inMillions)
+            {
+                return finalFigure * 1000000m;
+            }
+            if (inThousands)
+            {
+                return finalFigure * 1000m;
+            }
+
+            return finalFigure;
         }
     }
 }


9409.1

--- a_mini/projects/PixelFarm/Typography/Typography.OpenFont/IGlyphTranslator.cs
+++ a_mini/projects/PixelFarm/Typography/Typography.OpenFont/IGlyphTranslator.cs
@@ -125,7 +125,19 @@

                 for (; cpoint_index < nextCntBeginAtIndex; ++cpoint_index)
-                {    //for each point in this contour
+                {
+                    //for each point in this contour
+
+                    //point p is an on-curve point (on outline). (not curve control point)
+                    //possible ways..
+                    //1. if we are in curve mode, then p is end point
+                    //   we must decide which curve to create (Curve3 or Curve4)
+                    //   easy, ...
+                    //      if  curveControlPointCount == 1 , then create Curve3
+                    //      else curveControlPointCount ==2 , then create Curve4
+                    //2. if we are NOT in curve mode,
+                    //      if p is first point then set this to x0,y0
+                    //      else then p is end point of a line.

                     GlyphPointF p = glyphPoints[cpoint_index];
                     float p_x = p.X * scale;
@@ -203,8 +215,7 @@
                                         has_c_begin = true;
                                         //since c1 is off curve
                                         //we skip the c1 for and use it when we close the curve
-                                        //tx.MoveTo(latest_moveto_x = c1.X, latest_moveto_y = c1.Y);
-                                        //tx.LineTo(p_x, p_y);
+
                                         tx.MoveTo(latest_moveto_x = p_x, latest_moveto_y = p_y);
                                         curveControlPointCount--;
                                         break;
@@ -322,16 +333,16 @@
                             }
                             break;
                         default:
-                            {//for TrueType font
-                                //we should not be here?
-                                throw new NotSupportedException();
-                            }
+                            //for TrueType font
+                            //we should not be here?
+                            throw new NotSupportedException();
+
                     }
                     //reset
                     offCurveMode = false;
                     curveControlPointCount = 0;
                 }
-
+
                 //--------
                 tx.CloseContour(); //***
                 startContour++;