Decompiled source of LethalCompanyVR v1.3.8

BepInEx/patchers/LCVR/LCVR.Preload.dll

Decompiled 5 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using Mono.Cecil;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DaXcess")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCopyright("Copyright (c) DaXcess 2024")]
[assembly: AssemblyDescription("LCVR Preloader")]
[assembly: AssemblyFileVersion("1.3.8.0")]
[assembly: AssemblyInformationalVersion("1.3.8+f66306c6f3c3044caf5cf1864df036b56e02897a")]
[assembly: AssemblyProduct("LCVR.Preload")]
[assembly: AssemblyTitle("LCVR.Preload")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/DaXcess/LCVR")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.3.8.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace LCVR.Preload
{
	public static class Preload
	{
		private const string VR_MANIFEST = "{\n  \"name\": \"OpenXR XR Plugin\",\n  \"version\": \"1.8.2\",\n  \"libraryName\": \"UnityOpenXR\",\n  \"displays\": [\n    {\n      \"id\": \"OpenXR Display\"\n    }\n  ],\n  \"inputs\": [\n    {\n      \"id\": \"OpenXR Input\"\n    }\n  ]\n}";

		private static readonly ManualLogSource Logger = Logger.CreateLogSource("LCVR.Preload");

		public static IEnumerable<string> TargetDLLs { get; } = Array.Empty<string>();


		public static void Initialize()
		{
			Logger.LogInfo((object)"Setting up VR runtime assets");
			SetupRuntimeAssets();
			Logger.LogInfo((object)"We're done here. Goodbye!");
		}

		private static void SetupRuntimeAssets()
		{
			string path = Path.Combine(Paths.GameRootPath, "Lethal Company_Data");
			string text = Path.Combine(path, "UnitySubsystems");
			if (!Directory.Exists(text))
			{
				Directory.CreateDirectory(text);
			}
			string text2 = Path.Combine(text, "UnityOpenXR");
			if (!Directory.Exists(text2))
			{
				Directory.CreateDirectory(text2);
			}
			string path2 = Path.Combine(text2, "UnitySubsystemsManifest.json");
			if (!File.Exists(path2))
			{
				File.WriteAllText(path2, "{\n  \"name\": \"OpenXR XR Plugin\",\n  \"version\": \"1.8.2\",\n  \"libraryName\": \"UnityOpenXR\",\n  \"displays\": [\n    {\n      \"id\": \"OpenXR Display\"\n    }\n  ],\n  \"inputs\": [\n    {\n      \"id\": \"OpenXR Input\"\n    }\n  ]\n}");
			}
			string path3 = Path.Combine(path, "Plugins");
			string destinationFile = Path.Combine(path3, "UnityOpenXR.dll");
			string destinationFile2 = Path.Combine(path3, "openxr_loader.dll");
			string? directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
			string sourceFile = Path.Combine(directoryName, "RuntimeDeps/UnityOpenXR.dll");
			string sourceFile2 = Path.Combine(directoryName, "RuntimeDeps/openxr_loader.dll");
			if (!CopyResourceFile(sourceFile, destinationFile))
			{
				Logger.LogWarning((object)"Could not find plugin UnityOpenXR.dll, VR might not work!");
			}
			if (!CopyResourceFile(sourceFile2, destinationFile2))
			{
				Logger.LogWarning((object)"Could not find plugin openxr_loader.dll, VR might not work!");
			}
		}

		private static bool CopyResourceFile(string sourceFile, string destinationFile)
		{
			if (!File.Exists(sourceFile))
			{
				return false;
			}
			if (File.Exists(destinationFile))
			{
				byte[] first = Utils.ComputeHash(File.ReadAllBytes(sourceFile));
				byte[] second = Utils.ComputeHash(File.ReadAllBytes(destinationFile));
				if (first.SequenceEqual(second))
				{
					return true;
				}
			}
			File.Copy(sourceFile, destinationFile, overwrite: true);
			return true;
		}

		public static void Patch(AssemblyDefinition assembly)
		{
		}
	}
	public static class Utils
	{
		public static byte[] ComputeHash(byte[] input)
		{
			using SHA256 sHA = SHA256.Create();
			return sHA.ComputeHash(input);
		}
	}
}

BepInEx/plugins/LCVR/LCVR.dll

Decompiled 5 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using CullFactory.Data;
using CullFactory.Extenders;
using Dissonance;
using Dissonance.Integrations.Unity_NFGO;
using Dissonance.Networking;
using Diversity.Misc;
using GameNetcodeStuff;
using HarmonyLib;
using JetBrains.Annotations;
using LCVR.Assets;
using LCVR.Compatibility.MoreCompany;
using LCVR.Experiments;
using LCVR.Input;
using LCVR.Items;
using LCVR.Networking;
using LCVR.Patches;
using LCVR.Physics;
using LCVR.Physics.Interactions;
using LCVR.Physics.Interactions.Car;
using LCVR.Player;
using LCVR.Rendering;
using LCVR.UI;
using LCVR.UI.Settings;
using Microsoft.CodeAnalysis;
using Microsoft.MixedReality.Toolkit.Experimental.UI;
using MoreCompany.Cosmetics;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using TMPro;
using Unity.Netcode;
using Unity.XR.CoreUtils;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Animations.Rigging;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Experimental.Rendering;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.UI;
using UnityEngine.InputSystem.XR;
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.UI;
using UnityEngine.XR;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR.Interaction.Toolkit.UI;
using UnityEngine.XR.Management;
using UnityEngine.XR.OpenXR;
using UnityEngine.XR.OpenXR.Features;
using UnityEngine.XR.OpenXR.Features.Interactions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DaXcess")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCopyright("Copyright (c) DaXcess 2024")]
[assembly: AssemblyDescription("Collecting Scrap in VR")]
[assembly: AssemblyFileVersion("1.3.8.0")]
[assembly: AssemblyInformationalVersion("1.3.8+f66306c6f3c3044caf5cf1864df036b56e02897a")]
[assembly: AssemblyProduct("LCVR")]
[assembly: AssemblyTitle("LCVR")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/DaXcess/LCVR")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.3.8.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace Microsoft.MixedReality.Toolkit.Experimental.UI
{
	public class CapsLockHighlight : MonoBehaviour
	{
		[SerializeField]
		private Image m_Highlight;

		private NonNativeKeyboard m_Keyboard;

		private void Start()
		{
			m_Keyboard = ((Component)this).GetComponentInParent<NonNativeKeyboard>();
			UpdateState();
		}

		private void Update()
		{
			UpdateState();
		}

		private void UpdateState()
		{
			bool enabled = false;
			if ((Object)(object)m_Keyboard != (Object)null)
			{
				enabled = m_Keyboard.IsCapsLocked;
			}
			if ((Object)(object)m_Highlight != (Object)null)
			{
				((Behaviour)m_Highlight).enabled = enabled;
			}
		}
	}
	[RequireComponent(typeof(Button))]
	public class KeyboardKeyFunc : MonoBehaviour
	{
		public enum Function
		{
			Enter,
			Tab,
			ABC,
			Symbol,
			Previous,
			Next,
			Close,
			Dictate,
			Shift,
			CapsLock,
			Space,
			Backspace,
			Macro,
			UNDEFINED
		}

		private NonNativeKeyboard keyboard;

		[SerializeField]
		[FormerlySerializedAs("m_ButtonFunction")]
		private Function buttonFunction = Function.UNDEFINED;

		[SerializeField]
		[FormerlySerializedAs("m_MacroText")]
		private string macroText;

		public Function ButtonFunction => buttonFunction;

		public string MacroText => macroText;

		private void Awake()
		{
			if ((Object)(object)keyboard == (Object)null)
			{
				keyboard = ((Component)this).GetComponentInParent<NonNativeKeyboard>();
			}
		}

		private void Start()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			Button component = ((Component)this).GetComponent<Button>();
			((UnityEventBase)component.onClick).RemoveAllListeners();
			((UnityEvent)component.onClick).AddListener(new UnityAction(FireFunctionKey));
		}

		private void FireFunctionKey()
		{
			keyboard.FunctionKey(this);
		}
	}
	[RequireComponent(typeof(Button))]
	public class KeyboardValueKey : MonoBehaviour
	{
		private NonNativeKeyboard keyboard;

		public string Value;

		public string ShiftValue;

		private TextMeshProUGUI m_Text;

		private Button m_Button;

		private void Awake()
		{
			if ((Object)(object)keyboard == (Object)null)
			{
				keyboard = ((Component)this).GetComponentInParent<NonNativeKeyboard>();
			}
			m_Button = ((Component)this).GetComponent<Button>();
		}

		private void Start()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			m_Text = ((Component)this).gameObject.GetComponentInChildren<TextMeshProUGUI>();
			((TMP_Text)m_Text).text = Value;
			((UnityEventBase)m_Button.onClick).RemoveAllListeners();
			((UnityEvent)m_Button.onClick).AddListener(new UnityAction(FireAppendValue));
			keyboard.OnKeyboardShifted += Shift;
		}

		private void FireAppendValue()
		{
			keyboard.AppendValue(this);
		}

		public void Shift(bool isShifted)
		{
			if (isShifted && !string.IsNullOrEmpty(ShiftValue))
			{
				((TMP_Text)m_Text).text = ShiftValue;
			}
			else
			{
				((TMP_Text)m_Text).text = Value;
			}
		}
	}
	public class NonNativeKeyboard : MonoBehaviour
	{
		public enum LayoutType
		{
			Alpha,
			Symbol,
			URL,
			Email
		}

		public TMP_InputField InputField;

		public bool SliderEnabled;

		public bool CloseOnEnter = true;

		public bool SubmitOnEnter;

		public Image NumbersKeyboard;

		public Image AlphaKeyboard;

		public Image SymbolKeyboard;

		public Image AlphaSubKeys;

		public Image AlphaWebKeys;

		public Image AlphaMailKeys;

		private LayoutType m_LastKeyboardLayout;

		[Header("Positioning")]
		[SerializeField]
		private float m_MaxScale = 1f;

		[SerializeField]
		private float m_MinScale = 1f;

		[SerializeField]
		private float m_MaxDistance = 3.5f;

		[SerializeField]
		private float m_MinDistance = 0.25f;

		public bool CloseOnInactivity = true;

		public float CloseOnInactivityTime = 15f;

		private float _closingTime;

		private bool m_IsShifted;

		private bool m_IsCapslocked;

		private int m_CaretPosition;

		private Vector3 m_StartingScale = Vector3.one;

		private Vector3 m_ObjectBounds;

		private AudioSource _audioSource;

		public bool IsShifted => m_IsShifted;

		public bool IsCapsLocked => m_IsCapslocked;

		public event EventHandler OnTextSubmitted = delegate
		{
		};

		public event Action<string> OnMacroTriggered = delegate
		{
		};

		public event Action<string> OnTextUpdated = delegate
		{
		};

		public event EventHandler OnClosed = delegate
		{
		};

		public event EventHandler OnPrevious = delegate
		{
		};

		public event EventHandler OnNext = delegate
		{
		};

		public event EventHandler OnPlacement = delegate
		{
		};

		public event Action<bool> OnKeyboardShifted = delegate
		{
		};

		public event Action<KeyboardValueKey> OnKeyboardValueKeyPressed = delegate
		{
		};

		public event Action<KeyboardKeyFunc> OnKeyboardFunctionKeyPressed = delegate
		{
		};

		private void Awake()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			m_StartingScale = ((Component)this).transform.localScale;
			Bounds val = RectTransformUtility.CalculateRelativeRectTransformBounds(((Component)this).transform);
			RectTransform component = ((Component)this).GetComponent<RectTransform>();
			m_ObjectBounds = new Vector3(((Bounds)(ref val)).size.x * ((Transform)component).localScale.x, ((Bounds)(ref val)).size.y * ((Transform)component).localScale.y, ((Bounds)(ref val)).size.z * ((Transform)component).localScale.z);
			((Component)this).gameObject.SetActive(false);
		}

		protected void Start()
		{
			((UnityEvent<string>)(object)InputField.onValueChanged).AddListener((UnityAction<string>)DoTextUpdated);
		}

		private void DoTextUpdated(string value)
		{
			this.OnTextUpdated?.Invoke(value);
		}

		private void UpdateCaretPosition(int newPos)
		{
			InputField.caretPosition = newPos;
		}

		protected void OnDisable()
		{
			m_LastKeyboardLayout = LayoutType.Alpha;
		}

		private void OnDestroy()
		{
		}

		public void PresentKeyboard()
		{
			ResetClosingTime();
			((Component)this).gameObject.SetActive(true);
			ActivateSpecificKeyboard(LayoutType.Alpha);
			this.OnPlacement(this, EventArgs.Empty);
			InputField.ActivateInputField();
		}

		public void PresentKeyboard(string startText)
		{
			PresentKeyboard();
			Clear();
			InputField.text = startText;
		}

		public void PresentKeyboard(LayoutType keyboardType)
		{
			PresentKeyboard();
			ActivateSpecificKeyboard(keyboardType);
		}

		public void PresentKeyboard(string startText, LayoutType keyboardType)
		{
			PresentKeyboard(startText);
			ActivateSpecificKeyboard(keyboardType);
		}

		public void RepositionKeyboard(Vector3 kbPos, float verticalOffset = 0f)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.position = kbPos;
			ScaleToSize();
			LookAtTargetOrigin();
		}

		public void RepositionKeyboard(Transform objectTransform, BoxCollider aCollider = null, float verticalOffset = 0f)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.position = objectTransform.position;
			if ((Object)(object)aCollider != (Object)null)
			{
				Bounds bounds = ((Collider)aCollider).bounds;
				float num = 0f - (((Bounds)(ref bounds)).size.y * 0.5f + verticalOffset);
				((Component)this).transform.Translate(0f, num, -0.6f, objectTransform);
			}
			else
			{
				float num2 = 0f - (m_ObjectBounds.y * 0.5f + verticalOffset);
				((Component)this).transform.Translate(0f, num2, -0.6f, objectTransform);
			}
			ScaleToSize();
			LookAtTargetOrigin();
		}

		private void ScaleToSize()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = ((Component)this).transform.position - ((Component)Camera.main).transform.position;
			float magnitude = ((Vector3)(ref val)).magnitude;
			float num = (magnitude - m_MinDistance) / (m_MaxDistance - m_MinDistance);
			float num2 = m_MinScale + (m_MaxScale - m_MinScale) * num;
			num2 = Mathf.Clamp(num2, m_MinScale, m_MaxScale);
			((Component)this).transform.localScale = m_StartingScale * num2;
			Debug.LogFormat("Setting scale: {0} for distance: {1}", new object[2] { num2, magnitude });
		}

		private void LookAtTargetOrigin()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.LookAt(((Component)Camera.main).transform.position);
			((Component)this).transform.Rotate(Vector3.up, 180f);
		}

		private void ActivateSpecificKeyboard(LayoutType keyboardType)
		{
			DisableAllKeyboards();
			ResetKeyboardState();
			switch (keyboardType)
			{
			case LayoutType.URL:
				ShowAlphaKeyboard();
				TryToShowURLSubkeys();
				break;
			case LayoutType.Email:
				ShowAlphaKeyboard();
				TryToShowEmailSubkeys();
				break;
			case LayoutType.Symbol:
				ShowSymbolKeyboard();
				break;
			default:
				ShowAlphaKeyboard();
				TryToShowAlphaSubkeys();
				break;
			}
		}

		public void AppendValue(KeyboardValueKey valueKey)
		{
			IndicateActivity();
			string text = "";
			this.OnKeyboardValueKeyPressed(valueKey);
			text = ((!m_IsShifted || string.IsNullOrEmpty(valueKey.ShiftValue)) ? valueKey.Value : valueKey.ShiftValue);
			if (!m_IsCapslocked)
			{
				Shift(newShiftState: false);
			}
			m_CaretPosition = InputField.caretPosition;
			InputField.text = InputField.text.Insert(m_CaretPosition, text);
			m_CaretPosition += text.Length;
			UpdateCaretPosition(m_CaretPosition);
		}

		public void FunctionKey(KeyboardKeyFunc functionKey)
		{
			IndicateActivity();
			this.OnKeyboardFunctionKeyPressed(functionKey);
			switch (functionKey.ButtonFunction)
			{
			case KeyboardKeyFunc.Function.Enter:
				Enter();
				break;
			case KeyboardKeyFunc.Function.Tab:
				Tab();
				break;
			case KeyboardKeyFunc.Function.ABC:
				ActivateSpecificKeyboard(m_LastKeyboardLayout);
				break;
			case KeyboardKeyFunc.Function.Symbol:
				ActivateSpecificKeyboard(LayoutType.Symbol);
				break;
			case KeyboardKeyFunc.Function.Previous:
				MoveCaretLeft();
				break;
			case KeyboardKeyFunc.Function.Next:
				MoveCaretRight();
				break;
			case KeyboardKeyFunc.Function.Close:
				Close();
				break;
			case KeyboardKeyFunc.Function.Shift:
				Shift(!m_IsShifted);
				break;
			case KeyboardKeyFunc.Function.CapsLock:
				CapsLock(!m_IsCapslocked);
				break;
			case KeyboardKeyFunc.Function.Space:
				Space();
				break;
			case KeyboardKeyFunc.Function.Backspace:
				Backspace();
				break;
			case KeyboardKeyFunc.Function.Macro:
				Macro(functionKey.MacroText);
				break;
			case KeyboardKeyFunc.Function.UNDEFINED:
				Debug.LogErrorFormat("The {0} key on this keyboard hasn't been assigned a function.", new object[1] { ((Object)functionKey).name });
				break;
			default:
				throw new ArgumentOutOfRangeException();
			}
		}

		public void Backspace()
		{
			if (InputField.selectionFocusPosition != InputField.caretPosition || InputField.selectionAnchorPosition != InputField.caretPosition)
			{
				if (InputField.selectionAnchorPosition > InputField.selectionFocusPosition)
				{
					InputField.text = InputField.text.Substring(0, InputField.selectionFocusPosition) + InputField.text.Substring(InputField.selectionAnchorPosition);
					InputField.caretPosition = InputField.selectionFocusPosition;
				}
				else
				{
					InputField.text = InputField.text.Substring(0, InputField.selectionAnchorPosition) + InputField.text.Substring(InputField.selectionFocusPosition);
					InputField.caretPosition = InputField.selectionAnchorPosition;
				}
				m_CaretPosition = InputField.caretPosition;
				InputField.selectionAnchorPosition = m_CaretPosition;
				InputField.selectionFocusPosition = m_CaretPosition;
			}
			else
			{
				m_CaretPosition = InputField.caretPosition;
				if (m_CaretPosition > 0)
				{
					m_CaretPosition--;
					InputField.text = InputField.text.Remove(m_CaretPosition, 1);
					UpdateCaretPosition(m_CaretPosition);
				}
			}
		}

		public void Previous()
		{
			this.OnPrevious(this, EventArgs.Empty);
		}

		public void Next()
		{
			this.OnNext(this, EventArgs.Empty);
		}

		public void Enter()
		{
			this.OnTextSubmitted?.Invoke(this, EventArgs.Empty);
			if (SubmitOnEnter)
			{
				InputField.OnSubmit((BaseEventData)null);
			}
			if (CloseOnEnter)
			{
				Close();
			}
		}

		public void Macro(string text)
		{
			this.OnMacroTriggered?.Invoke(text);
		}

		public void Shift(bool newShiftState)
		{
			m_IsShifted = newShiftState;
			this.OnKeyboardShifted(m_IsShifted);
			if (m_IsCapslocked && !newShiftState)
			{
				m_IsCapslocked = false;
			}
		}

		public void CapsLock(bool newCapsLockState)
		{
			m_IsCapslocked = newCapsLockState;
			Shift(newCapsLockState);
		}

		public void Space()
		{
			m_CaretPosition = InputField.caretPosition;
			InputField.text = InputField.text.Insert(m_CaretPosition++, " ");
			UpdateCaretPosition(m_CaretPosition);
		}

		public void Tab()
		{
			string text = "\t";
			m_CaretPosition = InputField.caretPosition;
			InputField.text = InputField.text.Insert(m_CaretPosition, text);
			m_CaretPosition += text.Length;
			UpdateCaretPosition(m_CaretPosition);
		}

		public void MoveCaretLeft()
		{
			m_CaretPosition = InputField.caretPosition;
			if (m_CaretPosition > 0)
			{
				m_CaretPosition--;
				UpdateCaretPosition(m_CaretPosition);
			}
		}

		public void MoveCaretRight()
		{
			m_CaretPosition = InputField.caretPosition;
			if (m_CaretPosition < InputField.text.Length)
			{
				m_CaretPosition++;
				UpdateCaretPosition(m_CaretPosition);
			}
		}

		public void Close()
		{
			((Component)this).gameObject.SetActive(false);
			this.OnClosed(this, EventArgs.Empty);
		}

		public void Clear()
		{
			ResetKeyboardState();
			if (InputField.caretPosition != 0)
			{
				InputField.MoveTextStart(false);
			}
			InputField.text = "";
			m_CaretPosition = InputField.caretPosition;
		}

		public void SetScaleSizeValues(float minScale, float maxScale, float minDistance, float maxDistance)
		{
			m_MinScale = minScale;
			m_MaxScale = maxScale;
			m_MinDistance = minDistance;
			m_MaxDistance = maxDistance;
		}

		public void ShowAlphaKeyboard()
		{
			((Component)NumbersKeyboard).gameObject.SetActive(true);
			((Component)AlphaKeyboard).gameObject.SetActive(true);
			m_LastKeyboardLayout = LayoutType.Alpha;
		}

		private bool TryToShowAlphaSubkeys()
		{
			if (((UIBehaviour)AlphaKeyboard).IsActive())
			{
				((Component)AlphaSubKeys).gameObject.SetActive(true);
				return true;
			}
			return false;
		}

		private bool TryToShowEmailSubkeys()
		{
			if (((UIBehaviour)AlphaKeyboard).IsActive())
			{
				((Component)AlphaMailKeys).gameObject.SetActive(true);
				m_LastKeyboardLayout = LayoutType.Email;
				return true;
			}
			return false;
		}

		private bool TryToShowURLSubkeys()
		{
			if (((UIBehaviour)AlphaKeyboard).IsActive())
			{
				((Component)AlphaWebKeys).gameObject.SetActive(true);
				m_LastKeyboardLayout = LayoutType.URL;
				return true;
			}
			return false;
		}

		public void ShowSymbolKeyboard()
		{
			((Component)SymbolKeyboard).gameObject.SetActive(true);
		}

		private void DisableAllKeyboards()
		{
			((Component)NumbersKeyboard).gameObject.SetActive(false);
			((Component)AlphaKeyboard).gameObject.SetActive(false);
			((Component)SymbolKeyboard).gameObject.SetActive(false);
			((Component)AlphaWebKeys).gameObject.SetActive(false);
			((Component)AlphaMailKeys).gameObject.SetActive(false);
			((Component)AlphaSubKeys).gameObject.SetActive(false);
		}

		private void ResetKeyboardState()
		{
			CapsLock(newCapsLockState: false);
		}

		private void IndicateActivity()
		{
			ResetClosingTime();
			if ((Object)(object)_audioSource == (Object)null)
			{
				_audioSource = ((Component)this).GetComponent<AudioSource>();
			}
			if ((Object)(object)_audioSource != (Object)null)
			{
				_audioSource.Play();
			}
		}

		private void ResetClosingTime()
		{
			if (CloseOnInactivity)
			{
				_closingTime = Time.time + CloseOnInactivityTime;
			}
		}

		private void CheckForCloseOnInactivityTimeExpired()
		{
			if (Time.time > _closingTime && CloseOnInactivity)
			{
				Close();
			}
		}
	}
	public class SymbolDisableHighlight : MonoBehaviour
	{
		[SerializeField]
		private Text m_TextField;

		[SerializeField]
		private Image m_ImageField;

		[SerializeField]
		private Color m_DisabledColor = Color.grey;

		private Color m_StartingColor = Color.white;

		private Button m_Button;

		private void Start()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)m_TextField != (Object)null)
			{
				m_StartingColor = ((Graphic)m_TextField).color;
			}
			if ((Object)(object)m_ImageField != (Object)null)
			{
				m_StartingColor = ((Graphic)m_ImageField).color;
			}
			m_Button = ((Component)this).GetComponentInParent<Button>();
			UpdateState();
		}

		private void Update()
		{
			UpdateState();
		}

		private void UpdateState()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)m_TextField != (Object)null && (Object)(object)m_Button != (Object)null)
			{
				((Graphic)m_TextField).color = (((Selectable)m_Button).interactable ? m_StartingColor : m_DisabledColor);
			}
			if ((Object)(object)m_ImageField != (Object)null && (Object)(object)m_Button != (Object)null)
			{
				((Graphic)m_ImageField).color = (((Selectable)m_Button).interactable ? m_StartingColor : m_DisabledColor);
			}
		}
	}
	public class SymbolKeyboard : MonoBehaviour
	{
		private NonNativeKeyboard keyboard;

		[SerializeField]
		private Button m_PageBck;

		[SerializeField]
		private Button m_PageFwd;

		private void Awake()
		{
			if ((Object)(object)keyboard == (Object)null)
			{
				keyboard = ((Component)this).GetComponentInParent<NonNativeKeyboard>();
			}
		}

		private void Update()
		{
			((Selectable)m_PageBck).interactable = keyboard.IsShifted;
			((Selectable)m_PageFwd).interactable = !keyboard.IsShifted;
		}
	}
	[AddComponentMenu("Scripts/MRTK/Experimental/UICollection")]
	[RequireComponent(typeof(RectTransform))]
	[ExecuteInEditMode]
	public class UICollection : MonoBehaviour
	{
		[SerializeField]
		private float maxWidth = -1f;

		[SerializeField]
		private float maxHeight = -1f;

		[SerializeField]
		private float horizontalSpacing;

		[SerializeField]
		private float verticalSpacing;

		private RectTransform rectTransform;

		public float MaxWidth
		{
			get
			{
				return maxWidth;
			}
			set
			{
				maxWidth = value;
			}
		}

		public float MaxHeight
		{
			get
			{
				return maxHeight;
			}
			set
			{
				maxHeight = value;
			}
		}

		public float HorizontalSpacing
		{
			get
			{
				return horizontalSpacing;
			}
			set
			{
				horizontalSpacing = value;
			}
		}

		public float VerticalSpacing
		{
			get
			{
				return verticalSpacing;
			}
			set
			{
				verticalSpacing = value;
			}
		}

		public List<RectTransform> Items { get; private set; }

		private void Awake()
		{
			Items = new List<RectTransform>();
		}

		private void Start()
		{
			rectTransform = ((Component)this).GetComponent<RectTransform>();
			if (Application.isEditor)
			{
				CollectItems();
				UpdateLayout();
			}
		}

		private void Update()
		{
			if (Application.isEditor)
			{
				CollectItems();
				UpdateLayout();
			}
		}

		public void AddItem(RectTransform item)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			Items.Add(item);
			((Transform)item).SetParent(((Component)this).transform);
			((Component)item).transform.localScale = Vector3.one;
			((Transform)item).position = Vector3.zero;
			item.anchoredPosition3D = Vector3.zero;
			UpdateLayout();
		}

		public void RemoveItem(RectTransform item)
		{
			Items.Remove(item);
			UpdateLayout();
		}

		public void RemoveAllItems()
		{
			Items.Clear();
			UpdateLayout();
		}

		private void CollectItems()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			Items.Clear();
			foreach (Transform item in ((Component)this).transform)
			{
				Transform val = item;
				RectTransform component = ((Component)val).GetComponent<RectTransform>();
				if ((Object)(object)component != (Object)null)
				{
					AddItem(component);
				}
			}
		}

		protected virtual void UpdateLayout()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			Rect rect = rectTransform.rect;
			Vector2 zero = Vector2.zero;
			if (maxWidth < 0f)
			{
				zero.x = ((Rect)(ref rect)).width;
			}
			else
			{
				zero.x = maxWidth;
			}
			if (maxHeight < 0f)
			{
				zero.y = ((Rect)(ref rect)).height;
			}
			else
			{
				zero.y = maxHeight;
			}
			Vector2 zero2 = Vector2.zero;
			Vector2 up = Vector2.up;
			float num = 0f;
			float num2 = 0f;
			for (int i = 0; i < Items.Count; i++)
			{
				Items[i].anchorMin = up;
				Items[i].anchorMax = up;
				Items[i].pivot = up;
				Rect rect2 = Items[i].rect;
				num = Mathf.Max(((Rect)(ref rect2)).height, num);
				rect2 = Items[i].rect;
				if (((Rect)(ref rect2)).width + zero2.x > zero.x)
				{
					zero2.y += num + verticalSpacing;
					zero2.x = 0f;
					rect2 = Items[i].rect;
					num = ((Rect)(ref rect2)).height;
					rect2 = Items[i].rect;
					if (((Rect)(ref rect2)).height + zero2.y > zero.y)
					{
						break;
					}
				}
				Items[i].anchoredPosition = new Vector2(zero2.x, 0f - zero2.y);
				ref float x = ref zero2.x;
				float num3 = x;
				rect2 = Items[i].rect;
				x = num3 + (((Rect)(ref rect2)).width + horizontalSpacing);
				num2 = Mathf.Max(zero2.x - horizontalSpacing, num2);
			}
			float num4 = ((maxWidth < 0f) ? ((Rect)(ref rect)).width : num2);
			float num5 = ((maxHeight < 0f) ? ((Rect)(ref rect)).height : (num + zero2.y));
			rectTransform.sizeDelta = new Vector2(num4, num5);
		}
	}
}
namespace LCVR
{
	public static class Compat
	{
		public const string MoreCompany = "me.swipez.melonloader.morecompany";

		public const string Diversity = "Chaos.Diversity";

		public const string CullFactory = "com.fumiko.CullFactory";

		public static bool IsLoaded(string modId)
		{
			return Chainloader.PluginInfos.ContainsKey(modId);
		}
	}
	public class Config
	{
		public enum TurnProviderOption
		{
			Snap,
			Smooth,
			Disabled
		}

		public string AssemblyPath { get; }

		public ConfigFile File { get; }

		public ConfigEntry<bool> DisableVR { get; }

		public ConfigEntry<bool> AskOnStartup { get; }

		public ConfigEntry<bool> EnableHelmetVisor { get; }

		public ConfigEntry<bool> EnableVerboseLogging { get; }

		public ConfigEntry<bool> EnableOcclusionMesh { get; }

		public ConfigEntry<bool> EnableDynamicResolution { get; }

		public ConfigEntry<DynamicResUpscaleFilter> DynamicResolutionUpscaleFilter { get; }

		public ConfigEntry<float> DynamicResolutionPercentage { get; }

		public ConfigEntry<float> CameraResolution { get; }

		public ConfigEntry<bool> DisableVolumetrics { get; }

		public ConfigEntry<TurnProviderOption> TurnProvider { get; }

		public ConfigEntry<float> SmoothTurnSpeedModifier { get; }

		public ConfigEntry<float> SnapTurnSize { get; }

		public ConfigEntry<bool> ToggleSprint { get; }

		public ConfigEntry<float> MovementSprintToggleCooldown { get; }

		public ConfigEntry<float> ButtonPressPoint { get; }

		public ConfigEntry<bool> EnablePitchLockedCanvas { get; }

		public ConfigEntry<bool> DisableArmHUD { get; }

		public ConfigEntry<float> HUDOffsetX { get; }

		public ConfigEntry<float> HUDOffsetY { get; }

		public ConfigEntry<bool> EnableInteractRay { get; }

		public ConfigEntry<bool> EnableCustomCamera { get; }

		public ConfigEntry<float> CustomCameraFOV { get; }

		public ConfigEntry<float> CustomCameraLerpFactor { get; }

		public ConfigEntry<float> LODBias { get; }

		public ConfigEntry<bool> DisableLensDistortion { get; }

		public ConfigEntry<bool> SpectatorLightRemovesVolumetrics { get; }

		public ConfigEntry<float> MirrorXOffset { get; }

		public ConfigEntry<float> MirrorYOffset { get; }

		public ConfigEntry<bool> DisableShipLeverInteraction { get; }

		public ConfigEntry<bool> DisableChargeStationInteraction { get; }

		public ConfigEntry<bool> DisableMonitorInteraction { get; }

		public ConfigEntry<bool> DisableShipDoorInteraction { get; }

		public ConfigEntry<bool> DisableTeleporterInteraction { get; }

		public ConfigEntry<bool> DisableShipHornInteraction { get; }

		public ConfigEntry<bool> DisableCompanyBellInteraction { get; }

		public ConfigEntry<bool> DisableBreakerBoxInteraction { get; }

		public ConfigEntry<bool> DisableDoorInteraction { get; }

		public ConfigEntry<bool> DisableHangarLeverInteraction { get; }

		public ConfigEntry<bool> DisableMuffleInteraction { get; }

		public ConfigEntry<bool> DisableFaceInteractions { get; }

		public ConfigEntry<bool> DisableElevatorButtonInteraction { get; }

		public ConfigEntry<bool> DisableCarSteeringWheelInteraction { get; }

		public ConfigEntry<bool> DisableCarButtonInteractions { get; }

		public ConfigEntry<bool> DisableCarHonkInteraction { get; }

		public ConfigEntry<bool> DisableCarEjectInteraction { get; }

		public ConfigEntry<bool> DisableCarGearStickInteractions { get; }

		public ConfigEntry<bool> DisableCarIgnitionInteractions { get; }

		public ConfigEntry<bool> IntroScreenSeen { get; }

		public ConfigEntry<string> ControllerBindingsOverride { get; }

		public ConfigEntry<string> OpenXRRuntimeFile { get; }

		public ConfigEntry<bool> DisableSettingsButton { get; }

		public Config(string assemblyPath, ConfigFile file)
		{
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Expected O, but got Unknown
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Expected O, but got Unknown
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Expected O, but got Unknown
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Expected O, but got Unknown
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Expected O, but got Unknown
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Expected O, but got Unknown
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Expected O, but got Unknown
			//IL_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Expected O, but got Unknown
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Expected O, but got Unknown
			//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b7: Expected O, but got Unknown
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f0: Expected O, but got Unknown
			//IL_0457: Unknown result type (might be due to invalid IL or missing references)
			//IL_0461: Expected O, but got Unknown
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_049a: Expected O, but got Unknown
			AssemblyPath = assemblyPath;
			File = file;
			DisableVR = file.Bind<bool>("General", "DisableVR", false, "Disables the main functionality of this mod, can be used if you want to play without VR while keeping the mod installed.");
			AskOnStartup = file.Bind<bool>("General", "AskOnStartup", false, "When enabled, shows a popup on game launch where you are asked whether or not you want to play in VR. If DisableVR is set to true, this popup will not show.");
			EnableHelmetVisor = file.Bind<bool>("General", "EnableHelmetVisor", false, "Enables the first person helmet visor and helmet. This will restrict your field of view, but looks more immersive.");
			EnableVerboseLogging = file.Bind<bool>("General", "EnableVerboseLogging", false, "Enables verbose debug logging during OpenXR initialization");
			EnableOcclusionMesh = file.Bind<bool>("Performance", "EnableOcclusionMesh", true, "The occlusion mesh will cause the game to stop rendering pixels outside of the lens views, which increases performance.");
			EnableDynamicResolution = file.Bind<bool>("Performance", "EnableDynamicResolution", false, "Whether or not dynamic resolution should be enabled. Required for most of these settings to have an effect.");
			DynamicResolutionUpscaleFilter = file.Bind<DynamicResUpscaleFilter>("Performance", "DynamicResolutionUpscaleFilter", (DynamicResUpscaleFilter)4, new ConfigDescription("The filter/algorithm that will be used to perform dynamic resolution upscaling. Defaulted to FSR (Edge Adaptive Scaling).", (AcceptableValueBase)(object)new AcceptableValueEnum<DynamicResUpscaleFilter>(), Array.Empty<object>()));
			DynamicResolutionPercentage = file.Bind<float>("Performance", "DynamicResolutionPercentage", 80f, new ConfigDescription("The percentage of resolution to scale the game down to. The lower the value, the harder the upscale filter has to work which will result in quality loss.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>()));
			CameraResolution = file.Bind<float>("Performance", "CameraResolution", 0.75f, new ConfigDescription("This setting configures the resolution scale of the game, lower values are more performant, but will make the game look worse. From around 0.8 the difference is negligible (on a Quest 2, with dynamic resolution disabled).", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.05f, 1.5f), Array.Empty<object>()));
			DisableVolumetrics = file.Bind<bool>("Performance", "DisableVolumetrics", false, "Disables volumetrics in the game, which significantly improves performance, but removes all fog and may be considered cheating.");
			TurnProvider = file.Bind<TurnProviderOption>("Input", "TurnProvider", TurnProviderOption.Snap, new ConfigDescription("Specify which turning provider your player uses, if any.", (AcceptableValueBase)(object)new AcceptableValueEnum<TurnProviderOption>(), Array.Empty<object>()));
			SmoothTurnSpeedModifier = file.Bind<float>("Input", "SmoothTurnSpeedModifier", 1f, new ConfigDescription("A multiplier that is added to the smooth turning speed. Requires turn provider to be set to smooth.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.25f, 5f), Array.Empty<object>()));
			SnapTurnSize = file.Bind<float>("Input", "SnapTurnSize", 45f, new ConfigDescription("The amount of rotation that is applied when performing a snap turn. Requires turn provider to be set to snap.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(10f, 180f), Array.Empty<object>()));
			ToggleSprint = file.Bind<bool>("Input", "ToggleSprint", false, "Whether the sprint button should toggle sprint instead of having to hold it down.");
			MovementSprintToggleCooldown = file.Bind<float>("Input", "MovementSprintToggleCooldown", 1f, new ConfigDescription("The amount of seconds that you need to stand still for sprint to be toggled off automatically. Requires sprint toggle to be enabled.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 60f), Array.Empty<object>()));
			ButtonPressPoint = file.Bind<float>("Input", "ButtonPressPoint", 0.25f, new ConfigDescription("The amount of force required to register a UI button press. The lower the value, the more sensitive UI presses become.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>()));
			EnablePitchLockedCanvas = file.Bind<bool>("UI", "EnablePitchLockedCanvas", true, "Whether most of the camera-locked UI elements should only (smoothly) rotate on the Y axis, instead of being stuck on your face.");
			DisableArmHUD = file.Bind<bool>("UI", "DisableArmHUD", false, "Removes the HUD from the arms and displays them in front of the camera.");
			HUDOffsetX = file.Bind<float>("UI", "OffsetX", 0f, "The x offset of the HUD that was placed on the camera instead of the arms. Requires the arm HUD to be disabled.");
			HUDOffsetY = file.Bind<float>("UI", "OffsetY", 0f, "The y offset of the HUD that was placed on the camera instead of the arms. Requires the arm HUD to be disabled.");
			EnableInteractRay = file.Bind<bool>("UI", "EnableInteractRay", false, "Enable a visible ray coming out of the hand that tells you where you are currently aiming at. More or less for debug purposes, but can be used to get a feel for the rotations and such.");
			EnableCustomCamera = file.Bind<bool>("Rendering", "EnableCustomCamera", false, "Adds a second camera mounted on top of the VR camera that will render seperately from the VR camera to the monitor. This requires quite a bit of extra GPU power!");
			CustomCameraFOV = file.Bind<float>("Rendering", "CustomCameraFOV", 90f, new ConfigDescription("The field of view that the custom camera should have.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(45f, 120f), Array.Empty<object>()));
			CustomCameraLerpFactor = file.Bind<float>("Rendering", "CustomCameraLerpFactor", 0.1f, new ConfigDescription("The smoothing factor of the custom camera rotation. Higher values mean more static movement, lower values are more smooth.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.01f, 1f), Array.Empty<object>()));
			LODBias = file.Bind<float>("Rendering", "LODBias", 2f, new ConfigDescription("The LOD bias is a multiplier that dictates when an LOD must reduce their quality. Higher values means that more detailed LODs will persist for longer.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 5f), Array.Empty<object>()));
			DisableLensDistortion = file.Bind<bool>("Rendering", "DisableLensDistortion", false, "Disables the warping effects that you experience when you are under water, use the TZP-inhalant and more.");
			SpectatorLightRemovesVolumetrics = file.Bind<bool>("Rendering", "SpectatorLightRemovesVolumetrics", false, "When spectating, also disable all volumetrics (fog) while the fullbright lighting is enabled for more visibility.");
			MirrorXOffset = file.Bind<float>("Rendering", "MirrorXOffset", 0f, new ConfigDescription("The X offset that is added to the XR Mirror View shader. Do not touch if you don't know what this means.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>()));
			MirrorYOffset = file.Bind<float>("Rendering", "MirrorYOffset", 0f, new ConfigDescription("The Y offset that is added to the XR Mirror View shader. Do not touch if you don't know what this means.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>()));
			DisableShipLeverInteraction = file.Bind<bool>("Interaction", "DisableShipLeverInteraction", false, "Disables the physical lever pull interaction on the ship lever.");
			DisableChargeStationInteraction = file.Bind<bool>("Interaction", "DisableChargeStationInteraction", false, "Disables needing to hold items up to the charger physically.");
			DisableMonitorInteraction = file.Bind<bool>("Interaction", "DisableMonitorInteraction", false, "Disables needing to physically press the buttons for the monitor.");
			DisableShipDoorInteraction = file.Bind<bool>("Interaction", "DisableShipDoorInteraction", false, "Disables needing to physically press the buttons for the ship door.");
			DisableTeleporterInteraction = file.Bind<bool>("Interaction", "DisableTeleporterInteraction", false, "Disables needing to physically press the buttons for the teleporters.");
			DisableShipHornInteraction = file.Bind<bool>("Interaction", "DisableShipHornInteraction", false, "Disables needing to physically pull the cord on the ship horn.");
			DisableCompanyBellInteraction = file.Bind<bool>("Interaction", "DisableCompanyBellInteraction", false, "Disables needing to physically press the bell at the company desk.");
			DisableBreakerBoxInteraction = file.Bind<bool>("Interaction", "DisableBreakerBoxInteraction", false, "Disabled needing to physically open the breaker box and flip the switches with your finger.");
			DisableDoorInteraction = file.Bind<bool>("Interaction", "DisableDoorInteraction", false, "Disable needing to physically open and close doors by interacting with the door handles. Will also disable the need to use keys and lockpickers physically on the door handle.");
			DisableHangarLeverInteraction = file.Bind<bool>("Interaction", "DisableHangarLeverInteraction", false, "Disable needing to physically pull the lever for the big doors on Artiface");
			DisableMuffleInteraction = file.Bind<bool>("Interaction", "DisableMuffleInteraction", false, "Disables the self-muffling feature, which makes it so that holding your hand in front of your mouth will no longer make you inaudible to enemies.");
			DisableFaceInteractions = file.Bind<bool>("Interaction", "DisableFaceInteractions", false, "Disables the functionality to hold certain items up to your face to use them.");
			DisableElevatorButtonInteraction = file.Bind<bool>("Interaction", "DisableElevatorButtonInteraction", false, "Disables needing to physically press the elevator buttons");
			DisableCarSteeringWheelInteraction = file.Bind<bool>("Car", "DisableCarSteeringWheelInteraction", false, "Disables the need to physically steer the Company Cruiser");
			DisableCarButtonInteractions = file.Bind<bool>("Car", "DisableCarButtonInteractions", false, "Disables the need to physically press the generic buttons in the Company Cruiser (radio, windshield wipers, etc)");
			DisableCarHonkInteraction = file.Bind<bool>("Car", "DisableCarHonkInteraction", false, "Disables the need to physically press the car honk in the Company Cruiser");
			DisableCarEjectInteraction = file.Bind<bool>("Car", "DisableCarEjectInteraction", false, "Disables the need to physically press the eject button in the Company Cruiser");
			DisableCarGearStickInteractions = file.Bind<bool>("Car", "DisableCarGearStickInteractions", false, "Disables the need to physically shift the gears in the Company Cruiser");
			DisableCarIgnitionInteractions = file.Bind<bool>("Car", "DisableCarIgnitionInteractions", false, "Disables the need to physically start/stop the car ignition in the Company Cruiser");
			IntroScreenSeen = file.Bind<bool>("Internal", "IntroScreenSeen", false, "Whether the VR intro screen has been displayed before. This configuration option should be set automatically.");
			ControllerBindingsOverride = file.Bind<string>("Internal", "ControllerBindingsOverride", "", "FOR INTERNAL USE ONLY, DO NOT EDIT");
			OpenXRRuntimeFile = file.Bind<string>("Internal", "OpenXRRuntimeFile", "", "FOR INTERNAL USE ONLY, DO NOT EDIT");
			DisableSettingsButton = file.Bind<bool>("Internal", "DisableSettingsButton", false, "Disables the settings button on the main menu screen");
			base..ctor();
		}
	}
	internal class AcceptableValueEnum<T> : AcceptableValueBase where T : notnull, Enum
	{
		private readonly string[] names = Enum.GetNames(typeof(T));

		public AcceptableValueEnum()
			: base(typeof(T))
		{
		}

		public override object Clamp(object value)
		{
			return value;
		}

		public override bool IsValid(object value)
		{
			return true;
		}

		public override string ToDescriptionString()
		{
			return "# Acceptable values: " + string.Join(", ", names);
		}
	}
	[LCVRPatch(LCVRPatchTarget.Universal, null)]
	[HarmonyPatch]
	internal static class Entrypoint
	{
		[HarmonyPatch(typeof(StartOfRound), "Start")]
		[HarmonyPrefix]
		private static void OnGameEntered()
		{
			((MonoBehaviour)StartOfRound.Instance).StartCoroutine(Start());
		}

		private static IEnumerator Start()
		{
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)StartOfRound.Instance.activeCamera != (Object)null));
			new GameObject("LCVR Session Manager").AddComponent<VRSession>();
		}
	}
	public static class Logger
	{
		private static ManualLogSource logSource;

		public static void SetSource(ManualLogSource Logger)
		{
			logSource = Logger;
		}

		public static void Log(object message)
		{
			logSource.LogInfo(message);
		}

		public static void LogInfo(object message)
		{
			logSource.LogInfo(message);
		}

		public static void LogWarning(object message)
		{
			logSource.LogWarning(message);
		}

		public static void LogError(object message)
		{
			logSource.LogError(message);
		}

		public static void LogDebug(object message)
		{
			logSource.LogDebug(message);
		}
	}
	internal static class Native
	{
		[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
		private struct NotifyIconData
		{
			public int cbSize;

			public IntPtr hWnd;

			public int uID;

			public int uFlags;

			public int uCallbackMessage;

			public IntPtr hIcon;

			[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
			public string szTip;

			public int dwState;

			public int dwStateMask;

			[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
			public string szInfo;

			public int uTimeoutOrVersion;

			[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
			public string szInfoTitle;

			public int dwInfoFlags;

			public Guid guidItem;

			public IntPtr hBalloonIcon;
		}

		private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

		public static readonly IntPtr HKEY_LOCAL_MACHINE = new IntPtr(2147483650L);

		[DllImport("user32.dll", CharSet = CharSet.Unicode)]
		private static extern int GetWindowText(IntPtr hWnd, StringBuilder strText, int maxCount);

		[DllImport("user32.dll", CharSet = CharSet.Unicode)]
		private static extern int GetWindowTextLength(IntPtr hWnd);

		[DllImport("user32.dll")]
		private static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);

		[DllImport("user32.dll")]
		private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);

		[DllImport("user32.dll")]
		private static extern bool BringWindowToTop(IntPtr hWnd);

		[DllImport("user32.dll")]
		private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

		[DllImport("user32.dll")]
		private static extern IntPtr GetForegroundWindow();

		[DllImport("user32.dll")]
		private static extern void AttachThreadInput(uint idAttach, uint idAttachTo, bool fAttach);

		[DllImport("kernel32.dll")]
		private static extern uint GetCurrentProcessId();

		[DllImport("kernel32.dll")]
		private static extern uint GetCurrentThreadId();

		[DllImport("Advapi32.dll", CharSet = CharSet.Ansi, EntryPoint = "RegOpenKeyExA")]
		public static extern int RegOpenKeyEx(IntPtr hKey, [In] string lpSubKey, int ulOptions, int samDesired, out IntPtr phkResult);

		[DllImport("advapi32.dll", CharSet = CharSet.Ansi)]
		public static extern int RegQueryValueEx(IntPtr hKey, string lpValueName, int lpReserved, out uint lpType, StringBuilder lpData, ref uint lpcbData);

		[DllImport("advapi32.dll", CharSet = CharSet.Ansi)]
		public static extern int RegQueryInfoKey(IntPtr hKey, StringBuilder lpClass, IntPtr lpcbClass, IntPtr lpReserved, out uint lpcSubKeys, out uint lpcbMaxSubKeyLen, out uint lpcbMaxClassLen, out uint lpcValues, out uint lpcbMaxValueNameLen, out uint lpcbMaxValueLen, IntPtr lpSecurityDescriptor, IntPtr lpftLastWriteTime);

		[DllImport("advapi32.dll", CharSet = CharSet.Ansi, EntryPoint = "RegEnumValueA")]
		public static extern int RegEnumValue(IntPtr hKey, uint dwIndex, StringBuilder lpValueName, ref uint lpcchValueName, IntPtr lpReserved, IntPtr lpType, IntPtr lpData, IntPtr lpcbData);

		[DllImport("advapi32.dll")]
		public static extern int RegCloseKey(IntPtr hKey);

		[DllImport("Shlwapi.dll", CharSet = CharSet.Ansi)]
		public static extern int ShellMessageBox(IntPtr hAppInst, IntPtr hWnd, string lpcText, string lpcTitle, uint fuStyle);

		[DllImport("kernel32.dll", SetLastError = true)]
		private static extern IntPtr GetCurrentProcess();

		[DllImport("advapi32.dll", SetLastError = true)]
		private static extern bool OpenProcessToken(IntPtr hProcess, uint dwAccess, out IntPtr hToken);

		[DllImport("advapi32.dll", SetLastError = true)]
		private static extern bool GetTokenInformation(IntPtr hToken, uint tokenInformationClass, IntPtr lpData, uint tokenInformationLength, out uint returnLength);

		[DllImport("kernel32.dll", SetLastError = true)]
		[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
		[SuppressUnmanagedCodeSecurity]
		[return: MarshalAs(UnmanagedType.Bool)]
		private static extern bool CloseHandle(IntPtr handle);

		[DllImport("Shell32.dll", CharSet = CharSet.Auto)]
		private static extern bool Shell_NotifyIcon(int dwMessage, ref NotifyIconData lpData);

		[DllImport("Kernel32.dll")]
		private static extern IntPtr GetConsoleWindow();

		[DllImport("user32.dll")]
		private static extern IntPtr LoadIcon(IntPtr a, IntPtr b);

		public static bool RegOpenSubKey(ref IntPtr hKey, string lpSubKey, int samDesired)
		{
			if (RegOpenKeyEx(hKey, lpSubKey, 0, samDesired, out var phkResult) != 0)
			{
				return false;
			}
			RegCloseKey(hKey);
			hKey = phkResult;
			return true;
		}

		public static void ShowNotification(string title, string message)
		{
			NotifyIconData notifyIconData = default(NotifyIconData);
			notifyIconData.cbSize = Marshal.SizeOf<NotifyIconData>();
			notifyIconData.hWnd = GetConsoleWindow();
			notifyIconData.uFlags = 19;
			notifyIconData.dwInfoFlags = 3;
			notifyIconData.uCallbackMessage = 1025;
			notifyIconData.hIcon = LoadIcon(IntPtr.Zero, new IntPtr(32512));
			notifyIconData.szInfo = message;
			notifyIconData.szInfoTitle = title;
			NotifyIconData lpData = notifyIconData;
			Shell_NotifyIcon(0, ref lpData);
			Shell_NotifyIcon(2, ref lpData);
		}

		private static string GetWindowText(IntPtr hWnd)
		{
			int windowTextLength = GetWindowTextLength(hWnd);
			if (windowTextLength > 0)
			{
				StringBuilder stringBuilder = new StringBuilder(windowTextLength + 1);
				GetWindowText(hWnd, stringBuilder, stringBuilder.Capacity);
				return stringBuilder.ToString();
			}
			return string.Empty;
		}

		private static IEnumerable<IntPtr> FindWindows(EnumWindowsProc filter)
		{
			IntPtr zero = IntPtr.Zero;
			List<IntPtr> windows = new List<IntPtr>();
			EnumWindows(delegate(IntPtr wnd, IntPtr param)
			{
				if (filter(wnd, param))
				{
					windows.Add(wnd);
				}
				return true;
			}, IntPtr.Zero);
			return windows;
		}

		public static void BringGameWindowToFront()
		{
			uint currentPid = GetCurrentProcessId();
			IntPtr[] array = FindWindows(delegate(IntPtr hWnd, IntPtr lParam)
			{
				GetWindowThreadProcessId(hWnd, out var processId2);
				return processId2 == currentPid && GetWindowText(hWnd) == "Lethal Company";
			}).ToArray();
			if (array.Length > 1)
			{
				Logger.LogWarning("Multiple game windows called 'Lethal Company' detected. Selecting only the first one.");
			}
			IntPtr hWnd2 = array[0];
			uint processId;
			uint windowThreadProcessId = GetWindowThreadProcessId(GetForegroundWindow(), out processId);
			uint currentThreadId = GetCurrentThreadId();
			AttachThreadInput(windowThreadProcessId, currentThreadId, fAttach: true);
			BringWindowToTop(hWnd2);
			AttachThreadInput(windowThreadProcessId, currentThreadId, fAttach: false);
		}

		public static bool IsElevated()
		{
			IntPtr hToken = IntPtr.Zero;
			IntPtr intPtr = IntPtr.Zero;
			try
			{
				if (!OpenProcessToken(GetCurrentProcess(), 8u, out hToken))
				{
					return false;
				}
				intPtr = Marshal.AllocHGlobal(4);
				if (!GetTokenInformation(hToken, 20u, intPtr, 4u, out var _))
				{
					return false;
				}
				return Marshal.ReadIntPtr(intPtr).ToInt32() != 0;
			}
			finally
			{
				if (hToken != IntPtr.Zero)
				{
					CloseHandle(hToken);
				}
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeHGlobal(intPtr);
				}
			}
		}
	}
	internal static class OpenXR
	{
		public class Runtimes : IReadOnlyCollection<Runtime>, IEnumerable<Runtime>, IEnumerable
		{
			[CompilerGenerated]
			private Runtime[] <runtimes>P;

			public Runtime? Default => ((IEnumerable<Runtime>)<runtimes>P).Select((Func<Runtime, Runtime?>)((Runtime rt) => rt)).FirstOrDefault((Runtime? rt) => rt.Value.Default);

			public int Count => <runtimes>P.Length;

			public Runtimes(Runtime[] runtimes)
			{
				<runtimes>P = runtimes;
				base..ctor();
			}

			public bool TryGetRuntime(string name, out Runtime runtime)
			{
				runtime = default(Runtime);
				try
				{
					runtime = <runtimes>P.First((Runtime rt) => rt.Name == name);
					return true;
				}
				catch
				{
					return false;
				}
			}

			public bool TryGetRuntimeByPath(string path, out Runtime runtime)
			{
				runtime = default(Runtime);
				try
				{
					runtime = <runtimes>P.First((Runtime rt) => rt.Path == path);
					return true;
				}
				catch
				{
					return false;
				}
			}

			public IEnumerator<Runtime> GetEnumerator()
			{
				return ((IEnumerable<Runtime>)<runtimes>P).GetEnumerator();
			}

			IEnumerator IEnumerable.GetEnumerator()
			{
				return GetEnumerator();
			}
		}

		public struct Runtime
		{
			public string Name { get; set; }

			public string Path { get; set; }

			public bool Default { get; set; }
		}

		public static class Loader
		{
			private static XRGeneralSettings xrGeneralSettings;

			private static XRManagerSettings xrManagerSettings;

			private static OpenXRLoader xrLoader;

			private static readonly ManualLogSource Logger;

			static Loader()
			{
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				//IL_000f: Expected O, but got Unknown
				Logger = new ManualLogSource("OpenXR Loader");
				Logger.Sources.Add((ILogSource)(object)Logger);
			}

			public static bool InitializeXR()
			{
				InitializeScripts();
				if (Native.IsElevated())
				{
					Logger.LogWarning((object)"Application is elevated! Unable to override the XR runtime! Only the system default OpenXR runtime will be available.");
					return InitializeXR(null);
				}
				if (!GetRuntimes(out var runtimes) || runtimes.Count == 0)
				{
					Logger.LogWarning((object)"Failed to query runtimes, or no runtimes were found. Falling back to old behavior.");
					Runtime? runtime;
					if (!string.IsNullOrEmpty(Plugin.Config.OpenXRRuntimeFile.Value))
					{
						Runtime value = default(Runtime);
						value.Name = "LCVR OpenXR Override";
						value.Path = Plugin.Config.OpenXRRuntimeFile.Value;
						runtime = value;
					}
					else
					{
						runtime = null;
					}
					return InitializeXR(runtime);
				}
				if (!string.IsNullOrEmpty(Plugin.Config.OpenXRRuntimeFile.Value))
				{
					Runtime value2;
					if (!runtimes.TryGetRuntimeByPath(Plugin.Config.OpenXRRuntimeFile.Value, out var runtime2))
					{
						Runtime value = default(Runtime);
						value.Name = "LCVR OpenXR Override";
						value.Path = Plugin.Config.OpenXRRuntimeFile.Value;
						value2 = value;
					}
					else
					{
						value2 = runtime2;
					}
					if (InitializeXR(value2))
					{
						return true;
					}
					Logger.LogWarning((object)"Loading OpenXR using override failed, falling back to automatic enumeration...");
				}
				Runtime? @default = runtimes.Default;
				if (@default.HasValue)
				{
					Runtime valueOrDefault = @default.GetValueOrDefault();
					if (valueOrDefault.Path != Plugin.Config.OpenXRRuntimeFile.Value && InitializeXR(valueOrDefault))
					{
						return true;
					}
				}
				foreach (Runtime item in runtimes.Where((Runtime rt) => rt.Path != Plugin.Config.OpenXRRuntimeFile.Value && !rt.Default))
				{
					if (InitializeXR(item))
					{
						return true;
					}
				}
				Logger.LogError((object)"All available runtimes were attempted but none worked. Aborting...");
				return false;
			}

			public static void DeinitializeXR()
			{
				xrManagerSettings.DeinitializeLoader();
				xrGeneralSettings.StopXRSDK();
			}

			private static bool InitializeXR(Runtime? runtime)
			{
				if (runtime.HasValue)
				{
					Runtime valueOrDefault = runtime.GetValueOrDefault();
					Logger.LogInfo((object)("Attempting to initialize OpenXR on " + valueOrDefault.Name));
					Environment.SetEnvironmentVariable("XR_RUNTIME_JSON", valueOrDefault.Path);
				}
				else
				{
					Logger.LogInfo((object)"Attempting to initialize OpenXR using default runtime");
					Environment.SetEnvironmentVariable("XR_RUNTIME_JSON", null);
				}
				xrGeneralSettings.InitXRSDK();
				xrGeneralSettings.Start();
				List<XRDisplaySubsystem> list = new List<XRDisplaySubsystem>();
				SubsystemManager.GetInstances<XRDisplaySubsystem>(list);
				if (Plugin.Config.EnableVerboseLogging.Value)
				{
					Logger.LogWarning((object)"OpenXR Diagnostics Report:");
					string[] array = GenerateReport().Split("\n");
					foreach (string text in array)
					{
						Logger.LogWarning((object)text);
					}
					Logger.LogWarning((object)"");
					Logger.LogWarning((object)"To prevent diagnostics report from being printed, disable the 'EnableVerboseLogging' option in the settings.");
				}
				return list.Count > 0;
			}

			private static void InitializeScripts()
			{
				if (xrGeneralSettings == null)
				{
					xrGeneralSettings = ScriptableObject.CreateInstance<XRGeneralSettings>();
				}
				if (xrManagerSettings == null)
				{
					xrManagerSettings = ScriptableObject.CreateInstance<XRManagerSettings>();
				}
				if (xrLoader == null)
				{
					xrLoader = ScriptableObject.CreateInstance<OpenXRLoader>();
				}
				xrGeneralSettings.Manager = xrManagerSettings;
				((List<XRLoader>)xrManagerSettings.activeLoaders).Clear();
				((List<XRLoader>)xrManagerSettings.activeLoaders).Add((XRLoader)(object)xrLoader);
				OpenXRSettings.Instance.renderMode = (RenderMode)0;
				OpenXRSettings.Instance.depthSubmissionMode = (DepthSubmissionMode)0;
				if (OpenXRSettings.Instance.features.Length == 0)
				{
					ValveIndexControllerProfile val = ScriptableObject.CreateInstance<ValveIndexControllerProfile>();
					HPReverbG2ControllerProfile val2 = ScriptableObject.CreateInstance<HPReverbG2ControllerProfile>();
					HTCViveControllerProfile val3 = ScriptableObject.CreateInstance<HTCViveControllerProfile>();
					MicrosoftMotionControllerProfile val4 = ScriptableObject.CreateInstance<MicrosoftMotionControllerProfile>();
					KHRSimpleControllerProfile val5 = ScriptableObject.CreateInstance<KHRSimpleControllerProfile>();
					MetaQuestTouchProControllerProfile val6 = ScriptableObject.CreateInstance<MetaQuestTouchProControllerProfile>();
					OculusTouchControllerProfile val7 = ScriptableObject.CreateInstance<OculusTouchControllerProfile>();
					((OpenXRFeature)val).enabled = true;
					((OpenXRFeature)val2).enabled = true;
					((OpenXRFeature)val3).enabled = true;
					((OpenXRFeature)val4).enabled = true;
					((OpenXRFeature)val5).enabled = true;
					((OpenXRFeature)val6).enabled = true;
					((OpenXRFeature)val7).enabled = true;
					OpenXRSettings.Instance.features = (OpenXRFeature[])(object)new OpenXRFeature[7]
					{
						(OpenXRFeature)val,
						(OpenXRFeature)val2,
						(OpenXRFeature)val3,
						(OpenXRFeature)val4,
						(OpenXRFeature)val5,
						(OpenXRFeature)val6,
						(OpenXRFeature)val7
					};
				}
			}
		}

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_GenerateReport")]
		private static extern IntPtr Internal_GenerateReport();

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_ReleaseReport")]
		private static extern void Internal_ReleaseReport(IntPtr report);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeName")]
		private static extern bool Internal_GetRuntimeName(out IntPtr runtimeNamePtr);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeVersion")]
		private static extern bool Internal_GetRuntimeVersion(out ushort major, out ushort minor, out ushort patch);

		private static string GenerateReport()
		{
			IntPtr intPtr = Internal_GenerateReport();
			if (intPtr == IntPtr.Zero)
			{
				return "";
			}
			string result = Marshal.PtrToStringAnsi(intPtr);
			Internal_ReleaseReport(intPtr);
			return result;
		}

		public static bool GetRuntimes(out Runtimes runtimes)
		{
			runtimes = null;
			if (Native.RegOpenKeyEx(Native.HKEY_LOCAL_MACHINE, "SOFTWARE\\Khronos\\OpenXR\\1", 0, 131097, out var phkResult) != 0)
			{
				return false;
			}
			string text = "";
			uint lpcbData = 0u;
			uint lpType;
			bool flag = Native.RegQueryValueEx(phkResult, "ActiveRuntime", 0, out lpType, null, ref lpcbData) == 0;
			bool flag2 = flag;
			if (flag2)
			{
				bool flag3 = lpType - 1 <= 1;
				flag2 = flag3;
			}
			if (flag2)
			{
				StringBuilder stringBuilder = new StringBuilder((int)lpcbData);
				if (Native.RegQueryValueEx(phkResult, "ActiveRuntime", 0, out lpType, stringBuilder, ref lpcbData) == 0)
				{
					text = stringBuilder.ToString();
				}
			}
			List<string> list = new List<string>();
			if (!Native.RegOpenSubKey(ref phkResult, "AvailableRuntimes", 131097) || !EnumRuntimeFiles(phkResult, list))
			{
				try
				{
					JToken val = JsonConvert.DeserializeObject<JToken>(File.ReadAllText(text))[(object)"runtime"];
					Runtime[] array = new Runtime[1];
					Runtime runtime = default(Runtime);
					object name;
					if (val == null)
					{
						name = null;
					}
					else
					{
						JToken obj = val[(object)"name"];
						name = ((obj != null) ? obj.ToObject<string>() : null);
					}
					runtime.Name = (string)name;
					runtime.Path = text;
					runtime.Default = true;
					array[0] = runtime;
					runtimes = new Runtimes(array);
					return true;
				}
				catch
				{
					return false;
				}
			}
			if (!list.Contains(text))
			{
				list.Add(text);
			}
			List<Runtime> list2 = new List<Runtime>();
			foreach (string item in list)
			{
				try
				{
					JToken val2 = JsonConvert.DeserializeObject<JToken>(File.ReadAllText(item))[(object)"runtime"];
					Runtime runtime = default(Runtime);
					object name2;
					if (val2 == null)
					{
						name2 = null;
					}
					else
					{
						JToken obj3 = val2[(object)"name"];
						name2 = ((obj3 != null) ? obj3.ToObject<string>() : null);
					}
					runtime.Name = (string)name2;
					runtime.Path = item;
					runtime.Default = item == text;
					list2.Add(runtime);
				}
				catch (Exception ex)
				{
					Logger.LogWarning("Failed to parse " + item + ": " + ex.Message + ". Runtime will not be used.");
				}
			}
			runtimes = new Runtimes(list2.ToArray());
			return true;
		}

		private static bool EnumRuntimeFiles(IntPtr hKey, List<string> files)
		{
			if (Native.RegQueryInfoKey(hKey, null, IntPtr.Zero, IntPtr.Zero, out var _, out var _, out var _, out var lpcValues, out var lpcbMaxValueNameLen, out var _, IntPtr.Zero, IntPtr.Zero) != 0)
			{
				return false;
			}
			for (uint num = 0u; num < lpcValues; num++)
			{
				StringBuilder stringBuilder = new StringBuilder((int)(lpcbMaxValueNameLen + 1));
				uint lpcchValueName = lpcbMaxValueNameLen + 1;
				if (Native.RegEnumValue(hKey, num, stringBuilder, ref lpcchValueName, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero) == 0)
				{
					files.Add(stringBuilder.ToString());
				}
			}
			return true;
		}

		public static bool GetActiveRuntimeName(out string name)
		{
			name = null;
			if (!Internal_GetRuntimeName(out var runtimeNamePtr))
			{
				return false;
			}
			if (runtimeNamePtr == IntPtr.Zero)
			{
				return false;
			}
			name = Marshal.PtrToStringAnsi(runtimeNamePtr);
			return true;
		}

		public static bool GetActiveRuntimeVersion(out ushort major, out ushort minor, out ushort patch)
		{
			return Internal_GetRuntimeVersion(out major, out minor, out patch);
		}
	}
	[BepInPlugin("io.daxcess.lcvr", "LCVR", "1.3.8")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public const string PLUGIN_GUID = "io.daxcess.lcvr";

		public const string PLUGIN_NAME = "LCVR";

		public const string PLUGIN_VERSION = "1.3.8";

		private const string SKIP_CHECKSUM_VAR = "--lcvr-skip-checksum=1.3.8";

		private const string HASHES_OVERRIDE_URL = "https://gist.githubusercontent.com/DaXcess/72c4fbac0f18c76ebc99e6b769f19389/raw/LCVR%2520Game%2520Hashes";

		private readonly string[] GAME_ASSEMBLY_HASHES = new string[6] { "BFF45683C267F402429049EF7D8095C078D5CD534E5300E56317ACB6056D70FB", "A6BDE2EB39028B36CB1667DCFB4ED10F688FB3FF72E71491AC25C5CB47A7EF6C", "B0BC7D3392FDAD3BB6515C0769363A51FF3599E67325FAE153948E0B82EB7596", "B644AD19F3CE1E82071AC5F45D1E96D76B9FC06C11763381E1979BCDC5889607", "6F822FD5F804B519FA95D91DC2B2AE13A646C51D7BF1DE87A0A3D270A889A2DF", "BA9028C8F8DBDEF4CD179FF2A2AD57549C8D7135911B1AD48B53F638ABD3D595" };

		public static Config Config { get; private set; }

		public static Flags Flags { get; private set; }

		private void Awake()
		{
			CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
			InputSystem.PerformDefaultPluginInitialization();
			Logger.SetSource(((BaseUnityPlugin)this).Logger);
			Config = new Config(((BaseUnityPlugin)this).Info.Location, ((BaseUnityPlugin)this).Config);
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Starting LCVR v1.3.8 (" + GetCommitHash() + ")"));
			bool flag = Config.DisableVR.Value || Environment.GetCommandLineArgs().Contains<string>("--disable-vr", StringComparer.OrdinalIgnoreCase);
			if (flag)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"VR has been disabled by config or the `--disable-vr` command line flag");
			}
			else if (Config.AskOnStartup.Value)
			{
				switch (Native.ShellMessageBox(IntPtr.Zero, IntPtr.Zero, "Do you want to run Lethal Company in VR mode?\n\nDon't forget to connect your headset first before launching the game in VR.\nLaunching the game without VR will still allow you to see other VR players' arm movements.\n\nPress 'Cancel' to close the game.", "Lethal Company VR Mod", 4163u))
				{
				case 2:
					Process.GetCurrentProcess().Kill();
					return;
				case 7:
					flag = true;
					break;
				}
			}
			string[] commandLineArgs = Environment.GetCommandLineArgs();
			if (commandLineArgs.Contains("--lcvr-debug-interactables"))
			{
				Flags |= Flags.InteractableDebug;
			}
			if (commandLineArgs.Contains("--lcvr-item-offset-editor"))
			{
				Flags |= Flags.ItemOffsetEditor;
			}
			bool flag2 = Environment.GetCommandLineArgs().Contains("--lcvr-skip-checksum=1.3.8");
			if (!VerifyGameVersion())
			{
				if (!flag2)
				{
					((BaseUnityPlugin)this).Logger.LogError((object)"Error: Unsupported game version, or corrupted game detected!");
					((BaseUnityPlugin)this).Logger.LogError((object)"This usually happens if Lethal Company got updated recently.");
					((BaseUnityPlugin)this).Logger.LogWarning((object)"To bypass this check, add the following flag to your launch options in Steam: --lcvr-skip-checksum=1.3.8");
					return;
				}
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Warning: Unsupported game version, or corrupted game detected!");
				Flags |= Flags.InvalidGameAssembly;
			}
			if (!PreloadRuntimeDependencies())
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Disabling mod because required runtime dependencies could not be loaded!");
				return;
			}
			if (!AssetManager.LoadAssets())
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Disabling mod because assets could not be loaded!");
				return;
			}
			if (!flag && InitializeVR())
			{
				Flags |= Flags.VR;
				((MonoBehaviour)this).StartCoroutine(HijackSplashScreen());
			}
			HarmonyPatcher.PatchUniversal();
			((BaseUnityPlugin)this).Logger.LogDebug((object)"Inserted universal patches using Harmony");
			Native.BringGameWindowToFront();
		}

		private static string GetCommitHash()
		{
			try
			{
				AssemblyInformationalVersionAttribute customAttribute = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>();
				return ((customAttribute != null) ? customAttribute.InformationalVersion.Split('+')[1].Substring(0, 7) : null) ?? "unknown";
			}
			catch
			{
				Logger.LogWarning("Failed to retrieve commit hash (compiled outside of git repo?).");
				return "unknown";
			}
		}

		private bool VerifyGameVersion()
		{
			string path = Path.Combine(Paths.ManagedPath, "Assembly-CSharp.dll");
			string value = BitConverter.ToString(Utils.ComputeHash(File.ReadAllBytes(path))).Replace("-", "");
			if (GAME_ASSEMBLY_HASHES.Contains(value))
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Game version verified using local hashes");
				return true;
			}
			((BaseUnityPlugin)this).Logger.LogWarning((object)"Failed to verify game version using local hashes, checking remotely for updated hashes...");
			try
			{
				string content = new WebClient().DownloadString("https://gist.githubusercontent.com/DaXcess/72c4fbac0f18c76ebc99e6b769f19389/raw/LCVR%2520Game%2520Hashes");
				string[] source = Utils.ParseConfig(content);
				if (!source.Contains(value))
				{
					return false;
				}
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Game version verified using remote hashes");
				return true;
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)("Failed to verify using remote hashes: " + ex.Message));
				return false;
			}
		}

		private bool PreloadRuntimeDependencies()
		{
			try
			{
				string path = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "RuntimeDeps");
				string[] files = Directory.GetFiles(path, "*.dll");
				foreach (string path2 in files)
				{
					string fileName = Path.GetFileName(path2);
					if ((!(fileName == "UnityOpenXR.dll") && !(fileName == "openxr_loader.dll")) || 1 == 0)
					{
						((BaseUnityPlugin)this).Logger.LogDebug((object)("Preloading '" + fileName + "'..."));
						try
						{
							Assembly.LoadFile(path2);
						}
						catch (Exception ex)
						{
							((BaseUnityPlugin)this).Logger.LogWarning((object)("Failed to preload '" + fileName + "': " + ex.Message));
						}
					}
				}
			}
			catch (Exception ex2)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)("Unexpected error occured while preloading runtime dependencies (incorrect folder structure?): " + ex2.Message));
				return false;
			}
			return true;
		}

		private bool InitializeVR()
		{
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Expected O, but got Unknown
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Loading VR...");
			if (!OpenXR.Loader.InitializeXR())
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Failed to start in VR Mode! Only Non-VR features are available!");
				((BaseUnityPlugin)this).Logger.LogWarning((object)"You may ignore the previous error if you are intending to play without VR");
				Native.ShowNotification("Lethal Company VR", "Failed to start VR, please check the console logs for more information");
				return false;
			}
			if (OpenXR.GetActiveRuntimeName(out var name) && OpenXR.GetActiveRuntimeVersion(out var major, out var minor, out var patch))
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)$"OpenXR runtime being used: {name} ({major}.{minor}.{patch})");
			}
			else
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Could not get OpenXR runtime info?");
			}
			HarmonyPatcher.PatchVR();
			((BaseUnityPlugin)this).Logger.LogDebug((object)"Inserted VR patches using Harmony");
			RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline;
			HDRenderPipelineAsset val = (HDRenderPipelineAsset)(object)((renderPipeline is HDRenderPipelineAsset) ? renderPipeline : null);
			RenderPipelineSettings currentPlatformRenderPipelineSettings = val.currentPlatformRenderPipelineSettings;
			currentPlatformRenderPipelineSettings.dynamicResolutionSettings.enabled = Config.EnableDynamicResolution.Value;
			currentPlatformRenderPipelineSettings.dynamicResolutionSettings.dynResType = (DynamicResolutionType)1;
			currentPlatformRenderPipelineSettings.dynamicResolutionSettings.upsampleFilter = Config.DynamicResolutionUpscaleFilter.Value;
			currentPlatformRenderPipelineSettings.dynamicResolutionSettings.minPercentage = (currentPlatformRenderPipelineSettings.dynamicResolutionSettings.maxPercentage = Config.DynamicResolutionPercentage.Value);
			currentPlatformRenderPipelineSettings.supportMotionVectors = true;
			currentPlatformRenderPipelineSettings.xrSettings.occlusionMesh = Config.EnableOcclusionMesh.Value;
			currentPlatformRenderPipelineSettings.xrSettings.singlePass = false;
			currentPlatformRenderPipelineSettings.lodBias = new FloatScalableSetting(new float[3]
			{
				Config.LODBias.Value,
				Config.LODBias.Value,
				Config.LODBias.Value
			}, ScalableSettingSchemaId.With3Levels);
			val.currentPlatformRenderPipelineSettings = currentPlatformRenderPipelineSettings;
			InputSystem.settings.defaultButtonPressPoint = Config.ButtonPressPoint.Value;
			return true;
		}

		private static IEnumerator HijackSplashScreen()
		{
			yield return (object)new WaitUntil((Func<bool>)delegate
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				try
				{
					Scene activeScene = SceneManager.GetActiveScene();
					((Scene)(ref activeScene)).GetRootGameObjects();
					return true;
				}
				catch
				{
					return false;
				}
			});
			MeshRenderer component = GameObject.Find("SplashRootObject/Quad").GetComponent<MeshRenderer>();
			((Renderer)component).material = AssetManager.SplashMaterial;
		}
	}
	[Flags]
	public enum Flags
	{
		VR = 1,
		InvalidGameAssembly = 2,
		InteractableDebug = 4,
		ItemOffsetEditor = 8
	}
	internal static class GameObjectExtensions
	{
		public static GameObject Find(this GameObject @object, string name)
		{
			Transform obj = @object.transform.Find(name);
			if (obj == null)
			{
				return null;
			}
			return ((Component)obj).gameObject;
		}
	}
	internal static class Utils
	{
		public enum Hand
		{
			Left,
			Right
		}

		public static byte[] ComputeHash(byte[] input)
		{
			using SHA256 sHA = SHA256.Create();
			return sHA.ComputeHash(input);
		}

		public static string[] ParseConfig(string content)
		{
			string[] source = content.Split("\n", StringSplitOptions.RemoveEmptyEntries);
			return (from line in source
				where !line.TrimStart().StartsWith("#")
				let commentIndex = line.IndexOf('#')
				select (commentIndex < 0) ? line.Trim() : line.Substring(0, commentIndex).Trim() into parsedLine
				where !string.IsNullOrEmpty(parsedLine)
				select parsedLine).ToArray();
		}

		public static string FormatPascalAndAcronym(string input)
		{
			StringBuilder stringBuilder = new StringBuilder(input[0].ToString());
			if (stringBuilder.Length <= 0)
			{
				return stringBuilder.ToString();
			}
			for (int i = 1; i < input.Length; i++)
			{
				char c = input[i - 1];
				char c2 = ((i + 1 < input.Length) ? input[i + 1] : '\0');
				bool flag = char.IsLower(c2);
				bool flag2 = char.IsUpper(c2);
				bool flag3 = char.IsUpper(input[i]);
				bool flag4 = char.IsLower(c);
				bool flag5 = char.IsUpper(c);
				if (!string.IsNullOrWhiteSpace(c.ToString()) && ((flag5 && flag3 && flag) || (flag4 && flag3 && flag) || (flag4 && flag3 && flag2)))
				{
					stringBuilder.Append(' ');
					stringBuilder.Append(input[i]);
				}
				else
				{
					stringBuilder.Append(input[i]);
				}
			}
			return stringBuilder.ToString();
		}

		public static void EnableQualitySetting(this HDAdditionalCameraData camera, FrameSettingsField setting)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected I4, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			((BitArray128)(ref camera.renderingPathCustomFrameSettingsOverrideMask.mask))[(uint)(int)setting] = false;
			((FrameSettings)(ref camera.renderingPathCustomFrameSettings)).SetEnabled(setting, true);
		}

		public static void DisableQualitySetting(this HDAdditionalCameraData camera, FrameSettingsField setting)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected I4, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			((BitArray128)(ref camera.renderingPathCustomFrameSettingsOverrideMask.mask))[(uint)(int)setting] = true;
			((FrameSettings)(ref camera.renderingPathCustomFrameSettings)).SetEnabled(setting, false);
		}

		public static void AttachHeadTrackedPoseDriver(this GameObject @object)
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			TrackedPoseDriver val = @object.AddComponent<TrackedPoseDriver>();
			val.positionAction = Actions.Instance.HeadPosition;
			val.rotationAction = Actions.Instance.HeadRotation;
			val.trackingStateInput = new InputActionProperty(Actions.Instance.HeadTrackingState);
		}

		public static Transform[] GetChildren(this Transform transform)
		{
			List<Transform> list = new List<Transform>();
			for (int i = 0; i < transform.childCount; i++)
			{
				list.Add(transform.GetChild(i));
			}
			return list.ToArray();
		}

		public static void ApplyOffsetTransform(this Transform transform, Transform parent, Vector3 positionOffset, Vector3 rotationOffset)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			transform.rotation = parent.rotation;
			transform.Rotate(rotationOffset);
			transform.position = parent.position + parent.rotation * positionOffset;
		}

		public static XRRayInteractor CreateInteractorController(this GameObject @object, Hand hand, bool rayVisible = true, bool trackingEnabled = true, bool actionsEnabled = true)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			ActionBasedController controller = @object.AddComponent<ActionBasedController>();
			XRRayInteractor result = @object.AddComponent<XRRayInteractor>();
			XRInteractorLineVisual val = @object.AddComponent<XRInteractorLineVisual>();
			LineRenderer component = @object.GetComponent<LineRenderer>();
			val.lineBendRatio = 1f;
			Gradient val2 = new Gradient();
			val2.mode = (GradientMode)0;
			val2.alphaKeys = (GradientAlphaKey[])(object)new GradientAlphaKey[2]
			{
				new GradientAlphaKey(0.1f, 0f),
				new GradientAlphaKey(0.1f, 1f)
			};
			val2.colorKeys = (GradientColorKey[])(object)new GradientColorKey[2]
			{
				new GradientColorKey(Color.white, 0f),
				new GradientColorKey(Color.white, 1f)
			};
			val.invalidColorGradient = val2;
			((Behaviour)val).enabled = rayVisible;
			((Renderer)component).material = AssetManager.DefaultRayMat;
			controller.AddActionBasedControllerBinds(hand, trackingEnabled, actionsEnabled);
			return result;
		}

		private static void AddActionBasedControllerBinds(this ActionBasedController controller, Hand hand, bool trackingEnabled = true, bool actionsEnabled = true)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			((XRBaseController)controller).enableInputTracking = trackingEnabled;
			controller.positionAction = new InputActionProperty(hand.Position());
			controller.rotationAction = new InputActionProperty(hand.Rotation());
			controller.trackingStateAction = new InputActionProperty(hand.TrackingState());
			((XRBaseController)controller).enableInputActions = actionsEnabled;
			controller.selectAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Select", false));
			controller.selectActionValue = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Select Value", false));
			controller.activateAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Activate", false));
			controller.activateActionValue = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Activate Value", false));
			controller.uiPressAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/UI Press", false));
			controller.uiPressActionValue = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/UI Press Value", false));
			controller.uiScrollAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/UI Scroll", false));
			controller.rotateAnchorAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Rotate Anchor", false));
			controller.translateAnchorAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Translate Anchor", false));
			controller.scaleToggleAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Scale Toggle", false));
			controller.scaleDeltaAction = new InputActionProperty(AssetManager.DefaultXRActions.FindAction($"{hand}/Scale Delta", false));
		}

		public static bool Raycast(this Ray ray, out RaycastHit hit, float maxDistance = float.PositiveInfinity, int layerMask = -5)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			return Physics.Raycast(ray, ref hit, maxDistance, layerMask);
		}

		private static InputAction Position(this Hand hand)
		{
			return (InputAction)(hand switch
			{
				Hand.Left => Actions.Instance.LeftHandPosition, 
				Hand.Right => Actions.Instance.RightHandPosition, 
				_ => throw new ArgumentOutOfRangeException("hand", "Invalid hand variant was given"), 
			});
		}

		private static InputAction Rotation(this Hand hand)
		{
			return (InputAction)(hand switch
			{
				Hand.Left => Actions.Instance.LeftHandRotation, 
				Hand.Right => Actions.Instance.RightHandRotation, 
				_ => throw new ArgumentOutOfRangeException("hand", "Invalid hand variant was given"), 
			});
		}

		private static InputAction TrackingState(this Hand hand)
		{
			return (InputAction)(hand switch
			{
				Hand.Left => Actions.Instance.LeftHandTrackingState, 
				Hand.Right => Actions.Instance.RightHandTrackingState, 
				_ => throw new ArgumentOutOfRangeException("hand", "Invalid hand variant was given"), 
			});
		}

		public static bool IsLocalPlayer(this PlayerControllerB player)
		{
			return (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)(object)player;
		}

		public static IEnumerator NopRoutine()
		{
			yield break;
		}
	}
}
namespace LCVR.UI
{
	public class BeltBagUI : MonoBehaviour
	{
		private const float UI_SCALE_GROUNDED = 0.002f;

		private const float UI_SCALE_IN_HAND = 0.0015f;

		private BeltBagInventoryUI inventoryUI;

		private Canvas canvas;

		private void Awake()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			inventoryUI = Object.FindObjectOfType<BeltBagInventoryUI>();
			GameObject val = new GameObject("VR Belt Bag UI");
			val.transform.localScale = Vector3.one * 0.002f;
			canvas = val.AddComponent<Canvas>();
			canvas.worldCamera = VRSession.Instance.MainCamera;
			canvas.renderMode = (RenderMode)2;
			canvas.sortingOrder = 1;
			Transform transform = GameObject.Find("BeltBagUI").transform;
			transform.SetParent(((Component)canvas).transform, false);
			transform.localPosition = Vector3.zero;
			transform.localRotation = Quaternion.identity;
			((Component)((Component)transform).transform.Find("Buttons/ExitButton")).gameObject.SetActive(false);
			for (int i = 0; i < inventoryUI.inventorySlots.Length; i++)
			{
				BeltBagInventorySlot beltBagInventorySlot = Object.Instantiate<GameObject>(AssetManager.Interactable, inventoryUI.inventorySlots[i].transform).AddComponent<BeltBagInventorySlot>();
				((Component)beltBagInventorySlot).transform.localScale = new Vector3(30f, 30f, 1f);
				beltBagInventorySlot.inventory = inventoryUI;
				beltBagInventorySlot.slot = i;
			}
		}

		private void Update()
		{
			if (inventoryUI.currentBeltBag != null)
			{
				if (((GrabbableObject)inventoryUI.currentBeltBag).playerHeldBy == null)
				{
					UpdateGrounded();
				}
				else if ((Object)(object)((GrabbableObject)inventoryUI.currentBeltBag).playerHeldBy == (Object)(object)StartOfRound.Instance.localPlayerController)
				{
					UpdateHand();
				}
			}
		}

		private void LateUpdate()
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			if (inventoryUI.currentBeltBag != null)
			{
				Transform transform = ((Component)inventoryUI.currentBeltBag).transform;
				Transform transform2 = ((Component)canvas).transform;
				transform2.rotation = transform.rotation * Quaternion.Euler(290f, 180f, 0f);
				transform2.position = transform.TransformPoint(new Vector3(0f, 0.15f, 1f));
			}
		}

		private void UpdateGrounded()
		{
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)inventoryUI.currentBeltBag.currentPlayerChecking != (Object)(object)StartOfRound.Instance.localPlayerController)
			{
				return;
			}
			((Component)canvas).transform.localScale = Vector3.one * 0.002f;
			Vector3 val = VRSession.Instance.MainCamera.WorldToViewportPoint(((Component)inventoryUI.currentBeltBag).transform.position);
			float x = val.x;
			if (x >= 0f && x <= 1f)
			{
				x = val.y;
				if (x >= 0f && x <= 1f && val.z > 0f)
				{
					return;
				}
			}
			StartOfRound.Instance.localPlayerController.SetInSpecialMenu(false, (SpecialHUDMenu)1);
		}

		private void UpdateHand()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			((Component)canvas).transform.localScale = Vector3.one * 0.0015f;
		}
	}
	public class BeltBagInventorySlot : MonoBehaviour, VRInteractable
	{
		public BeltBagInventoryUI inventory;

		public int slot;

		public InteractableFlags Flags => InteractableFlags.BothHands;

		public void OnColliderEnter(VRInteractor interactor)
		{
		}

		public void OnColliderExit(VRInteractor interactor)
		{
		}

		public bool OnButtonPress(VRInteractor interactor)
		{
			BeltBagItem currentBeltBag = inventory.currentBeltBag;
			if (currentBeltBag == null || currentBeltBag.objectsInBag.Count < slot || (Object)(object)currentBeltBag.objectsInBag[slot] == (Object)null)
			{
				return true;
			}
			inventory.RemoveItemFromUI(slot);
			return true;
		}

		public void OnButtonRelease(VRInteractor interactor)
		{
		}
	}
	internal class CanvasTransformFollow : MonoBehaviour
	{
		private const float TURN_SMOOTHNESS = 0.05f;

		private const float CANVAS_DISTANCE = 5f;

		public Transform sourceTransform;

		public float heightOffset;

		private Quaternion targetRotation;

		private Vector3 targetPosition;

		private Transform enemyTransform;

		private void Awake()
		{
			Actions.Instance["Reset Height"].performed += OnResetHeight;
			enemyTransform = Object.Instantiate<GameObject>(AssetManager.EnemyPrefab).transform;
			((MonoBehaviour)this).StartCoroutine(Init());
		}

		private void OnDestroy()
		{
			Actions.Instance["Reset Height"].performed -= OnResetHeight;
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, targetRotation, 0.05f);
			((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, targetPosition, 0.05f);
		}

		public void ResetPosition(bool force = false)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			Quaternion val = Quaternion.Euler(0f, sourceTransform.eulerAngles.y, 0f);
			Vector3 val2 = val * Vector3.forward;
			Vector3 val3 = val2 * 5f;
			targetPosition = new Vector3(val3.x + sourceTransform.position.x, heightOffset, val3.z + sourceTransform.position.z);
			targetRotation = Quaternion.Euler(0f, sourceTransform.eulerAngles.y, 0f);
			enemyTransform.position = new Vector3(0f - val3.x + sourceTransform.position.x, heightOffset - 2.5f, 0f - val3.z + sourceTransform.position.z);
			enemyTransform.rotation = Quaternion.Euler(0f, sourceTransform.eulerAngles.y, 0f);
			if (force)
			{
				((Component)this).transform.rotation = targetRotation;
				((Component)this).transform.position = targetPosition;
			}
		}

		private IEnumerator Init()
		{
			yield return null;
			ResetPosition(force: true);
		}

		private void OnResetHeight(CallbackContext context)
		{
			if (((CallbackContext)(ref context)).performed)
			{
				ResetPosition();
			}
		}
	}
	internal class Keyboard : MonoBehaviour
	{
		private readonly Dictionary<TMP_InputField, UnityAction<string>> inputFields = new Dictionary<TMP_InputField, UnityAction<string>>();

		public NonNativeKeyboard keyboard;

		private void Awake()
		{
			((MonoBehaviour)this).StartCoroutine(PopulateInputsRoutine());
		}

		private IEnumerator PopulateInputsRoutine()
		{
			while (true)
			{
				PopulateInputs();
				yield return (object)new WaitForSeconds(0.5f);
			}
		}

		private void PopulateInputs()
		{
			TMP_InputField[] array = Object.FindObjectsOfType<TMP_InputField>(true);
			TMP_InputField[] array2 = array;
			foreach (TMP_InputField input in array2)
			{
				if (!inputFields.ContainsKey(input))
				{
					UnityAction<string> val = delegate
					{
						keyboard.InputField = input;
						keyboard.PresentKeyboard();
					};
					inputFields.Add(input, val);
					((UnityEvent<string>)(object)input.onSelect).AddListener(val);
				}
			}
		}

		private void OnDestroy()
		{
			foreach (KeyValuePair<TMP_InputField, UnityAction<string>> inputField in inputFields)
			{
				((UnityEvent<string>)(object)inputField.Key.onSelect).RemoveListener(inputField.Value);
			}
		}
	}
	public class CaveDwellerScript : MonoBehaviour
	{
		private enum LineOfSightAction
		{
			Nothing,
			Sit,
			Cry,
			Transform
		}

		[SerializeField]
		private GameObject babyContainer;

		[SerializeField]
		private AudioSource cryingAudio;

		[SerializeField]
		private ParticleSystem tearsParticle;

		[SerializeField]
		private Animator babyCreatureAnimator;

		[SerializeField]
		private GameOb

BepInEx/plugins/LCVR/RuntimeDeps/Unity.XR.CoreUtils.dll

Decompiled 5 days ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Unity.Collections;
using Unity.XR.CoreUtils.Bindings.Variables;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem.XR;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.SpatialTracking;
using UnityEngine.UI;
using UnityEngine.XR;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[6425]
		{
			0, 0, 0, 1, 0, 0, 0, 106, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 82,
			84, 114, 97, 99, 107, 97, 98, 108, 101, 115,
			80, 97, 114, 101, 110, 116, 84, 114, 97, 110,
			115, 102, 111, 114, 109, 67, 104, 97, 110, 103,
			101, 100, 69, 118, 101, 110, 116, 65, 114, 103,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 94, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
			101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
			50, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 116, 116, 114, 105, 98, 117, 116,
			101, 115, 92, 69, 110, 117, 109, 68, 105, 115,
			112, 108, 97, 121, 65, 116, 116, 114, 105, 98,
			117, 116, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 96, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 65, 116, 116, 114, 105, 98,
			117, 116, 101, 115, 92, 70, 108, 97, 103, 115,
			80, 114, 111, 112, 101, 114, 116, 121, 65, 116,
			116, 114, 105, 98, 117, 116, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 91, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 116,
			116, 114, 105, 98, 117, 116, 101, 115, 92, 82,
			101, 97, 100, 79, 110, 108, 121, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 105, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
			108, 115, 64, 50, 46, 50, 46, 51, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 115, 92, 83, 99,
			114, 105, 112, 116, 97, 98, 108, 101, 83, 101,
			116, 116, 105, 110, 103, 115, 80, 97, 116, 104,
			65, 116, 116, 114, 105, 98, 117, 116, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 85,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
			117, 116, 105, 108, 115, 64, 50, 46, 50, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			66, 105, 110, 100, 105, 110, 103, 115, 92, 66,
			105, 110, 100, 105, 110, 103, 115, 71, 114, 111,
			117, 112, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 84, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 66, 105, 110, 100, 105, 110, 103,
			115, 92, 69, 118, 101, 110, 116, 66, 105, 110,
			100, 105, 110, 103, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 85, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 66, 105, 110, 100, 105,
			110, 103, 115, 92, 73, 69, 118, 101, 110, 116,
			66, 105, 110, 100, 105, 110, 103, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 94, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 66, 105,
			110, 100, 105, 110, 103, 115, 92, 86, 97, 114,
			105, 97, 98, 108, 101, 115, 92, 66, 105, 110,
			100, 97, 98, 108, 101, 69, 110, 117, 109, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 98,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
			117, 116, 105, 108, 115, 64, 50, 46, 50, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			66, 105, 110, 100, 105, 110, 103, 115, 92, 86,
			97, 114, 105, 97, 98, 108, 101, 115, 92, 66,
			105, 110, 100, 97, 98, 108, 101, 86, 97, 114,
			105, 97, 98, 108, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 103, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
			115, 64, 50, 46, 50, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 66, 105, 110, 100,
			105, 110, 103, 115, 92, 86, 97, 114, 105, 97,
			98, 108, 101, 115, 92, 66, 105, 110, 100, 97,
			98, 108, 101, 86, 97, 114, 105, 97, 98, 108,
			101, 65, 108, 108, 111, 99, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 102, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
			108, 115, 64, 50, 46, 50, 46, 51, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 66, 105, 110,
			100, 105, 110, 103, 115, 92, 86, 97, 114, 105,
			97, 98, 108, 101, 115, 92, 66, 105, 110, 100,
			97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
			108, 101, 66, 97, 115, 101, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 111, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
			108, 115, 64, 50, 46, 50, 46, 51, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 66, 105, 110,
			100, 105, 110, 103, 115, 92, 86, 97, 114, 105,
			97, 98, 108, 101, 115, 92, 66, 105, 110, 100,
			97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
			108, 101, 84, 97, 115, 107, 80, 114, 101, 100,
			105, 99, 97, 116, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 107, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
			115, 64, 50, 46, 50, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 66, 105, 110, 100,
			105, 110, 103, 115, 92, 86, 97, 114, 105, 97,
			98, 108, 101, 115, 92, 73, 82, 101, 97, 100,
			79, 110, 108, 121, 66, 105, 110, 100, 97, 98,
			108, 101, 86, 97, 114, 105, 97, 98, 108, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			74, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 66, 111, 117, 110, 100, 115, 85, 116, 105,
			108, 115, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 84, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 67, 97, 99, 104, 101, 100, 67,
			111, 109, 112, 111, 110, 101, 110, 116, 70, 105,
			108, 116, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 77, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 67, 111, 108, 108, 101,
			99, 116, 105, 111, 110, 80, 111, 111, 108, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 86,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
			117, 116, 105, 108, 115, 64, 50, 46, 50, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			67, 111, 108, 108, 101, 99, 116, 105, 111, 110,
			115, 92, 72, 97, 115, 104, 83, 101, 116, 76,
			105, 115, 116, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 77, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 67, 111, 109, 112, 111, 110,
			101, 110, 116, 85, 116, 105, 108, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 89, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 68,
			97, 116, 117, 109, 115, 92, 65, 110, 105, 109,
			97, 116, 105, 111, 110, 67, 117, 114, 118, 101,
			68, 97, 116, 117, 109, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 97, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
			115, 64, 50, 46, 50, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 68, 97, 116, 117,
			109, 115, 92, 65, 110, 105, 109, 97, 116, 105,
			111, 110, 67, 117, 114, 118, 101, 68, 97, 116,
			117, 109, 80, 114, 111, 112, 101, 114, 116, 121,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			75, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 68, 97, 116, 117, 109, 115, 92, 68, 97,
			116, 117, 109, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 83, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 68, 97, 116, 117, 109, 115,
			92, 68, 97, 116, 117, 109, 80, 114, 111, 112,
			101, 114, 116, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 80, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 68, 97, 116, 117, 109,
			115, 92, 70, 108, 111, 97, 116, 68, 97, 116,
			117, 109, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 88, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 68, 97, 116, 117, 109, 115, 92,
			70, 108, 111, 97, 116, 68, 97, 116, 117, 109,
			80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 78, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 68,
			97, 116, 117, 109, 115, 92, 73, 110, 116, 68,
			97, 116, 117, 109, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 86, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 68, 97, 116, 117, 109,
			115, 92, 73, 110, 116, 68, 97, 116, 117, 109,
			80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 81, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 68,
			97, 116, 117, 109, 115, 92, 83, 116, 114, 105,
			110, 103, 68, 97, 116, 117, 109, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 89, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 68, 97,
			116, 117, 109, 115, 92, 83, 116, 114, 105, 110,
			103, 68, 97, 116, 117, 109, 80, 114, 111, 112,
			101, 114, 116, 121, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 73, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 69, 110, 117, 109, 86,
			97, 108, 117, 101, 115, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 90, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
			115, 64, 50, 46, 50, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 92, 66, 111, 117,
			110, 100, 115, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 90, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 67, 97, 109, 101, 114,
			97, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 94, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
			101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
			50, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 92, 67, 111, 108, 108, 101, 99, 116,
			105, 111, 110, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 94, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 68, 105, 99, 116, 105,
			111, 110, 97, 114, 121, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 94, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
			115, 64, 50, 46, 50, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 92, 71, 97, 109,
			101, 79, 98, 106, 101, 99, 116, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 88, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 92, 71,
			117, 105, 100, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 91, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 72, 97, 115, 104, 83,
			101, 116, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 93, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 76, 97, 121, 101, 114, 77,
			97, 115, 107, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 88, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 76, 105, 115, 116, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 97,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
			117, 116, 105, 108, 115, 64, 50, 46, 50, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			92, 77, 111, 110, 111, 66, 101, 104, 97, 118,
			105, 111, 117, 114, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 88, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 92, 80, 111, 115, 101,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			94, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 92, 81, 117, 97, 116, 101, 114, 110, 105,
			111, 110, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 93, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 83, 116, 111, 112, 119, 97,
			116, 99, 104, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 90, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 92, 83, 116, 114, 105, 110,
			103, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 93, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
			101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
			50, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 92, 84, 114, 97, 110, 115, 102, 111,
			114, 109, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 88, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 92, 84, 121, 112, 101, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 9, 0, 0, 0, 94, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
			85, 110, 105, 116, 121, 69, 118, 101, 110, 116,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			91, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 92, 86, 101, 99, 116, 111, 114, 50, 69,
			120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 91,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
			117, 116, 105, 108, 115, 64, 50, 46, 50, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			92, 86, 101, 99, 116, 111, 114, 51, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 78, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 71,
			97, 109, 101, 79, 98, 106, 101, 99, 116, 85,
			116, 105, 108, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 76, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 71, 101, 111, 109, 101,
			116, 114, 121, 85, 116, 105, 108, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 71, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 71,
			117, 105, 100, 85, 116, 105, 108, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 75, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 72, 97,
			115, 104, 67, 111, 100, 101, 85, 116, 105, 108,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			76, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 85,
			116, 105, 108, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 74, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 77, 97, 116, 104, 85,
			116, 105, 108, 105, 116, 121, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 79, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
			108, 115, 64, 50, 46, 50, 46, 51, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 78, 97, 116,
			105, 118, 101, 65, 114, 114, 97, 121, 85, 116,
			105, 108, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 73, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 79, 98, 106, 101, 99, 116,
			80, 111, 111, 108, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 80, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
			64, 50, 46, 50, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 79, 110, 68, 101, 115,
			116, 114, 111, 121, 78, 111, 116, 105, 102, 105,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 78, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
			114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
			46, 50, 46, 51, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 82, 101, 102, 108, 101, 99, 116,
			105, 111, 110, 85, 116, 105, 108, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 81, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 83,
			99, 114, 105, 112, 116, 97, 98, 108, 101, 83,
			101, 116, 116, 105, 110, 103, 115, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 85, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 83, 99,
			114, 105, 112, 116, 97, 98, 108, 101, 83, 101,
			116, 116, 105, 110, 103, 115, 66, 97, 115, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			79, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
			45, 117, 116, 105, 108, 115, 64, 50, 46, 50,
			46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 83, 101, 114, 105, 97, 108, 105, 122, 97,
			98, 108, 101, 71, 117, 105, 100, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 83, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
			105, 108, 115, 64, 50, 46, 50, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 83, 101,
			114, 105, 97, 108, 105, 122, 97, 98, 108, 101,
			71, 117, 105, 100, 85, 116, 105, 108, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 75, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 84,
			101, 120, 116, 117, 114, 101, 85, 116, 105, 108,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 72, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
			101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
			50, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 100, 111, 66, 108, 111, 99,
			107, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 79, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
			101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
			50, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 85, 110, 105, 116, 121, 79, 98, 106,
			101, 99, 116, 85, 116, 105, 108, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 77, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
			116, 105, 108, 115, 64, 50, 46, 50, 46, 51,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 88,
			82, 76, 111, 103, 103, 105, 110, 103, 85, 116,
			105, 108, 115, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 71, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
			111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
			50, 46, 50, 46, 51, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 88, 82, 79, 114, 105, 103,
			105, 110, 46, 99, 115
		};
		result.TypesData = new byte[3490]
		{
			0, 0, 0, 0, 62, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 65, 82, 84, 114, 97, 99,
			107, 97, 98, 108, 101, 115, 80, 97, 114, 101,
			110, 116, 84, 114, 97, 110, 115, 102, 111, 114,
			109, 67, 104, 97, 110, 103, 101, 100, 69, 118,
			101, 110, 116, 65, 114, 103, 115, 0, 0, 0,
			0, 43, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			46, 71, 85, 73, 124, 69, 110, 117, 109, 68,
			105, 115, 112, 108, 97, 121, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 0, 0, 0, 0, 45,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 46, 71,
			85, 73, 124, 70, 108, 97, 103, 115, 80, 114,
			111, 112, 101, 114, 116, 121, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 0, 0, 0, 0, 36,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 124, 82,
			101, 97, 100, 79, 110, 108, 121, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 0, 0, 0, 0,
			50, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
			83, 99, 114, 105, 112, 116, 97, 98, 108, 101,
			83, 101, 116, 116, 105, 110, 103, 115, 80, 97,
			116, 104, 65, 116, 116, 114, 105, 98, 117, 116,
			101, 0, 0, 0, 0, 41, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 46, 66, 105, 110, 100, 105,
			110, 103, 115, 124, 66, 105, 110, 100, 105, 110,
			103, 115, 71, 114, 111, 117, 112, 0, 0, 0,
			0, 40, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			46, 66, 105, 110, 100, 105, 110, 103, 115, 124,
			69, 118, 101, 110, 116, 66, 105, 110, 100, 105,
			110, 103, 0, 0, 0, 0, 41, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 46, 66, 105, 110, 100,
			105, 110, 103, 115, 124, 73, 69, 118, 101, 110,
			116, 66, 105, 110, 100, 105, 110, 103, 0, 0,
			0, 0, 50, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 46, 66, 105, 110, 100, 105, 110, 103, 115,
			46, 86, 97, 114, 105, 97, 98, 108, 101, 115,
			124, 66, 105, 110, 100, 97, 98, 108, 101, 69,
			110, 117, 109, 0, 0, 0, 0, 54, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 46, 66, 105, 110,
			100, 105, 110, 103, 115, 46, 86, 97, 114, 105,
			97, 98, 108, 101, 115, 124, 66, 105, 110, 100,
			97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
			108, 101, 0, 0, 0, 0, 59, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 46, 66, 105, 110, 100,
			105, 110, 103, 115, 46, 86, 97, 114, 105, 97,
			98, 108, 101, 115, 124, 66, 105, 110, 100, 97,
			98, 108, 101, 86, 97, 114, 105, 97, 98, 108,
			101, 65, 108, 108, 111, 99, 0, 0, 0, 0,
			58, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
			66, 105, 110, 100, 105, 110, 103, 115, 46, 86,
			97, 114, 105, 97, 98, 108, 101, 115, 124, 66,
			105, 110, 100, 97, 98, 108, 101, 86, 97, 114,
			105, 97, 98, 108, 101, 66, 97, 115, 101, 0,
			0, 0, 0, 67, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 46, 66, 105, 110, 100, 105, 110, 103,
			115, 46, 86, 97, 114, 105, 97, 98, 108, 101,
			115, 124, 66, 105, 110, 100, 97, 98, 108, 101,
			86, 97, 114, 105, 97, 98, 108, 101, 84, 97,
			115, 107, 80, 114, 101, 100, 105, 99, 97, 116,
			101, 0, 0, 0, 0, 63, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 46, 66, 105, 110, 100, 105,
			110, 103, 115, 46, 86, 97, 114, 105, 97, 98,
			108, 101, 115, 124, 66, 105, 110, 100, 97, 98,
			108, 101, 86, 97, 114, 105, 97, 98, 108, 101,
			84, 97, 115, 107, 83, 116, 97, 116, 101, 0,
			0, 0, 0, 63, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 46, 66, 105, 110, 100, 105, 110, 103,
			115, 46, 86, 97, 114, 105, 97, 98, 108, 101,
			115, 124, 73, 82, 101, 97, 100, 79, 110, 108,
			121, 66, 105, 110, 100, 97, 98, 108, 101, 86,
			97, 114, 105, 97, 98, 108, 101, 0, 0, 0,
			0, 30, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 66, 111, 117, 110, 100, 115, 85, 116, 105,
			108, 115, 0, 0, 0, 0, 33, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 124, 73, 67, 111, 109,
			112, 111, 110, 101, 110, 116, 72, 111, 115, 116,
			0, 0, 0, 0, 40, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 67, 97, 99, 104, 101, 100,
			67, 111, 109, 112, 111, 110, 101, 110, 116, 70,
			105, 108, 116, 101, 114, 0, 0, 0, 0, 33,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 124, 67,
			111, 108, 108, 101, 99, 116, 105, 111, 110, 80,
			111, 111, 108, 0, 0, 0, 0, 42, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 46, 67, 111, 108,
			108, 101, 99, 116, 105, 111, 110, 115, 124, 72,
			97, 115, 104, 83, 101, 116, 76, 105, 115, 116,
			1, 0, 0, 0, 33, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 67, 111, 109, 112, 111, 110,
			101, 110, 116, 85, 116, 105, 108, 115, 1, 0,
			0, 0, 33, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 124, 67, 111, 109, 112, 111, 110, 101, 110,
			116, 85, 116, 105, 108, 115, 0, 0, 0, 0,
			45, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
			68, 97, 116, 117, 109, 115, 124, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 67, 117, 114, 118,
			101, 68, 97, 116, 117, 109, 0, 0, 0, 0,
			53, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
			68, 97, 116, 117, 109, 115, 124, 65, 110, 105,
			109, 97, 116, 105, 111, 110, 67, 117, 114, 118,
			101, 68, 97, 116, 117, 109, 80, 114, 111, 112,
			101, 114, 116, 121, 0, 0, 0, 0, 31, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 46, 68, 97,
			116, 117, 109, 115, 124, 68, 97, 116, 117, 109,
			0, 0, 0, 0, 39, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 46, 68, 97, 116, 117, 109, 115,
			124, 68, 97, 116, 117, 109, 80, 114, 111, 112,
			101, 114, 116, 121, 0, 0, 0, 0, 36, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 46, 68, 97,
			116, 117, 109, 115, 124, 70, 108, 111, 97, 116,
			68, 97, 116, 117, 109, 0, 0, 0, 0, 44,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 46, 68,
			97, 116, 117, 109, 115, 124, 70, 108, 111, 97,
			116, 68, 97, 116, 117, 109, 80, 114, 111, 112,
			101, 114, 116, 121, 0, 0, 0, 0, 34, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 46, 68, 97,
			116, 117, 109, 115, 124, 73, 110, 116, 68, 97,
			116, 117, 109, 0, 0, 0, 0, 42, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 46, 68, 97, 116,
			117, 109, 115, 124, 73, 110, 116, 68, 97, 116,
			117, 109, 80, 114, 111, 112, 101, 114, 116, 121,
			0, 0, 0, 0, 37, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 46, 68, 97, 116, 117, 109, 115,
			124, 83, 116, 114, 105, 110, 103, 68, 97, 116,
			117, 109, 0, 0, 0, 0, 45, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 46, 68, 97, 116, 117,
			109, 115, 124, 83, 116, 114, 105, 110, 103, 68,
			97, 116, 117, 109, 80, 114, 111, 112, 101, 114,
			116, 121, 0, 0, 0, 0, 29, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 124, 69, 110, 117, 109,
			86, 97, 108, 117, 101, 115, 0, 0, 0, 0,
			35, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
			66, 111, 117, 110, 100, 115, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			35, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
			67, 97, 109, 101, 114, 97, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			39, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
			67, 111, 108, 108, 101, 99, 116, 105, 111, 110,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 39, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 68, 105, 99, 116, 105, 111,
			110, 97, 114, 121, 69, 120, 116, 101, 110, 115,
			105, 111, 110, 115, 0, 0, 0, 0, 39, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 124, 71, 97,
			109, 101, 79, 98, 106, 101, 99, 116, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 33, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 124, 71, 117, 105, 100, 69, 120, 116, 101,
			110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
			36, 85, 110, 105, 116, 121, 46, 88, 82, 46,
			67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
			72, 97, 115, 104, 83, 101, 116, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
			0, 38, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 76, 97, 121, 101, 114, 77, 97, 115, 107,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 33, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 76, 105, 115, 116, 69, 120,
			116, 101, 110, 115, 105, 111, 110, 115, 0, 0,
			0, 0, 42, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 124, 77, 111, 110, 111, 66, 101, 104, 97,
			118, 105, 111, 117, 114, 69, 120, 116, 101, 110,
			115, 105, 111, 110, 115, 0, 0, 0, 0, 33,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 124, 80,
			111, 115, 101, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 39, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 124, 81, 117, 97,
			116, 101, 114, 110, 105, 111, 110, 69, 120, 116,
			101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
			0, 38, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 83, 116, 111, 112, 119, 97, 116, 99, 104,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 35, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 83, 116, 114, 105, 110, 103,
			69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
			0, 0, 0, 0, 38, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 84, 114, 97, 110, 115, 102,
			111, 114, 109, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 33, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 124, 84, 121, 112,
			101, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 0, 0, 0, 0, 33, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 66, 111, 111, 108, 85,
			110, 105, 116, 121, 69, 118, 101, 110, 116, 0,
			0, 0, 0, 34, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 124, 70, 108, 111, 97, 116, 85, 110,
			105, 116, 121, 69, 118, 101, 110, 116, 0, 0,
			0, 0, 36, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 124, 86, 101, 99, 116, 111, 114, 50, 85,
			110, 105, 116, 121, 69, 118, 101, 110, 116, 0,
			0, 0, 0, 36, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 124, 86, 101, 99, 116, 111, 114, 51,
			85, 110, 105, 116, 121, 69, 118, 101, 110, 116,
			0, 0, 0, 0, 36, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 86, 101, 99, 116, 111, 114,
			52, 85, 110, 105, 116, 121, 69, 118, 101, 110,
			116, 0, 0, 0, 0, 39, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 81, 117, 97, 116, 101,
			114, 110, 105, 111, 110, 85, 110, 105, 116, 121,
			69, 118, 101, 110, 116, 0, 0, 0, 0, 32,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 124, 73,
			110, 116, 85, 110, 105, 116, 121, 69, 118, 101,
			110, 116, 0, 0, 0, 0, 34, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 124, 67, 111, 108, 111,
			114, 85, 110, 105, 116, 121, 69, 118, 101, 110,
			116, 0, 0, 0, 0, 35, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 83, 116, 114, 105, 110,
			103, 85, 110, 105, 116, 121, 69, 118, 101, 110,
			116, 0, 0, 0, 0, 36, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 86, 101, 99, 116, 111,
			114, 50, 69, 120, 116, 101, 110, 115, 105, 111,
			110, 115, 0, 0, 0, 0, 36, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 124, 86, 101, 99, 116,
			111, 114, 51, 69, 120, 116, 101, 110, 115, 105,
			111, 110, 115, 0, 0, 0, 0, 34, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 124, 71, 97, 109,
			101, 79, 98, 106, 101, 99, 116, 85, 116, 105,
			108, 115, 0, 0, 0, 0, 32, 85, 110, 105,
			116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
			85, 116, 105, 108, 115, 124, 71, 101, 111, 109,
			101, 116, 114, 121, 85, 116, 105, 108, 115, 0,
			0, 0, 0, 27, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 124, 71, 117, 105, 100, 85, 116, 105,
			108, 0, 0, 0, 0, 31, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 72, 97, 115, 104, 67,
			111, 100, 101, 85, 116, 105, 108, 0, 0, 0,
			0, 32, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 77, 97, 116, 101, 114, 105, 97, 108, 85,
			116, 105, 108, 115, 0, 0, 0, 0, 30, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 124, 77, 97,
			116, 104, 85, 116, 105, 108, 105, 116, 121, 0,
			0, 0, 0, 35, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 124, 78, 97, 116, 105, 118, 101, 65,
			114, 114, 97, 121, 85, 116, 105, 108, 115, 0,
			0, 0, 0, 29, 85, 110, 105, 116, 121, 46,
			88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
			108, 115, 124, 79, 98, 106, 101, 99, 116, 80,
			111, 111, 108, 0, 0, 0, 0, 36, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 124, 79, 110, 68,
			101, 115, 116, 114, 111, 121, 78, 111, 116, 105,
			102, 105, 101, 114, 0, 0, 0, 0, 34, 85,
			110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
			114, 101, 85, 116, 105, 108, 115, 124, 82, 101,
			102, 108, 101, 99, 116, 105, 111, 110, 85, 116,
			105, 108, 115, 0, 0, 0, 0, 37, 85, 110,
			105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
			101, 85, 116, 105, 108, 115, 124, 83, 99, 114,
			105, 112, 116, 97, 98, 108, 101, 83, 101, 116,
			116, 105, 110, 103, 115, 1, 0, 0, 0, 41,
			85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
			111, 114, 101, 85, 116, 105, 108, 115, 124, 83,
			99, 114, 105, 112, 116, 97, 98, 108, 101, 83,
			101, 116, 116, 105, 110, 103, 115, 66, 97, 115,
			101, 1, 0, 0, 0, 41, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 83, 99, 114, 105, 112,
			116, 97, 98, 108, 101, 83, 101, 116, 116, 105,
			110, 103, 115, 66, 97, 115, 101, 0, 0, 0,
			0, 35, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 83, 101, 114, 105, 97, 108, 105, 122, 97,
			98, 108, 101, 71, 117, 105, 100, 0, 0, 0,
			0, 39, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 83, 101, 114, 105, 97, 108, 105, 122, 97,
			98, 108, 101, 71, 117, 105, 100, 85, 116, 105,
			108, 0, 0, 0, 0, 31, 85, 110, 105, 116,
			121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
			116, 105, 108, 115, 124, 84, 101, 120, 116, 117,
			114, 101, 85, 116, 105, 108, 115, 0, 0, 0,
			0, 28, 85, 110, 105, 116, 121, 46, 88, 82,
			46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
			124, 85, 110, 100, 111, 66, 108, 111, 99, 107,
			0, 0, 0, 0, 35, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 85, 110, 105, 116, 121, 79,
			98, 106, 101, 99, 116, 85, 116, 105, 108, 115,
			0, 0, 0, 0, 33, 85, 110, 105, 116, 121,
			46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
			105, 108, 115, 124, 88, 82, 76, 111, 103, 103,
			105, 110, 103, 85, 116, 105, 108, 115, 0, 0,
			0, 0, 27, 85, 110, 105, 116, 121, 46, 88,
			82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
			115, 124, 88, 82, 79, 114, 105, 103, 105, 110
		};
		result.TotalFiles = 68;
		result.TotalTypes = 80;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace Unity.XR.CoreUtils
{
	public readonly struct ARTrackablesParentTransformChangedEventArgs : IEquatable<ARTrackablesParentTransformChangedEventArgs>
	{
		public XROrigin Origin { get; }

		public Transform TrackablesParent { get; }

		public ARTrackablesParentTransformChangedEventArgs(XROrigin origin, Transform trackablesParent)
		{
			if ((Object)(object)origin == (Object)null)
			{
				throw new ArgumentNullException("origin");
			}
			if ((Object)(object)trackablesParent == (Object)null)
			{
				throw new ArgumentNullException("trackablesParent");
			}
			Origin = origin;
			TrackablesParent = trackablesParent;
		}

		public bool Equals(ARTrackablesParentTransformChangedEventArgs other)
		{
			if ((Object)(object)Origin == (Object)(object)other.Origin)
			{
				return (Object)(object)TrackablesParent == (Object)(object)other.TrackablesParent;
			}
			return false;
		}

		public override bool Equals(object obj)
		{
			if (obj is ARTrackablesParentTransformChangedEventArgs other)
			{
				return Equals(other);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return HashCodeUtil.Combine(HashCodeUtil.ReferenceHash(Origin), HashCodeUtil.ReferenceHash(TrackablesParent));
		}

		public static bool operator ==(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs)
		{
			return lhs.Equals(rhs);
		}

		public static bool operator !=(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs)
		{
			return !lhs.Equals(rhs);
		}
	}
	public class ReadOnlyAttribute : PropertyAttribute
	{
	}
	[AttributeUsage(AttributeTargets.Class)]
	public class ScriptableSettingsPathAttribute : Attribute
	{
		private readonly string m_Path;

		public string Path => m_Path;

		public ScriptableSettingsPathAttribute(string path = "")
		{
			m_Path = path;
		}
	}
	public static class BoundsUtils
	{
		private static readonly List<Renderer> k_Renderers = new List<Renderer>();

		private static readonly List<Transform> k_Transforms = new List<Transform>();

		public static Bounds GetBounds(List<GameObject> gameObjects)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			Bounds? val = null;
			foreach (GameObject gameObject in gameObjects)
			{
				Bounds bounds = GetBounds(gameObject.transform);
				if (!val.HasValue)
				{
					val = bounds;
					continue;
				}
				((Bounds)(ref bounds)).Encapsulate(val.Value);
				val = bounds;
			}
			return val.GetValueOrDefault();
		}

		public static Bounds GetBounds(Transform[] transforms)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			Bounds? val = null;
			for (int i = 0; i < transforms.Length; i++)
			{
				Bounds bounds = GetBounds(transforms[i]);
				if (!val.HasValue)
				{
					val = bounds;
					continue;
				}
				((Bounds)(ref bounds)).Encapsulate(val.Value);
				val = bounds;
			}
			return val.GetValueOrDefault();
		}

		public static Bounds GetBounds(Transform transform)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			((Component)transform).GetComponentsInChildren<Renderer>(k_Renderers);
			Bounds bounds = GetBounds(k_Renderers);
			if (((Bounds)(ref bounds)).size == Vector3.zero)
			{
				((Component)transform).GetComponentsInChildren<Transform>(k_Transforms);
				if (k_Transforms.Count > 0)
				{
					((Bounds)(ref bounds)).center = k_Transforms[0].position;
				}
				foreach (Transform k_Transform in k_Transforms)
				{
					((Bounds)(ref bounds)).Encapsulate(k_Transform.position);
				}
			}
			return bounds;
		}

		public static Bounds GetBounds(List<Renderer> renderers)
		{
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			Bounds result2;
			if (renderers.Count > 0)
			{
				Renderer val = renderers[0];
				Bounds result = default(Bounds);
				((Bounds)(ref result))..ctor(((Component)val).transform.position, Vector3.zero);
				{
					foreach (Renderer renderer in renderers)
					{
						result2 = renderer.bounds;
						if (((Bounds)(ref result2)).size != Vector3.zero)
						{
							((Bounds)(ref result)).Encapsulate(renderer.bounds);
						}
					}
					return result;
				}
			}
			result2 = default(Bounds);
			return result2;
		}

		public static Bounds GetBounds<T>(List<T> colliders) where T : Collider
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			Bounds result2;
			if (colliders.Count > 0)
			{
				T val = colliders[0];
				Bounds result = default(Bounds);
				((Bounds)(ref result))..ctor(((Component)(object)val).transform.position, Vector3.zero);
				{
					foreach (T collider in colliders)
					{
						result2 = ((Collider)collider).bounds;
						if (((Bounds)(ref result2)).size != Vector3.zero)
						{
							((Bounds)(ref result)).Encapsulate(((Collider)collider).bounds);
						}
					}
					return result;
				}
			}
			result2 = default(Bounds);
			return result2;
		}

		public static Bounds GetBounds(List<Vector3> points)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			Bounds result = default(Bounds);
			if (points.Count < 1)
			{
				return result;
			}
			Vector3 val = points[0];
			Vector3 val2 = val;
			for (int i = 1; i < points.Count; i++)
			{
				Vector3 val3 = points[i];
				if (val3.x < val.x)
				{
					val.x = val3.x;
				}
				if (val3.y < val.y)
				{
					val.y = val3.y;
				}
				if (val3.z < val.z)
				{
					val.z = val3.z;
				}
				if (val3.x > val2.x)
				{
					val2.x = val3.x;
				}
				if (val3.y > val2.y)
				{
					val2.y = val3.y;
				}
				if (val3.z > val2.z)
				{
					val2.z = val3.z;
				}
			}
			((Bounds)(ref result)).SetMinMax(val, val2);
			return result;
		}
	}
	public interface IComponentHost<THostType> where THostType : class
	{
		THostType[] HostedComponents { get; }
	}
	[Flags]
	public enum CachedSearchType
	{
		Children = 1,
		Self = 2,
		Parents = 4
	}
	public class CachedComponentFilter<TFilterType, TRootType> : IDisposable where TFilterType : class where TRootType : Component
	{
		private readonly List<TFilterType> m_MasterComponentStorage;

		private static readonly List<TFilterType> k_TempComponentList = new List<TFilterType>();

		private static readonly List<IComponentHost<TFilterType>> k_TempHostComponentList = new List<IComponentHost<TFilterType>>();

		private bool m_DisposedValue;

		public CachedComponentFilter(TRootType componentRoot, CachedSearchType cachedSearchType = CachedSearchType.Children | CachedSearchType.Self, bool includeDisabled = true)
		{
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			m_MasterComponentStorage = CollectionPool<List<TFilterType>, TFilterType>.GetCollection();
			k_TempComponentList.Clear();
			k_TempHostComponentList.Clear();
			if ((cachedSearchType & CachedSearchType.Self) == CachedSearchType.Self)
			{
				((Component)componentRoot).GetComponents<TFilterType>(k_TempComponentList);
				((Component)componentRoot).GetComponents<IComponentHost<TFilterType>>(k_TempHostComponentList);
				FilteredCopyToMaster(includeDisabled);
			}
			if ((cachedSearchType & CachedSearchType.Parents) == CachedSearchType.Parents)
			{
				Transform parent = ((Component)componentRoot).transform.parent;
				while ((Object)(object)parent != (Object)null && !((Object)(object)((Component)parent).GetComponent<TRootType>() != (Object)null))
				{
					((Component)parent).GetComponents<TFilterType>(k_TempComponentList);
					((Component)parent).GetComponents<IComponentHost<TFilterType>>(k_TempHostComponentList);
					FilteredCopyToMaster(includeDisabled);
					parent = ((Component)parent).transform.parent;
				}
			}
			if ((cachedSearchType & CachedSearchType.Children) != CachedSearchType.Children)
			{
				return;
			}
			foreach (Transform item in ((Component)componentRoot).transform)
			{
				((Component)item).GetComponentsInChildren<TFilterType>(k_TempComponentList);
				((Component)item).GetComponentsInChildren<IComponentHost<TFilterType>>(k_TempHostComponentList);
				FilteredCopyToMaster(includeDisabled, componentRoot);
			}
		}

		public CachedComponentFilter(TFilterType[] componentList, bool includeDisabled = true)
		{
			if (componentList != null)
			{
				m_MasterComponentStorage = CollectionPool<List<TFilterType>, TFilterType>.GetCollection();
				k_TempComponentList.Clear();
				k_TempComponentList.AddRange(componentList);
				FilteredCopyToMaster(includeDisabled);
			}
		}

		public void StoreMatchingComponents<TChildType>(List<TChildType> outputList) where TChildType : class, TFilterType
		{
			foreach (TFilterType item2 in m_MasterComponentStorage)
			{
				if (item2 is TChildType item)
				{
					outputList.Add(item);
				}
			}
		}

		public TChildType[] GetMatchingComponents<TChildType>() where TChildType : class, TFilterType
		{
			int num = 0;
			foreach (TFilterType item in m_MasterComponentStorage)
			{
				if (item is TChildType)
				{
					num++;
				}
			}
			TChildType[] array = new TChildType[num];
			num = 0;
			foreach (TFilterType item2 in m_MasterComponentStorage)
			{
				if (item2 is TChildType val)
				{
					array[num] = val;
					num++;
				}
			}
			return array;
		}

		private void FilteredCopyToMaster(bool includeDisabled)
		{
			if (includeDisabled)
			{
				m_MasterComponentStorage.AddRange(k_TempComponentList);
				{
					foreach (IComponentHost<TFilterType> k_TempHostComponent in k_TempHostComponentList)
					{
						m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents);
					}
					return;
				}
			}
			foreach (TFilterType k_TempComponent in k_TempComponentList)
			{
				Behaviour val = (Behaviour)(object)((k_TempComponent is Behaviour) ? k_TempComponent : null);
				if (!((Object)(object)val != (Object)null) || val.enabled)
				{
					m_MasterComponentStorage.Add(k_TempComponent);
				}
			}
			foreach (IComponentHost<TFilterType> k_TempHostComponent2 in k_TempHostComponentList)
			{
				Behaviour val2 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null);
				if (!((Object)(object)val2 != (Object)null) || val2.enabled)
				{
					m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents);
				}
			}
		}

		private void FilteredCopyToMaster(bool includeDisabled, TRootType requiredRoot)
		{
			if (includeDisabled)
			{
				foreach (TFilterType k_TempComponent in k_TempComponentList)
				{
					Component val = (Component)(object)((k_TempComponent is Component) ? k_TempComponent : null);
					if (!((Object)(object)val.transform == (Object)(object)requiredRoot) && !((Object)(object)val.GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
					{
						m_MasterComponentStorage.Add(k_TempComponent);
					}
				}
				{
					foreach (IComponentHost<TFilterType> k_TempHostComponent in k_TempHostComponentList)
					{
						Component val2 = (Component)((k_TempHostComponent is Component) ? k_TempHostComponent : null);
						if (!((Object)(object)val2.transform == (Object)(object)requiredRoot) && !((Object)(object)val2.GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
						{
							m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents);
						}
					}
					return;
				}
			}
			foreach (TFilterType k_TempComponent2 in k_TempComponentList)
			{
				Behaviour val3 = (Behaviour)(object)((k_TempComponent2 is Behaviour) ? k_TempComponent2 : null);
				if (val3.enabled && !((Object)(object)((Component)val3).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val3).GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
				{
					m_MasterComponentStorage.Add(k_TempComponent2);
				}
			}
			foreach (IComponentHost<TFilterType> k_TempHostComponent2 in k_TempHostComponentList)
			{
				Behaviour val4 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null);
				if (val4.enabled && !((Object)(object)((Component)val4).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val4).GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
				{
					m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents);
				}
			}
		}

		protected virtual void Dispose(bool disposing)
		{
			if (!m_DisposedValue)
			{
				if (disposing && m_MasterComponentStorage != null)
				{
					CollectionPool<List<TFilterType>, TFilterType>.RecycleCollection(m_MasterComponentStorage);
				}
				m_DisposedValue = true;
			}
		}

		public void Dispose()
		{
			Dispose(disposing: true);
		}
	}
	public static class CollectionPool<TCollection, TValue> where TCollection : ICollection<TValue>, new()
	{
		private static readonly Queue<TCollection> k_CollectionQueue = new Queue<TCollection>();

		public static TCollection GetCollection()
		{
			if (k_CollectionQueue.Count <= 0)
			{
				return new TCollection();
			}
			return k_CollectionQueue.Dequeue();
		}

		public static void RecycleCollection(TCollection collection)
		{
			collection.Clear();
			k_CollectionQueue.Enqueue(collection);
		}
	}
	public static class ComponentUtils<T>
	{
		private static readonly List<T> k_RetrievalList = new List<T>();

		public static T GetComponent(GameObject gameObject)
		{
			T result = default(T);
			gameObject.GetComponents<T>(k_RetrievalList);
			if (k_RetrievalList.Count > 0)
			{
				return k_RetrievalList[0];
			}
			return result;
		}

		public static T GetComponentInChildren(GameObject gameObject)
		{
			T result = default(T);
			gameObject.GetComponentsInChildren<T>(k_RetrievalList);
			if (k_RetrievalList.Count > 0)
			{
				return k_RetrievalList[0];
			}
			return result;
		}
	}
	public static class ComponentUtils
	{
		public static T GetOrAddIf<T>(GameObject gameObject, bool add) where T : Component
		{
			T val = gameObject.GetComponent<T>();
			if (add && (Object)(object)val == (Object)null)
			{
				val = gameObject.AddComponent<T>();
			}
			return val;
		}
	}
	public static class EnumValues<T>
	{
		public static readonly T[] Values = (T[])Enum.GetValues(typeof(T));
	}
	public static class BoundsExtensions
	{
		public static bool ContainsCompletely(this Bounds outerBounds, Bounds innerBounds)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 max = ((Bounds)(ref outerBounds)).max;
			Vector3 min = ((Bounds)(ref outerBounds)).min;
			Vector3 max2 = ((Bounds)(ref innerBounds)).max;
			Vector3 min2 = ((Bounds)(ref innerBounds)).min;
			if (max.x >= max2.x && max.y >= max2.y && max.z >= max2.z && min.x <= min2.x && min.y <= min2.y)
			{
				return min.z <= min2.z;
			}
			return false;
		}
	}
	public static class CameraExtensions
	{
		private const float k_OneOverSqrt2 = 0.70710677f;

		public static float GetVerticalFieldOfView(this Camera camera, float aspectNeutralFieldOfView)
		{
			return Mathf.Atan(Mathf.Tan(aspectNeutralFieldOfView * 0.5f * (MathF.PI / 180f)) * 0.70710677f / Mathf.Sqrt(camera.aspect)) * 2f * 57.29578f;
		}

		public static float GetHorizontalFieldOfView(this Camera camera)
		{
			float num = camera.fieldOfView * 0.5f;
			return 57.29578f * Mathf.Atan(Mathf.Tan(num * (MathF.PI / 180f)) * camera.aspect);
		}

		public static float GetVerticalOrthographicSize(this Camera camera, float size)
		{
			return size * 0.70710677f / Mathf.Sqrt(camera.aspect);
		}
	}
	public static class CollectionExtensions
	{
		private static readonly StringBuilder k_String = new StringBuilder();

		public static string Stringify<T>(this ICollection<T> collection)
		{
			k_String.Length = 0;
			int num = collection.Count - 1;
			int num2 = 0;
			foreach (T item in collection)
			{
				k_String.AppendFormat((num2++ == num) ? "{0}" : "{0}, ", item);
			}
			return k_String.ToString();
		}
	}
	public static class DictionaryExtensions
	{
		public static KeyValuePair<TKey, TValue> First<TKey, TValue>(this Dictionary<TKey, TValue> dictionary)
		{
			KeyValuePair<TKey, TValue> result = default(KeyValuePair<TKey, TValue>);
			Dictionary<TKey, TValue>.Enumerator enumerator = dictionary.GetEnumerator();
			if (enumerator.MoveNext())
			{
				result = enumerator.Current;
			}
			enumerator.Dispose();
			return result;
		}
	}
	public static class GameObjectExtensions
	{
		public static void SetHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			((Object)gameObject).hideFlags = hideFlags;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetHideFlagsRecursively(hideFlags);
			}
		}

		public static void AddToHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags);
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.AddToHideFlagsRecursively(hideFlags);
			}
		}

		public static void SetLayerRecursively(this GameObject gameObject, int layer)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerRecursively(layer);
			}
		}

		public static void SetLayerAndAddToHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags);
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerAndAddToHideFlagsRecursively(layer, hideFlags);
			}
		}

		public static void SetLayerAndHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			((Object)gameObject).hideFlags = hideFlags;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerAndHideFlagsRecursively(layer, hideFlags);
			}
		}

		public static void SetRunInEditModeRecursively(this GameObject gameObject, bool enabled)
		{
		}
	}
	public static class GuidExtensions
	{
		public static void Decompose(this Guid guid, out ulong low, out ulong high)
		{
			byte[] value = guid.ToByteArray();
			low = BitConverter.ToUInt64(value, 0);
			high = BitConverter.ToUInt64(value, 8);
		}
	}
	public static class HashSetExtensions
	{
		public static void ExceptWithNonAlloc<T>(this HashSet<T> self, HashSet<T> other)
		{
			foreach (T item in other)
			{
				self.Remove(item);
			}
		}

		public static T First<T>(this HashSet<T> set)
		{
			HashSet<T>.Enumerator enumerator = set.GetEnumerator();
			T result = (enumerator.MoveNext() ? enumerator.Current : default(T));
			enumerator.Dispose();
			return result;
		}
	}
	public static class LayerMaskExtensions
	{
		public static int GetFirstLayerIndex(this LayerMask layerMask)
		{
			if (((LayerMask)(ref layerMask)).value == 0)
			{
				return -1;
			}
			int num = 0;
			int num2 = ((LayerMask)(ref layerMask)).value;
			while ((num2 & 1) == 0)
			{
				num2 >>= 1;
				num++;
			}
			return num;
		}

		public static bool Contains(this LayerMask mask, int layer)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			return ((uint)LayerMask.op_Implicit(mask) & (1 << layer)) > 0;
		}
	}
	public static class ListExtensions
	{
		public static List<T> Fill<T>(this List<T> list, int count) where T : new()
		{
			for (int i = 0; i < count; i++)
			{
				list.Add(new T());
			}
			return list;
		}

		public static void EnsureCapacity<T>(this List<T> list, int capacity)
		{
			if (list.Capacity < capacity)
			{
				list.Capacity = capacity;
			}
		}

		public static void SwapAtIndices<T>(this List<T> list, int first, int second)
		{
			T val = list[second];
			T val2 = list[first];
			T val4 = (list[first] = val);
			val4 = (list[second] = val2);
		}
	}
	public static class MonoBehaviourExtensions
	{
	}
	public static class PoseExtensions
	{
		public static Pose ApplyOffsetTo(this Pose pose, Pose otherPose)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			Quaternion rotation = pose.rotation;
			return new Pose(rotation * otherPose.position + pose.position, rotation * otherPose.rotation);
		}

		public static Vector3 ApplyOffsetTo(this Pose pose, Vector3 position)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			return pose.rotation * position + pose.position;
		}

		public static Vector3 ApplyInverseOffsetTo(this Pose pose, Vector3 position)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			return Quaternion.Inverse(pose.rotation) * (position - pose.position);
		}
	}
	public static class QuaternionExtensions
	{
		public static Quaternion ConstrainYaw(this Quaternion rotation)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			rotation.x = 0f;
			rotation.z = 0f;
			return rotation;
		}

		public static Quaternion ConstrainYawNormalized(this Quaternion rotation)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			rotation.x = 0f;
			rotation.z = 0f;
			((Quaternion)(ref rotation)).Normalize();
			return rotation;
		}

		public static Quaternion ConstrainYawPitchNormalized(this Quaternion rotation)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			Vector3 eulerAngles = ((Quaternion)(ref rotation)).eulerAngles;
			eulerAngles.z = 0f;
			return Quaternion.Euler(eulerAngles);
		}
	}
	public static class StopwatchExtensions
	{
		public static void Restart(this Stopwatch stopwatch)
		{
			stopwatch.Stop();
			stopwatch.Reset();
			stopwatch.Start();
		}
	}
	public static class StringExtensions
	{
		private static readonly StringBuilder k_StringBuilder = new StringBuilder();

		public static string FirstToUpper(this string str)
		{
			if (string.IsNullOrEmpty(str))
			{
				return string.Empty;
			}
			if (str.Length == 1)
			{
				return char.ToUpper(str[0]).ToString();
			}
			return $"{char.ToUpper(str[0])}{str.Substring(1)}";
		}

		public static string InsertSpacesBetweenWords(this string str)
		{
			if (string.IsNullOrEmpty(str))
			{
				return string.Empty;
			}
			k_StringBuilder.Length = 0;
			k_StringBuilder.Append(str[0]);
			int length = str.Length;
			for (int i = 0; i < length - 1; i++)
			{
				char c = str[i];
				char c2 = str[i + 1];
				bool flag = char.IsLower(c);
				bool flag2 = char.IsLower(c2);
				bool flag3 = flag && !flag2;
				if (i + 2 < length)
				{
					bool flag4 = char.IsLower(str[i + 2]);
					flag3 = flag3 || (!flag && !flag2 && flag4);
				}
				if (flag3)
				{
					k_StringBuilder.Append(' ');
				}
				k_StringBuilder.Append(c2);
			}
			return k_StringBuilder.ToString();
		}
	}
	public static class TransformExtensions
	{
		public static Pose GetLocalPose(this Transform transform)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = default(Vector3);
			Quaternion val2 = default(Quaternion);
			transform.GetLocalPositionAndRotation(ref val, ref val2);
			return new Pose(val, val2);
		}

		public static Pose GetWorldPose(this Transform transform)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = default(Vector3);
			Quaternion val2 = default(Quaternion);
			transform.GetPositionAndRotation(ref val, ref val2);
			return new Pose(val, val2);
		}

		public static void SetLocalPose(this Transform transform, Pose pose)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			transform.SetLocalPositionAndRotation(pose.position, pose.rotation);
		}

		public static void SetWorldPose(this Transform transform, Pose pose)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			transform.SetPositionAndRotation(pose.position, pose.rotation);
		}

		public static Pose TransformPose(this Transform transform, Pose pose)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			return ((Pose)(ref pose)).GetTransformedBy(transform);
		}

		public static Pose InverseTransformPose(this Transform transform, Pose pose)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)transform == (Object)null)
			{
				throw new ArgumentNullException("transform");
			}
			Pose result = default(Pose);
			result.position = transform.InverseTransformPoint(pose.position);
			result.rotation = Quaternion.Inverse(transform.rotation) * pose.rotation;
			return result;
		}

		public static Ray InverseTransformRay(this Transform transform, Ray ray)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)transform == (Object)null)
			{
				throw new ArgumentNullException("transform");
			}
			return new Ray(transform.InverseTransformPoint(((Ray)(ref ray)).origin), transform.InverseTransformDirection(((Ray)(ref ray)).direction));
		}
	}
	public static class TypeExtensions
	{
		private static readonly List<FieldInfo> k_Fields = new List<FieldInfo>();

		private static readonly List<string> k_TypeNames = new List<string>();

		public static void GetAssignableTypes(this Type type, List<Type> list, Func<Type, bool> predicate = null)
		{
			ReflectionUtils.ForEachType(delegate(Type t)
			{
				if (type.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract && (predicate == null || predicate(t)))
				{
					list.Add(t);
				}
			});
		}

		public static void GetImplementationsOfInterface(this Type type, List<Type> list)
		{
			if (type.IsInterface)
			{
				type.GetAssignableTypes(list);
			}
		}

		public static void GetExtensionsOfClass(this Type type, List<Type> list)
		{
			if (type.IsClass)
			{
				type.GetAssignableTypes(list);
			}
		}

		public static void GetGenericInterfaces(this Type type, Type genericInterface, List<Type> interfaces)
		{
			Type[] interfaces2 = type.GetInterfaces();
			foreach (Type type2 in interfaces2)
			{
				if (type2.IsGenericType && type2.GetGenericTypeDefinition() == genericInterface)
				{
					interfaces.Add(type2);
				}
			}
		}

		public static PropertyInfo GetPropertyRecursively(this Type type, string name, BindingFlags bindingAttr)
		{
			PropertyInfo propertyInfo = type.GetProperty(name, bindingAttr);
			if (propertyInfo != null)
			{
				return propertyInfo;
			}
			if (type.BaseType != null)
			{
				propertyInfo = type.BaseType.GetPropertyRecursively(name, bindingAttr);
			}
			return propertyInfo;
		}

		public static FieldInfo GetFieldRecursively(this Type type, string name, BindingFlags bindingAttr)
		{
			FieldInfo fieldInfo = type.GetField(name, bindingAttr);
			if (fieldInfo != null)
			{
				return fieldInfo;
			}
			if (type.BaseType != null)
			{
				fieldInfo = type.BaseType.GetFieldRecursively(name, bindingAttr);
			}
			return fieldInfo;
		}

		public static void GetFieldsRecursively(this Type type, List<FieldInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
		{
			while (true)
			{
				FieldInfo[] fields2 = type.GetFields(bindingAttr);
				foreach (FieldInfo item in fields2)
				{
					fields.Add(item);
				}
				Type baseType = type.BaseType;
				if (baseType != null)
				{
					type = baseType;
					continue;
				}
				break;
			}
		}

		public static void GetPropertiesRecursively(this Type type, List<PropertyInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
		{
			while (true)
			{
				PropertyInfo[] properties = type.GetProperties(bindingAttr);
				foreach (PropertyInfo item in properties)
				{
					fields.Add(item);
				}
				Type baseType = type.BaseType;
				if (baseType != null)
				{
					type = baseType;
					continue;
				}
				break;
			}
		}

		public static void GetInterfaceFieldsFromClasses(this IEnumerable<Type> classes, List<FieldInfo> fields, List<Type> interfaceTypes, BindingFlags bindingAttr)
		{
			foreach (Type interfaceType in interfaceTypes)
			{
				if (!interfaceType.IsInterface)
				{
					throw new ArgumentException($"Type {interfaceType} in interfaceTypes is not an interface!");
				}
			}
			foreach (Type @class in classes)
			{
				if (!@class.IsClass)
				{
					throw new ArgumentException($"Type {@class} in classes is not a class!");
				}
				k_Fields.Clear();
				@class.GetFieldsRecursively(k_Fields, bindingAttr);
				foreach (FieldInfo k_Field in k_Fields)
				{
					Type[] interfaces = k_Field.FieldType.GetInterfaces();
					foreach (Type item in interfaces)
					{
						if (interfaceTypes.Contains(item))
						{
							fields.Add(k_Field);
							break;
						}
					}
				}
			}
		}

		public static TAttribute GetAttribute<TAttribute>(this Type type, bool inherit = false) where TAttribute : Attribute
		{
			return (TAttribute)type.GetCustomAttributes(typeof(TAttribute), inherit)[0];
		}

		public static void IsDefinedGetInheritedTypes<TAttribute>(this Type type, List<Type> types) where TAttribute : Attribute
		{
			while (type != null)
			{
				if (type.IsDefined(typeof(TAttribute), inherit: true))
				{
					types.Add(type);
				}
				type = type.BaseType;
			}
		}

		public static FieldInfo GetFieldInTypeOrBaseType(this Type type, string fieldName)
		{
			FieldInfo field;
			while (true)
			{
				if (type == null)
				{
					return null;
				}
				field = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy);
				if (field != null)
				{
					break;
				}
				type = type.BaseType;
			}
			return field;
		}

		public static string GetNameWithGenericArguments(this Type type)
		{
			string name = type.Name;
			name = name.Replace('+', '.');
			if (!type.IsGenericType)
			{
				return name;
			}
			name = name.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetNameWithGenericArguments();
			}
			return name + "<" + string.Join(", ", array) + ">";
		}

		public static string GetNameWithFullGenericArguments(this Type type)
		{
			string name = type.Name;
			name = name.Replace('+', '.');
			if (!type.IsGenericType)
			{
				return name;
			}
			name = name.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetFullNameWithGenericArgumentsInternal();
			}
			return name + "<" + string.Join(", ", array) + ">";
		}

		public static string GetFullNameWithGenericArguments(this Type type)
		{
			Type type2 = type.DeclaringType;
			if (type2 != null && !type.IsGenericParameter)
			{
				k_TypeNames.Clear();
				string nameWithFullGenericArguments = type.GetNameWithFullGenericArguments();
				k_TypeNames.Add(nameWithFullGenericArguments);
				while (true)
				{
					Type declaringType = type2.DeclaringType;
					if (declaringType == null)
					{
						break;
					}
					nameWithFullGenericArguments = type2.GetNameWithFullGenericArguments();
					k_TypeNames.Insert(0, nameWithFullGenericArguments);
					type2 = declaringType;
				}
				nameWithFullGenericArguments = type2.GetFullNameWithGenericArguments();
				k_TypeNames.Insert(0, nameWithFullGenericArguments);
				return string.Join(".", k_TypeNames.ToArray());
			}
			return type.GetFullNameWithGenericArgumentsInternal();
		}

		private static string GetFullNameWithGenericArgumentsInternal(this Type type)
		{
			string fullName = type.FullName;
			if (!type.IsGenericType)
			{
				return fullName;
			}
			fullName = fullName.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetFullNameWithGenericArguments();
			}
			return fullName + "<" + string.Join(", ", array) + ">";
		}

		public static bool IsAssignableFromOrSubclassOf(this Type checkType, Type baseType)
		{
			if (!checkType.IsAssignableFrom(baseType))
			{
				return checkType.IsSubclassOf(baseType);
			}
			return true;
		}

		public static MethodInfo GetMethodRecursively(this Type type, string name, BindingFlags bindingAttr)
		{
			MethodInfo methodInfo = type.GetMethod(name, bindingAttr);
			if (methodInfo != null)
			{
				return methodInfo;
			}
			if (type.BaseType != null)
			{
				methodInfo = type.BaseType.GetMethodRecursively(name, bindingAttr);
			}
			return methodInfo;
		}
	}
	[Serializable]
	public class BoolUnityEvent : UnityEvent<bool>
	{
	}
	[Serializable]
	public class FloatUnityEvent : UnityEvent<float>
	{
	}
	[Serializable]
	public class Vector2UnityEvent : UnityEvent<Vector2>
	{
	}
	[Serializable]
	public class Vector3UnityEvent : UnityEvent<Vector3>
	{
	}
	[Serializable]
	public class Vector4UnityEvent : UnityEvent<Vector4>
	{
	}
	[Serializable]
	public class QuaternionUnityEvent : UnityEvent<Quaternion>
	{
	}
	[Serializable]
	public class IntUnityEvent : UnityEvent<int>
	{
	}
	[Serializable]
	public class ColorUnityEvent : UnityEvent<Color>
	{
	}
	[Serializable]
	public class StringUnityEvent : UnityEvent<string>
	{
	}
	public static class Vector2Extensions
	{
		public static Vector2 Inverse(this Vector2 vector)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			return new Vector2(1f / vector.x, 1f / vector.y);
		}

		public static float MinComponent(this Vector2 vector)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			return Mathf.Min(vector.x, vector.y);
		}

		public static float MaxComponent(this Vector2 vector)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			return Mathf.Max(vector.x, vector.y);
		}

		public static Vector2 Abs(this Vector2 vector)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			vector.x = Mathf.Abs(vector.x);
			vector.y = Mathf.Abs(vector.y);
			return vector;
		}
	}
	public static class Vector3Extensions
	{
		public static Vector3 Inverse(this Vector3 vector)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(1f / vector.x, 1f / vector.y, 1f / vector.z);
		}

		public static float MinComponent(this Vector3 vector)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			return Mathf.Min(Mathf.Min(vector.x, vector.y), vector.z);
		}

		public static float MaxComponent(this Vector3 vector)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			return Mathf.Max(Mathf.Max(vector.x, vector.y), vector.z);
		}

		public static Vector3 Abs(this Vector3 vector)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			vector.x = Mathf.Abs(vector.x);
			vector.y = Mathf.Abs(vector.y);
			vector.z = Mathf.Abs(vector.z);
			return vector;
		}

		public static Vector3 Multiply(this Vector3 value, Vector3 scale)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(value.x * scale.x, value.y * scale.y, value.z * scale.z);
		}

		public static Vector3 Divide(this Vector3 value, Vector3 scale)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			return new Vector3(value.x / scale.x, value.y / scale.y, value.z / scale.z);
		}

		public static Vector3 SafeDivide(this Vector3 value, Vector3 scale)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			float num = (Mathf.Approximately(scale.x, 0f) ? 0f : (value.x / scale.x));
			if (float.IsNaN(num))
			{
				num = 0f;
			}
			float num2 = (Mathf.Approximately(scale.y, 0f) ? 0f : (value.y / scale.y));
			if (float.IsNaN(num2))
			{
				num2 = 0f;
			}
			float num3 = (Mathf.Approximately(scale.z, 0f) ? 0f : (value.z / scale.z));
			if (float.IsNaN(num3))
			{
				num3 = 0f;
			}
			return new Vector3(num, num2, num3);
		}
	}
	public static class GameObjectUtils
	{
		private static readonly List<GameObject> k_GameObjects = new List<GameObject>();

		private static readonly List<Transform> k_Transforms = new List<Transform>();

		public static event Action<GameObject> GameObjectInstantiated;

		public static GameObject Create()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Expected O, but got Unknown
			GameObject val = new GameObject();
			GameObjectUtils.GameObjectInstantiated?.Invoke(val);
			return val;
		}

		public static GameObject Create(string name)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			GameObject val = new GameObject(name);
			GameObjec

BepInEx/plugins/LCVR/RuntimeDeps/Unity.XR.Interaction.Toolkit.dll

Decompiled 5 days ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using Unity.Burst;
using Unity.Collections;
using Unity.Jobs;
using Unity.Mathematics;
using Unity.Profiling;
using Unity.XR.CoreUtils;
using Unity.XR.CoreUtils.Bindings;
using Unity.XR.CoreUtils.Bindings.Variables;
using Unity.XR.CoreUtils.Collections;
using Unity.XR.CoreUtils.Datums;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Experimental.XR.Interaction;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.LowLevel;
using UnityEngine.InputSystem.UI;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.InputSystem.XR;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.Scripting;
using UnityEngine.Scripting.APIUpdating;
using UnityEngine.Serialization;
using UnityEngine.SpatialTracking;
using UnityEngine.UI;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Jobs;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver.Primitives;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Rendering;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.State;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.Audio;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.Primitives;
using UnityEngine.XR.Interaction.Toolkit.Filtering;
using UnityEngine.XR.Interaction.Toolkit.Inputs;
using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands;
using UnityEngine.XR.Interaction.Toolkit.Transformers;
using UnityEngine.XR.Interaction.Toolkit.UI;
using UnityEngine.XR.Interaction.Toolkit.Utilities;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Collections;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Curves;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Internal;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Pooling;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.SmartTweenableVariables;
using UnityEngine.XR.OpenXR.Features.Interactions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Editor.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.StarterAssets")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.ARStarterAssets")]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.EaseAttachBurst_00000291$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.StepSmoothingBurst_00000292$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.CalculateLineCurveRenderPoints_0000037D$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.ComputeNewRenderPoints_0000037E$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.EvaluateLineEndPoint_0000037F$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.GetAssistedVelocityInternal_00000690$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.OrthogonalUpVector_00000925$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.OrthogonalUpVector_00000926$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.OrthogonalLookRotation_00000927$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.OrthogonalLookRotation_00000928$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.ProjectOnPlane_00000929$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.ProjectOnPlane_0000092A$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.LookRotationWithForwardProjectedOnPlane_0000092B$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.LookRotationWithForwardProjectedOnPlane_0000092C$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Angle_0000092D$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.FastVectorEquals_0000092E$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.FastVectorEquals_0000092F$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.FastSafeDivide_00000930$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.FastSafeDivide_00000931$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Scale_00000932$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Scale_00000933$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.GetSphereOverlapParameters_00000934$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.GetConecastParameters_00000935$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.GetConecastOffset_00000936$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.SmartTweenableVariables.ComputeNewTweenTarget_000009C3$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.SmartTweenableVariables.ComputeNewTweenTarget_000009CF$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.SmartTweenableVariables.IsNewTargetWithinThreshold_000009D0$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.SampleQuadraticBezierPoint_000009F0$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.SampleCubicBezierPoint_000009F1$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.ElevateQuadraticToCubicBezier_000009F2$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.GenerateCubicBezierCurve_000009F3$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.SampleProjectilePoint_000009F4$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Utilities.Curves.CalculateProjectileFlightTime_000009F5$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.ComputeNewObjectPosition_00000BEF$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.AdjustPositionForPermittedAxesBurst_00000BF3$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.ComputeNewOneHandedScale_00000BF5$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.ComputeNewTwoHandedScale_00000BF6$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.FastCalculateRadiusOffset_00000C18$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.FastComputeNewTrackedPose_00000C19$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.IsWithinRadius_00000C1A$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Transformers.CalculateScaleToFit_00000C1B$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Inputs.StabilizeTransform_00000D36$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Inputs.StabilizePosition_00000D37$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Inputs.StabilizeOptimalRotation_00000D38$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Inputs.CalculateStabilizedLerp_00000D39$BurstDirectCall))]
[assembly: StaticTypeReinit(typeof(UnityEngine.XR.Interaction.Toolkit.Inputs.CalculateRotationParams_00000D3A$BurstDirectCall))]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[30912]
		{
			0, 0, 0, 1, 0, 0, 0, 107, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 74, 111, 98, 115, 92, 67,
			111, 108, 111, 114, 84, 119, 101, 101, 110, 74,
			111, 98, 46, 99, 115, 0, 0, 0, 4, 0,
			0, 0, 107, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 74,
			111, 98, 115, 92, 70, 108, 111, 97, 116, 84,
			119, 101, 101, 110, 74, 111, 98, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 103, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 74, 111, 98, 115, 92, 73,
			84, 119, 101, 101, 110, 74, 111, 98, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 106, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 74, 111, 98, 115, 92,
			84, 119, 101, 101, 110, 74, 111, 98, 68, 97,
			116, 97, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 127, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
			101, 99, 101, 105, 118, 101, 114, 92, 65, 117,
			100, 105, 111, 92, 65, 117, 100, 105, 111, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
			101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 125, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
			101, 114, 92, 66, 97, 115, 101, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 116, 97,
			116, 101, 82, 101, 99, 101, 105, 118, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			130, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
			83, 121, 115, 116, 101, 109, 92, 82, 101, 99,
			101, 105, 118, 101, 114, 92, 66, 97, 115, 101,
			65, 115, 121, 110, 99, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 116, 97, 116, 101,
			82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 136, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
			118, 101, 114, 92, 66, 97, 115, 101, 83, 121,
			110, 99, 104, 114, 111, 110, 111, 117, 115, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
			116, 97, 116, 101, 82, 101, 99, 101, 105, 118,
			101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 122, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
			101, 99, 101, 105, 118, 101, 114, 92, 73, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
			116, 97, 116, 101, 82, 101, 99, 101, 105, 118,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 127, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
			101, 99, 101, 105, 118, 101, 114, 92, 73, 65,
			115, 121, 110, 99, 65, 102, 102, 111, 114, 100,
			97, 110, 99, 101, 83, 116, 97, 116, 101, 82,
			101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 133, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
			101, 114, 92, 73, 83, 121, 110, 99, 104, 114,
			111, 110, 111, 117, 115, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 116, 97, 116, 101,
			82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 132, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
			118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
			105, 118, 101, 115, 92, 67, 111, 108, 111, 114,
			65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
			82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 132, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
			118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
			105, 118, 101, 115, 92, 70, 108, 111, 97, 116,
			65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
			82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 137, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
			118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
			105, 118, 101, 115, 92, 81, 117, 97, 116, 101,
			114, 110, 105, 111, 110, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
			118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 142, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
			82, 101, 99, 101, 105, 118, 101, 114, 92, 80,
			114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
			81, 117, 97, 116, 101, 114, 110, 105, 111, 110,
			69, 117, 108, 101, 114, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
			118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 134, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
			82, 101, 99, 101, 105, 118, 101, 114, 92, 80,
			114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
			86, 101, 99, 116, 111, 114, 50, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 82, 101, 99,
			101, 105, 118, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 134, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
			109, 92, 82, 101, 99, 101, 105, 118, 101, 114,
			92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
			115, 92, 86, 101, 99, 116, 111, 114, 51, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
			101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 134, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
			101, 114, 92, 80, 114, 105, 109, 105, 116, 105,
			118, 101, 115, 92, 86, 101, 99, 116, 111, 114,
			52, 65, 102, 102, 111, 114, 100, 97, 110, 99,
			101, 82, 101, 99, 101, 105, 118, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 136,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
			121, 115, 116, 101, 109, 92, 82, 101, 99, 101,
			105, 118, 101, 114, 92, 82, 101, 110, 100, 101,
			114, 105, 110, 103, 92, 66, 108, 101, 110, 100,
			83, 104, 97, 112, 101, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
			118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 151, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
			82, 101, 99, 101, 105, 118, 101, 114, 92, 82,
			101, 110, 100, 101, 114, 105, 110, 103, 92, 67,
			111, 108, 111, 114, 71, 114, 97, 100, 105, 101,
			110, 116, 76, 105, 110, 101, 82, 101, 110, 100,
			101, 114, 101, 114, 65, 102, 102, 111, 114, 100,
			97, 110, 99, 101, 82, 101, 99, 101, 105, 118,
			101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 147, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
			101, 99, 101, 105, 118, 101, 114, 92, 82, 101,
			110, 100, 101, 114, 105, 110, 103, 92, 67, 111,
			108, 111, 114, 77, 97, 116, 101, 114, 105, 97,
			108, 80, 114, 111, 112, 101, 114, 116, 121, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
			101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 147, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
			101, 114, 92, 82, 101, 110, 100, 101, 114, 105,
			110, 103, 92, 70, 108, 111, 97, 116, 77, 97,
			116, 101, 114, 105, 97, 108, 80, 114, 111, 112,
			101, 114, 116, 121, 65, 102, 102, 111, 114, 100,
			97, 110, 99, 101, 82, 101, 99, 101, 105, 118,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 149, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
			101, 99, 101, 105, 118, 101, 114, 92, 82, 101,
			110, 100, 101, 114, 105, 110, 103, 92, 86, 101,
			99, 116, 111, 114, 50, 77, 97, 116, 101, 114,
			105, 97, 108, 80, 114, 111, 112, 101, 114, 116,
			121, 65, 102, 102, 111, 114, 100, 97, 110, 99,
			101, 82, 101, 99, 101, 105, 118, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 149,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
			121, 115, 116, 101, 109, 92, 82, 101, 99, 101,
			105, 118, 101, 114, 92, 82, 101, 110, 100, 101,
			114, 105, 110, 103, 92, 86, 101, 99, 116, 111,
			114, 51, 77, 97, 116, 101, 114, 105, 97, 108,
			80, 114, 111, 112, 101, 114, 116, 121, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 82, 101,
			99, 101, 105, 118, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 149, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
			101, 109, 92, 82, 101, 99, 101, 105, 118, 101,
			114, 92, 82, 101, 110, 100, 101, 114, 105, 110,
			103, 92, 86, 101, 99, 116, 111, 114, 52, 77,
			97, 116, 101, 114, 105, 97, 108, 80, 114, 111,
			112, 101, 114, 116, 121, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
			118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 152, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
			82, 101, 99, 101, 105, 118, 101, 114, 92, 84,
			114, 97, 110, 115, 102, 111, 114, 109, 97, 116,
			105, 111, 110, 92, 85, 110, 105, 102, 111, 114,
			109, 84, 114, 97, 110, 115, 102, 111, 114, 109,
			83, 99, 97, 108, 101, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
			118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 129, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
			82, 101, 99, 101, 105, 118, 101, 114, 92, 85,
			73, 92, 73, 109, 97, 103, 101, 67, 111, 108,
			111, 114, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 82, 101, 99, 101, 105, 118, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
			83, 121, 115, 116, 101, 109, 92, 82, 101, 110,
			100, 101, 114, 105, 110, 103, 92, 77, 97, 116,
			101, 114, 105, 97, 108, 72, 101, 108, 112, 101,
			114, 66, 97, 115, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 121, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
			109, 92, 82, 101, 110, 100, 101, 114, 105, 110,
			103, 92, 77, 97, 116, 101, 114, 105, 97, 108,
			73, 110, 115, 116, 97, 110, 99, 101, 72, 101,
			108, 112, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 126, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 65, 102, 102, 111, 114, 100,
			97, 110, 99, 101, 83, 121, 115, 116, 101, 109,
			92, 82, 101, 110, 100, 101, 114, 105, 110, 103,
			92, 77, 97, 116, 101, 114, 105, 97, 108, 80,
			114, 111, 112, 101, 114, 116, 121, 66, 108, 111,
			99, 107, 72, 101, 108, 112, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 119, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 83, 116, 97, 116, 101,
			92, 68, 97, 116, 97, 92, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 83, 116, 97, 116,
			101, 68, 97, 116, 97, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 124, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
			109, 92, 83, 116, 97, 116, 101, 92, 68, 97,
			116, 97, 92, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 116, 97, 116, 101, 83, 104,
			111, 114, 116, 99, 117, 116, 115, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 131, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 83, 116, 97, 116, 101, 92,
			80, 114, 111, 118, 105, 100, 101, 114, 92, 66,
			97, 115, 101, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 83, 116, 97, 116, 101, 80, 114,
			111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 141, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
			101, 109, 92, 83, 116, 97, 116, 101, 92, 80,
			114, 111, 118, 105, 100, 101, 114, 92, 88, 82,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 116, 97, 116, 101, 80, 114, 111,
			118, 105, 100, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 139, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
			100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
			109, 92, 83, 116, 97, 116, 101, 92, 80, 114,
			111, 118, 105, 100, 101, 114, 92, 88, 82, 73,
			110, 116, 101, 114, 97, 99, 116, 111, 114, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
			116, 97, 116, 101, 80, 114, 111, 118, 105, 100,
			101, 114, 46, 99, 115, 0, 0, 0, 4, 0,
			0, 0, 126, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
			99, 101, 83, 121, 115, 116, 101, 109, 92, 84,
			104, 101, 109, 101, 92, 65, 117, 100, 105, 111,
			92, 65, 117, 100, 105, 111, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 84, 104, 101, 109,
			101, 68, 97, 116, 117, 109, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 114, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
			101, 109, 92, 84, 104, 101, 109, 101, 92, 66,
			97, 115, 101, 65, 102, 102, 111, 114, 100, 97,
			110, 99, 101, 84, 104, 101, 109, 101, 46, 99,
			115, 0, 0, 0, 3, 0, 0, 0, 131, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 84, 104, 101, 109, 101,
			92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
			115, 92, 67, 111, 108, 111, 114, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 84, 104, 101,
			109, 101, 68, 97, 116, 117, 109, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 131, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 84, 104, 101, 109, 101, 92,
			80, 114, 105, 109, 105, 116, 105, 118, 101, 115,
			92, 70, 108, 111, 97, 116, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 84, 104, 101, 109,
			101, 68, 97, 116, 117, 109, 46, 99, 115, 0,
			0, 0, 3, 0, 0, 0, 133, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
			114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
			101, 109, 92, 84, 104, 101, 109, 101, 92, 80,
			114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
			86, 101, 99, 116, 111, 114, 50, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 84, 104, 101,
			109, 101, 68, 97, 116, 117, 109, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 133, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
			111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
			116, 101, 109, 92, 84, 104, 101, 109, 101, 92,
			80, 114, 105, 109, 105, 116, 105, 118, 101, 115,
			92, 86, 101, 99, 116, 111, 114, 51, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 84, 104,
			101, 109, 101, 68, 97, 116, 117, 109, 46, 99,
			115, 0, 0, 0, 3, 0, 0, 0, 133, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
			102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
			115, 116, 101, 109, 92, 84, 104, 101, 109, 101,
			92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
			115, 92, 86, 101, 99, 116, 111, 114, 52, 65,
			102, 102, 111, 114, 100, 97, 110, 99, 101, 84,
			104, 101, 109, 101, 68, 97, 116, 117, 109, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 113,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			82, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			97, 98, 108, 101, 115, 92, 65, 82, 65, 110,
			110, 111, 116, 97, 116, 105, 111, 110, 73, 110,
			116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			114, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			65, 82, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 97, 98, 108, 101, 115, 92, 65, 82, 66,
			97, 115, 101, 71, 101, 115, 116, 117, 114, 101,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 112, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 82, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 97, 98, 108, 101, 115, 92, 65,
			82, 80, 108, 97, 99, 101, 109, 101, 110, 116,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 111, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 65, 82, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 97, 98, 108, 101, 115, 92, 65,
			82, 82, 111, 116, 97, 116, 105, 111, 110, 73,
			110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
			101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 108, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 65, 82, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 97, 98, 108, 101, 115, 92, 65, 82,
			83, 99, 97, 108, 101, 73, 110, 116, 101, 114,
			97, 99, 116, 97, 98, 108, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 112, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 82, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 115, 92, 65, 82, 83, 101, 108, 101,
			99, 116, 105, 111, 110, 73, 110, 116, 101, 114,
			97, 99, 116, 97, 98, 108, 101, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 114, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 65, 82, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 115, 92, 65, 82, 84, 114, 97, 110,
			115, 108, 97, 116, 105, 111, 110, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 106,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
			82, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 115, 92, 65, 82, 71, 101, 115, 116,
			117, 114, 101, 73, 110, 116, 101, 114, 97, 99,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 94, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
			67, 97, 114, 100, 105, 110, 97, 108, 85, 116,
			105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
			0, 6, 0, 0, 0, 107, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
			115, 92, 67, 111, 109, 112, 111, 115, 105, 116,
			101, 115, 92, 70, 97, 108, 108, 98, 97, 99,
			107, 67, 111, 109, 112, 111, 115, 105, 116, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			97, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 112, 117, 116, 115, 92, 73, 110, 112,
			117, 116, 65, 99, 116, 105, 111, 110, 77, 97,
			110, 97, 103, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 108, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
			115, 92, 73, 110, 112, 117, 116, 65, 99, 116,
			105, 111, 110, 80, 114, 111, 112, 101, 114, 116,
			121, 69, 120, 116, 101, 110, 115, 105, 111, 110,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 109, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 112, 117, 116, 115, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
			92, 83, 101, 99, 116, 111, 114, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 117, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			112, 117, 116, 115, 92, 83, 105, 109, 117, 108,
			97, 116, 105, 111, 110, 92, 72, 97, 110, 100,
			115, 92, 72, 97, 110, 100, 69, 120, 112, 114,
			101, 115, 115, 105, 111, 110, 67, 97, 112, 116,
			117, 114, 101, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 114, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
			83, 105, 109, 117, 108, 97, 116, 105, 111, 110,
			92, 72, 97, 110, 100, 115, 92, 72, 97, 110,
			100, 69, 120, 112, 114, 101, 115, 115, 105, 111,
			110, 78, 97, 109, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 116, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
			115, 92, 83, 105, 109, 117, 108, 97, 116, 105,
			111, 110, 92, 72, 97, 110, 100, 115, 92, 88,
			82, 83, 105, 109, 117, 108, 97, 116, 101, 100,
			72, 97, 110, 100, 83, 116, 97, 116, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 116,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 112, 117, 116, 115, 92, 83, 105, 109, 117,
			108, 97, 116, 105, 111, 110, 92, 83, 105, 109,
			117, 108, 97, 116, 101, 100, 73, 110, 112, 117,
			116, 76, 97, 121, 111, 117, 116, 76, 111, 97,
			100, 101, 114, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 107, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
			83, 105, 109, 117, 108, 97, 116, 105, 111, 110,
			92, 88, 82, 68, 101, 118, 105, 99, 101, 83,
			105, 109, 117, 108, 97, 116, 111, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 113, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			112, 117, 116, 115, 92, 83, 105, 109, 117, 108,
			97, 116, 105, 111, 110, 92, 88, 82, 68, 101,
			118, 105, 99, 101, 83, 105, 109, 117, 108, 97,
			116, 111, 114, 76, 111, 97, 100, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 115,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 112, 117, 116, 115, 92, 83, 105, 109, 117,
			108, 97, 116, 105, 111, 110, 92, 88, 82, 68,
			101, 118, 105, 99, 101, 83, 105, 109, 117, 108,
			97, 116, 111, 114, 83, 101, 116, 116, 105, 110,
			103, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 111, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 112, 117, 116, 115, 92, 83,
			105, 109, 117, 108, 97, 116, 105, 111, 110, 92,
			88, 82, 83, 105, 109, 117, 108, 97, 116, 101,
			100, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 116, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 112, 117, 116, 115, 92, 83, 105,
			109, 117, 108, 97, 116, 105, 111, 110, 92, 88,
			82, 83, 105, 109, 117, 108, 97, 116, 101, 100,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			83, 116, 97, 116, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 104, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
			115, 92, 83, 105, 109, 117, 108, 97, 116, 105,
			111, 110, 92, 88, 82, 83, 105, 109, 117, 108,
			97, 116, 101, 100, 72, 77, 68, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 109, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 112,
			117, 116, 115, 92, 83, 105, 109, 117, 108, 97,
			116, 105, 111, 110, 92, 88, 82, 83, 105, 109,
			117, 108, 97, 116, 101, 100, 72, 77, 68, 83,
			116, 97, 116, 101, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 106, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 112, 117, 116, 115,
			92, 88, 82, 72, 97, 110, 100, 83, 107, 101,
			108, 101, 116, 111, 110, 80, 111, 107, 101, 68,
			105, 115, 112, 108, 97, 99, 101, 114, 46, 99,
			115, 0, 0, 0, 3, 0, 0, 0, 101, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			112, 117, 116, 115, 92, 88, 82, 73, 110, 112,
			117, 116, 77, 111, 100, 97, 108, 105, 116, 121,
			77, 97, 110, 97, 103, 101, 114, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 104, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 112,
			117, 116, 115, 92, 88, 82, 73, 110, 112, 117,
			116, 84, 114, 97, 99, 107, 105, 110, 103, 65,
			103, 103, 114, 101, 103, 97, 116, 111, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 100,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 112, 117, 116, 115, 92, 88, 82, 84, 114,
			97, 110, 115, 102, 111, 114, 109, 83, 116, 97,
			98, 105, 108, 105, 122, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 120, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 65,
			116, 116, 114, 105, 98, 117, 116, 101, 115, 92,
			67, 97, 110, 70, 111, 99, 117, 115, 77, 117,
			108, 116, 105, 112, 108, 101, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 121, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 65, 116, 116,
			114, 105, 98, 117, 116, 101, 115, 92, 67, 97,
			110, 83, 101, 108, 101, 99, 116, 77, 117, 108,
			116, 105, 112, 108, 101, 65, 116, 116, 114, 105,
			98, 117, 116, 101, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 128, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 65, 116, 116, 114,
			105, 98, 117, 116, 101, 115, 92, 88, 82, 84,
			97, 114, 103, 101, 116, 69, 118, 97, 108, 117,
			97, 116, 111, 114, 69, 110, 97, 98, 108, 101,
			100, 65, 116, 116, 114, 105, 98, 117, 116, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 67, 111, 110, 116, 114, 111, 108, 108,
			101, 114, 115, 92, 65, 99, 116, 105, 111, 110,
			66, 97, 115, 101, 100, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 128, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 67, 111, 110,
			116, 114, 111, 108, 108, 101, 114, 115, 92, 65,
			99, 116, 105, 111, 110, 66, 97, 115, 101, 100,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			46, 100, 101, 112, 114, 101, 99, 97, 116, 101,
			100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 117, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 92, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 115, 92, 73, 88, 82, 83, 99,
			97, 108, 101, 86, 97, 108, 117, 101, 80, 114,
			111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 115, 92,
			88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 123, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 115, 92,
			88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 46, 100, 101, 112,
			114, 101, 99, 97, 116, 101, 100, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 108, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 67,
			111, 110, 116, 114, 111, 108, 108, 101, 114, 115,
			92, 88, 82, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 116, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 115, 92, 88, 82, 67,
			111, 110, 116, 114, 111, 108, 108, 101, 114, 82,
			101, 99, 111, 114, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 117, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 67,
			111, 110, 116, 114, 111, 108, 108, 101, 114, 115,
			92, 88, 82, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 82, 101, 99, 111, 114, 100, 105,
			110, 103, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 128, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 92, 67, 111, 110, 116, 114, 111,
			108, 108, 101, 114, 115, 92, 88, 82, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 82, 101,
			99, 111, 114, 100, 105, 110, 103, 46, 100, 101,
			112, 114, 101, 99, 97, 116, 101, 100, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 113, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			115, 92, 88, 82, 67, 111, 110, 116, 114, 111,
			108, 108, 101, 114, 83, 116, 97, 116, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 124,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 115, 92, 88, 82, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 83, 116, 97, 116, 101,
			46, 100, 101, 112, 114, 101, 99, 97, 116, 101,
			100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 119, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 92, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 115, 92, 88, 82, 83, 99, 114,
			101, 101, 110, 83, 112, 97, 99, 101, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 130, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			115, 92, 88, 82, 83, 99, 114, 101, 101, 110,
			83, 112, 97, 99, 101, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 46, 100, 101, 112, 114,
			101, 99, 97, 116, 101, 100, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 114, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
			108, 116, 101, 114, 105, 110, 103, 92, 72, 111,
			118, 101, 114, 92, 73, 88, 82, 72, 111, 118,
			101, 114, 70, 105, 108, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 142, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 83, 116, 114, 101, 110, 103, 116, 104, 92,
			73, 88, 82, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 83, 116, 114, 101, 110, 103,
			116, 104, 70, 105, 108, 116, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 107, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
			73, 88, 82, 70, 105, 108, 116, 101, 114, 76,
			105, 115, 116, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 126, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 70, 105, 108, 116, 101,
			114, 105, 110, 103, 92, 80, 111, 107, 101, 92,
			73, 77, 117, 108, 116, 105, 80, 111, 107, 101,
			83, 116, 97, 116, 101, 68, 97, 116, 97, 80,
			114, 111, 118, 105, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 121, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
			105, 108, 116, 101, 114, 105, 110, 103, 92, 80,
			111, 107, 101, 92, 73, 80, 111, 107, 101, 83,
			116, 97, 116, 101, 68, 97, 116, 97, 80, 114,
			111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
			108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
			107, 101, 92, 73, 88, 82, 80, 111, 107, 101,
			70, 105, 108, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
			108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
			107, 101, 92, 80, 111, 107, 101, 83, 116, 97,
			116, 101, 68, 97, 116, 97, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 116, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
			108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
			107, 101, 92, 80, 111, 107, 101, 84, 104, 114,
			101, 115, 104, 111, 108, 100, 68, 97, 116, 97,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 70, 105, 108, 116, 101, 114, 105, 110,
			103, 92, 80, 111, 107, 101, 92, 80, 111, 107,
			101, 84, 104, 114, 101, 115, 104, 111, 108, 100,
			68, 97, 116, 117, 109, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 125, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
			116, 101, 114, 105, 110, 103, 92, 80, 111, 107,
			101, 92, 80, 111, 107, 101, 84, 104, 114, 101,
			115, 104, 111, 108, 100, 68, 97, 116, 117, 109,
			80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 111, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
			80, 111, 107, 101, 92, 88, 82, 80, 111, 107,
			101, 70, 105, 108, 116, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 110, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
			105, 108, 116, 101, 114, 105, 110, 103, 92, 80,
			111, 107, 101, 92, 88, 82, 80, 111, 107, 101,
			76, 111, 103, 105, 99, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 116, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
			116, 101, 114, 105, 110, 103, 92, 83, 101, 108,
			101, 99, 116, 92, 73, 88, 82, 83, 101, 108,
			101, 99, 116, 70, 105, 108, 116, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 138,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 70, 105, 108, 116, 101, 114, 105, 110, 103,
			92, 84, 97, 114, 103, 101, 116, 92, 69, 118,
			97, 108, 117, 97, 116, 111, 114, 115, 92, 73,
			88, 82, 84, 97, 114, 103, 101, 116, 69, 118,
			97, 108, 117, 97, 116, 111, 114, 76, 105, 110,
			107, 97, 98, 108, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 132, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
			116, 101, 114, 105, 110, 103, 92, 84, 97, 114,
			103, 101, 116, 92, 69, 118, 97, 108, 117, 97,
			116, 111, 114, 115, 92, 88, 82, 65, 110, 103,
			108, 101, 71, 97, 122, 101, 69, 118, 97, 108,
			117, 97, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 131, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
			116, 101, 114, 105, 110, 103, 92, 84, 97, 114,
			103, 101, 116, 92, 69, 118, 97, 108, 117, 97,
			116, 111, 114, 115, 92, 88, 82, 68, 105, 115,
			116, 97, 110, 99, 101, 69, 118, 97, 108, 117,
			97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 135, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 70, 105, 108, 116,
			101, 114, 105, 110, 103, 92, 84, 97, 114, 103,
			101, 116, 92, 69, 118, 97, 108, 117, 97, 116,
			111, 114, 115, 92, 88, 82, 76, 97, 115, 116,
			83, 101, 108, 101, 99, 116, 101, 100, 69, 118,
			97, 108, 117, 97, 116, 111, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 129, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
			105, 108, 116, 101, 114, 105, 110, 103, 92, 84,
			97, 114, 103, 101, 116, 92, 69, 118, 97, 108,
			117, 97, 116, 111, 114, 115, 92, 88, 82, 84,
			97, 114, 103, 101, 116, 69, 118, 97, 108, 117,
			97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 124, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 70, 105, 108, 116,
			101, 114, 105, 110, 103, 92, 84, 97, 114, 103,
			101, 116, 92, 70, 105, 108, 116, 101, 114, 115,
			92, 73, 88, 82, 84, 97, 114, 103, 101, 116,
			70, 105, 108, 116, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 127, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
			108, 116, 101, 114, 105, 110, 103, 92, 84, 97,
			114, 103, 101, 116, 92, 70, 105, 108, 116, 101,
			114, 115, 92, 88, 82, 66, 97, 115, 101, 84,
			97, 114, 103, 101, 116, 70, 105, 108, 116, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 123, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 92, 70, 105, 108, 116, 101, 114, 105,
			110, 103, 92, 84, 97, 114, 103, 101, 116, 92,
			70, 105, 108, 116, 101, 114, 115, 92, 88, 82,
			84, 97, 114, 103, 101, 116, 70, 105, 108, 116,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 110, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 97, 98, 108, 101, 115, 92, 68, 105,
			115, 116, 97, 110, 99, 101, 73, 110, 102, 111,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			121, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			97, 98, 108, 101, 115, 92, 73, 88, 82, 65,
			99, 116, 105, 118, 97, 116, 101, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 118,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 97,
			98, 108, 101, 115, 92, 73, 88, 82, 70, 111,
			99, 117, 115, 73, 110, 116, 101, 114, 97, 99,
			116, 97, 98, 108, 101, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 118, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 115,
			92, 73, 88, 82, 72, 111, 118, 101, 114, 73,
			110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
			101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 113, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
			111, 111, 108, 107, 105, 116, 64, 50, 46, 53,
			46, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 97, 98, 108, 101, 115, 92, 73, 88, 82,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 132, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 97, 98, 108, 101, 115, 92, 73, 88,
			82, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 83, 116, 114, 101, 110, 103, 116, 104,
			73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
			108, 101, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 119, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 97, 98, 108, 101, 115, 92, 73, 88,
			82, 83, 101, 108, 101, 99, 116, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 129,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 97,
			98, 108, 101, 115, 92, 86, 105, 115, 117, 97,
			108, 92, 88, 82, 84, 105, 110, 116, 73, 110,
			116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
			86, 105, 115, 117, 97, 108, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 116, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
			115, 92, 88, 82, 66, 97, 115, 101, 73, 110,
			116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			127, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			97, 98, 108, 101, 115, 92, 88, 82, 66, 97,
			115, 101, 73, 110, 116, 101, 114, 97, 99, 116,
			97, 98, 108, 101, 46, 100, 101, 112, 114, 101,
			99, 97, 116, 101, 100, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 116, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 115,
			92, 88, 82, 71, 114, 97, 98, 73, 110, 116,
			101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 127,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 97,
			98, 108, 101, 115, 92, 88, 82, 71, 114, 97,
			98, 73, 110, 116, 101, 114, 97, 99, 116, 97,
			98, 108, 101, 46, 100, 101, 112, 114, 101, 99,
			97, 116, 101, 100, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 122, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 97, 98, 108, 101, 115, 92,
			88, 82, 73, 110, 116, 101, 114, 97, 99, 116,
			97, 98, 108, 101, 83, 110, 97, 112, 86, 111,
			108, 117, 109, 101, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 118, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 97, 98, 108, 101, 115, 92,
			88, 82, 83, 105, 109, 112, 108, 101, 73, 110,
			116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 115, 92, 73, 88, 82, 65, 99, 116,
			105, 118, 97, 116, 101, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 110, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 115, 92, 73,
			88, 82, 71, 114, 111, 117, 112, 77, 101, 109,
			98, 101, 114, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 114, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 115, 92, 73, 88, 82,
			72, 111, 118, 101, 114, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 115, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 115, 92, 73,
			88, 82, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 71, 114, 111, 117, 112, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 123, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
			115, 92, 73, 88, 82, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 79, 118, 101, 114,
			114, 105, 100, 101, 71, 114, 111, 117, 112, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 128,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 111,
			114, 115, 92, 73, 88, 82, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 83, 116, 114,
			101, 110, 103, 116, 104, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 109, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 115, 92, 73,
			88, 82, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 110, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
			116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
			53, 46, 48, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 111, 114, 115, 92, 73, 88, 82, 82,
			97, 121, 80, 114, 111, 118, 105, 100, 101, 114,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			115, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 115, 92, 73, 88, 82, 83, 101, 108,
			101, 99, 116, 73, 110, 116, 101, 114, 97, 99,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 123, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 115, 92, 73, 88, 82,
			84, 97, 114, 103, 101, 116, 80, 114, 105, 111,
			114, 105, 116, 121, 73, 110, 116, 101, 114, 97,
			99, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 127, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 115, 92, 86, 105,
			115, 117, 97, 108, 92, 73, 88, 82, 67, 117,
			115, 116, 111, 109, 82, 101, 116, 105, 99, 108,
			101, 80, 114, 111, 118, 105, 100, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 130,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
			108, 107, 105, 116, 64, 50, 46, 53, 46, 48,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 111,
			114, 115, 92, 86, 105, 115, 117, 97, 108, 92,
			73, 88, 82, 82, 101, 116, 105, 99, 108, 101,
			68, 105, 114, 101, 99, 116, 105, 111, 110, 80,
			114, 111, 118, 105, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 3, 0, 0, 0, 125, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
			92, 86, 105, 115, 117, 97, 108, 92, 88, 82,
			73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
			76, 105, 110, 101, 86, 105, 115, 117, 97, 108,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			128, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 115, 92, 86, 105, 115, 117, 97, 108,
			92, 88, 82, 73, 110, 116, 101, 114, 97, 99,
			116, 111, 114, 82, 101, 116, 105, 99, 108, 101,
			86, 105, 115, 117, 97, 108, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 122, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
			88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 133, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
			88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 46, 100, 101, 112,
			114, 101, 99, 97, 116, 101, 100, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 112, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
			92, 88, 82, 66, 97, 115, 101, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 123, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
			105, 116, 64, 50, 46, 53, 46, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
			92, 88, 82, 66, 97, 115, 101, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 46, 100, 101,
			112, 114, 101, 99, 97, 116, 101, 100, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 114, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
			107, 105, 116, 64, 50, 46, 53, 46, 48, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
			115, 92, 88, 82, 68, 105, 114, 101, 99, 116,
			73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			125, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
			111, 108, 107, 105, 116, 64, 50, 46, 53, 46,
			48, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 115, 92, 88, 82, 68, 105, 114, 101,
			99, 116, 73, 110, 116, 101, 114, 97, 99, 116,
			111, 114, 46, 100, 101, 112, 114, 101, 99, 97,
			116, 101, 100, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 112, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 115, 92, 88, 82, 71,
			97, 122, 101, 73, 110, 116, 101, 114, 97, 99,
			116, 111, 114, 46, 99, 115, 0, 0, 0, 3,
			0, 0, 0, 114, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
			46, 53, 46, 48, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 115, 92, 88, 82, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			71, 114, 111, 117, 112, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 112, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 115, 92, 88,
			82, 80, 111, 107, 101, 73, 110, 116, 101, 114,
			97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
			0, 3, 0, 0, 0, 111, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
			64, 50, 46, 53, 46, 48, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 111, 114, 115, 92, 88,
			82, 82, 97, 121, 73, 110, 116, 101, 114, 97,
			99, 116, 111, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 122, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 115, 92, 88, 82,
			82, 97, 121, 73, 110, 116, 101, 114, 97, 99,
			116, 111, 114, 46, 100, 101, 112, 114, 101, 99,
			97, 116, 101, 100, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 114, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
			50, 46, 53, 46, 48, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 115, 92, 88, 82,
			83, 111, 99, 107, 101, 116, 73, 110, 116, 101,
			114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 125, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
			116, 64, 50, 46, 53, 46, 48, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
			88, 82, 83, 111, 99, 107, 101, 116, 73, 110,
			116, 101, 114, 97, 99, 116, 111, 114, 46, 100,
			101, 112, 114, 101, 99, 97, 116, 101, 100, 46,
			99, 115, 0, 0, 

BepInEx/plugins/LCVR/RuntimeDeps/Unity.XR.Management.dll

Decompiled 5 days ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine.Rendering;
using UnityEngine.Serialization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.Management.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Management.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Management.EditorTests")]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[522]
		{
			0, 0, 0, 1, 0, 0, 0, 82, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 109, 97, 110, 97, 103, 101, 109,
			101, 110, 116, 64, 52, 46, 51, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 88, 82,
			67, 111, 110, 102, 105, 103, 117, 114, 97, 116,
			105, 111, 110, 68, 97, 116, 97, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 80, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 109, 97, 110, 97, 103, 101, 109,
			101, 110, 116, 64, 52, 46, 51, 46, 51, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 88, 82,
			71, 101, 110, 101, 114, 97, 108, 83, 101, 116,
			116, 105, 110, 103, 115, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 71, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 109, 97, 110, 97, 103, 101, 109, 101, 110,
			116, 64, 52, 46, 51, 46, 51, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 88, 82, 76, 111,
			97, 100, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 77, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			109, 97, 110, 97, 103, 101, 109, 101, 110, 116,
			64, 52, 46, 51, 46, 51, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 88, 82, 76, 111, 97,
			100, 101, 114, 72, 101, 108, 112, 101, 114, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 84,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 109, 97, 110, 97, 103,
			101, 109, 101, 110, 116, 64, 52, 46, 51, 46,
			51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			88, 82, 77, 97, 110, 97, 103, 101, 109, 101,
			110, 116, 65, 110, 97, 108, 121, 116, 105, 99,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 80, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 109, 97, 110,
			97, 103, 101, 109, 101, 110, 116, 64, 52, 46,
			51, 46, 51, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 88, 82, 77, 97, 110, 97, 103, 101,
			114, 83, 101, 116, 116, 105, 110, 103, 115, 46,
			99, 115
		};
		result.TypesData = new byte[354]
		{
			0, 0, 0, 0, 54, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			77, 97, 110, 97, 103, 101, 109, 101, 110, 116,
			124, 88, 82, 67, 111, 110, 102, 105, 103, 117,
			114, 97, 116, 105, 111, 110, 68, 97, 116, 97,
			65, 116, 116, 114, 105, 98, 117, 116, 101, 0,
			0, 0, 0, 43, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 77,
			97, 110, 97, 103, 101, 109, 101, 110, 116, 124,
			88, 82, 71, 101, 110, 101, 114, 97, 108, 83,
			101, 116, 116, 105, 110, 103, 115, 0, 0, 0,
			0, 34, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 77, 97, 110,
			97, 103, 101, 109, 101, 110, 116, 124, 88, 82,
			76, 111, 97, 100, 101, 114, 0, 0, 0, 0,
			40, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 77, 97, 110, 97,
			103, 101, 109, 101, 110, 116, 124, 88, 82, 76,
			111, 97, 100, 101, 114, 72, 101, 108, 112, 101,
			114, 0, 0, 0, 0, 47, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 77, 97, 110, 97, 103, 101, 109, 101, 110,
			116, 124, 88, 82, 77, 97, 110, 97, 103, 101,
			109, 101, 110, 116, 65, 110, 97, 108, 121, 116,
			105, 99, 115, 0, 0, 0, 0, 58, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 77, 97, 110, 97, 103, 101, 109,
			101, 110, 116, 46, 88, 82, 77, 97, 110, 97,
			103, 101, 109, 101, 110, 116, 65, 110, 97, 108,
			121, 116, 105, 99, 115, 124, 66, 117, 105, 108,
			100, 69, 118, 101, 110, 116, 0, 0, 0, 0,
			43, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 77, 97, 110, 97,
			103, 101, 109, 101, 110, 116, 124, 88, 82, 77,
			97, 110, 97, 103, 101, 114, 83, 101, 116, 116,
			105, 110, 103, 115
		};
		result.TotalFiles = 6;
		result.TotalTypes = 7;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UnityEngine.XR.Management;

[AttributeUsage(AttributeTargets.Class)]
public sealed class XRConfigurationDataAttribute : Attribute
{
	public string displayName { get; set; }

	public string buildSettingsKey { get; set; }

	private XRConfigurationDataAttribute()
	{
	}

	public XRConfigurationDataAttribute(string displayName, string buildSettingsKey)
	{
		this.displayName = displayName;
		this.buildSettingsKey = buildSettingsKey;
	}
}
public class XRGeneralSettings : ScriptableObject
{
	public static string k_SettingsKey = "com.unity.xr.management.loader_settings";

	internal static XRGeneralSettings s_RuntimeSettingsInstance = null;

	[SerializeField]
	internal XRManagerSettings m_LoaderManagerInstance;

	[SerializeField]
	[Tooltip("Toggling this on/off will enable/disable the automatic startup of XR at run time.")]
	internal bool m_InitManagerOnStart = true;

	private XRManagerSettings m_XRManager;

	private bool m_ProviderIntialized;

	private bool m_ProviderStarted;

	public XRManagerSettings Manager
	{
		get
		{
			return m_LoaderManagerInstance;
		}
		set
		{
			m_LoaderManagerInstance = value;
		}
	}

	public static XRGeneralSettings Instance => s_RuntimeSettingsInstance;

	public XRManagerSettings AssignedSettings => m_LoaderManagerInstance;

	public bool InitManagerOnStart => m_InitManagerOnStart;

	private void Awake()
	{
		Debug.Log((object)"XRGeneral Settings awakening...");
		s_RuntimeSettingsInstance = this;
		Application.quitting += Quit;
		Object.DontDestroyOnLoad((Object)(object)s_RuntimeSettingsInstance);
	}

	private static void Quit()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null))
		{
			instance.DeInitXRSDK();
		}
	}

	private void Start()
	{
		StartXRSDK();
	}

	private void OnDestroy()
	{
		DeInitXRSDK();
	}

	[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
	internal static void AttemptInitializeXRSDKOnLoad()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null) && instance.InitManagerOnStart)
		{
			instance.InitXRSDK();
		}
	}

	[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
	internal static void AttemptStartXRSDKOnBeforeSplashScreen()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null) && instance.InitManagerOnStart)
		{
			instance.StartXRSDK();
		}
	}

	private void InitXRSDK()
	{
		if (!((Object)(object)Instance == (Object)null) && !((Object)(object)Instance.m_LoaderManagerInstance == (Object)null) && Instance.m_InitManagerOnStart)
		{
			m_XRManager = Instance.m_LoaderManagerInstance;
			if ((Object)(object)m_XRManager == (Object)null)
			{
				Debug.LogError((object)"Assigned GameObject for XR Management loading is invalid. No XR Providers will be automatically loaded.");
				return;
			}
			m_XRManager.automaticLoading = false;
			m_XRManager.automaticRunning = false;
			m_XRManager.InitializeLoaderSync();
			m_ProviderIntialized = true;
		}
	}

	private void StartXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.StartSubsystems();
			m_ProviderStarted = true;
		}
	}

	private void StopXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.StopSubsystems();
			m_ProviderStarted = false;
		}
	}

	private void DeInitXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.DeinitializeLoader();
			m_XRManager = null;
			m_ProviderIntialized = false;
		}
	}
}
public abstract class XRLoader : ScriptableObject
{
	public virtual bool Initialize()
	{
		return true;
	}

	public virtual bool Start()
	{
		return true;
	}

	public virtual bool Stop()
	{
		return true;
	}

	public virtual bool Deinitialize()
	{
		return true;
	}

	public abstract T GetLoadedSubsystem<T>() where T : class, ISubsystem;

	public virtual List<GraphicsDeviceType> GetSupportedGraphicsDeviceTypes(bool buildingPlayer)
	{
		return new List<GraphicsDeviceType>();
	}
}
public abstract class XRLoaderHelper : XRLoader
{
	protected Dictionary<Type, ISubsystem> m_SubsystemInstanceMap = new Dictionary<Type, ISubsystem>();

	public override T GetLoadedSubsystem<T>()
	{
		Type typeFromHandle = typeof(T);
		m_SubsystemInstanceMap.TryGetValue(typeFromHandle, out var value);
		return value as T;
	}

	protected void StartSubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			((ISubsystem)loadedSubsystem).Start();
		}
	}

	protected void StopSubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			((ISubsystem)loadedSubsystem).Stop();
		}
	}

	protected void DestroySubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			Type typeFromHandle = typeof(T);
			if (m_SubsystemInstanceMap.ContainsKey(typeFromHandle))
			{
				m_SubsystemInstanceMap.Remove(typeFromHandle);
			}
			((ISubsystem)loadedSubsystem).Destroy();
		}
	}

	protected void CreateSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : ISubsystemDescriptor where TSubsystem : ISubsystem
	{
		if (descriptors == null)
		{
			throw new ArgumentNullException("descriptors");
		}
		SubsystemManager.GetSubsystemDescriptors<TDescriptor>(descriptors);
		if (descriptors.Count <= 0)
		{
			return;
		}
		foreach (TDescriptor descriptor in descriptors)
		{
			ISubsystem val = null;
			if (string.Compare(((ISubsystemDescriptor)descriptor).id, id, ignoreCase: true) == 0)
			{
				val = ((ISubsystemDescriptor)descriptor).Create();
			}
			if (val != null)
			{
				m_SubsystemInstanceMap[typeof(TSubsystem)] = val;
				break;
			}
		}
	}

	[Obsolete("This method is obsolete. Please use the geenric CreateSubsystem method.", false)]
	protected void CreateIntegratedSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : IntegratedSubsystemDescriptor where TSubsystem : IntegratedSubsystem
	{
		CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
	}

	[Obsolete("This method is obsolete. Please use the generic CreateSubsystem method.", false)]
	protected void CreateStandaloneSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : SubsystemDescriptor where TSubsystem : Subsystem
	{
		CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
	}

	public override bool Deinitialize()
	{
		m_SubsystemInstanceMap.Clear();
		return base.Deinitialize();
	}
}
internal static class XRManagementAnalytics
{
	[Serializable]
	private struct BuildEvent
	{
		public string buildGuid;

		public string buildTarget;

		public string buildTargetGroup;

		public string[] assigned_loaders;
	}

	private const int kMaxEventsPerHour = 1000;

	private const int kMaxNumberOfElements = 1000;

	private const string kVendorKey = "unity.xrmanagement";

	private const string kEventBuild = "xrmanagment_build";

	private static bool s_Initialized;

	private static bool Initialize()
	{
		return s_Initialized;
	}
}
public sealed class XRManagerSettings : ScriptableObject
{
	[HideInInspector]
	private bool m_InitializationComplete;

	[HideInInspector]
	[SerializeField]
	private bool m_RequiresSettingsUpdate;

	[SerializeField]
	[Tooltip("Determines if the XR Manager instance is responsible for creating and destroying the appropriate loader instance.")]
	[FormerlySerializedAs("AutomaticLoading")]
	private bool m_AutomaticLoading;

	[SerializeField]
	[Tooltip("Determines if the XR Manager instance is responsible for starting and stopping subsystems for the active loader instance.")]
	[FormerlySerializedAs("AutomaticRunning")]
	private bool m_AutomaticRunning;

	[SerializeField]
	[Tooltip("List of XR Loader instances arranged in desired load order.")]
	[FormerlySerializedAs("Loaders")]
	private List<XRLoader> m_Loaders = new List<XRLoader>();

	[SerializeField]
	[HideInInspector]
	private HashSet<XRLoader> m_RegisteredLoaders = new HashSet<XRLoader>();

	public bool automaticLoading
	{
		get
		{
			return m_AutomaticLoading;
		}
		set
		{
			m_AutomaticLoading = value;
		}
	}

	public bool automaticRunning
	{
		get
		{
			return m_AutomaticRunning;
		}
		set
		{
			m_AutomaticRunning = value;
		}
	}

	[Obsolete("'XRManagerSettings.loaders' property is obsolete. Use 'XRManagerSettings.activeLoaders' instead to get a list of the current loaders.")]
	public List<XRLoader> loaders => m_Loaders;

	public IReadOnlyList<XRLoader> activeLoaders => m_Loaders;

	public bool isInitializationComplete => m_InitializationComplete;

	[HideInInspector]
	public XRLoader activeLoader { get; private set; }

	internal List<XRLoader> currentLoaders
	{
		get
		{
			return m_Loaders;
		}
		set
		{
			m_Loaders = value;
		}
	}

	internal HashSet<XRLoader> registeredLoaders => m_RegisteredLoaders;

	public T ActiveLoaderAs<T>() where T : XRLoader
	{
		return activeLoader as T;
	}

	public void InitializeLoaderSync()
	{
		if ((Object)(object)activeLoader != (Object)null)
		{
			Debug.LogWarning((object)"XR Management has already initialized an active loader in this scene. Please make sure to stop all subsystems and deinitialize the active loader before initializing a new one.");
			return;
		}
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if ((Object)(object)currentLoader != (Object)null && CheckGraphicsAPICompatibility(currentLoader) && currentLoader.Initialize())
			{
				activeLoader = currentLoader;
				m_InitializationComplete = true;
				return;
			}
		}
		activeLoader = null;
	}

	public IEnumerator InitializeLoader()
	{
		if ((Object)(object)activeLoader != (Object)null)
		{
			Debug.LogWarning((object)"XR Management has already initialized an active loader in this scene. Please make sure to stop all subsystems and deinitialize the active loader before initializing a new one.");
			yield break;
		}
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if ((Object)(object)currentLoader != (Object)null && CheckGraphicsAPICompatibility(currentLoader) && currentLoader.Initialize())
			{
				activeLoader = currentLoader;
				m_InitializationComplete = true;
				yield break;
			}
			yield return null;
		}
		activeLoader = null;
	}

	public bool TryAddLoader(XRLoader loader, int index = -1)
	{
		if ((Object)(object)loader == (Object)null || currentLoaders.Contains(loader))
		{
			return false;
		}
		if (!m_RegisteredLoaders.Contains(loader))
		{
			return false;
		}
		if (index < 0 || index >= currentLoaders.Count)
		{
			currentLoaders.Add(loader);
		}
		else
		{
			currentLoaders.Insert(index, loader);
		}
		return true;
	}

	public bool TryRemoveLoader(XRLoader loader)
	{
		bool result = true;
		if (currentLoaders.Contains(loader))
		{
			result = currentLoaders.Remove(loader);
		}
		return result;
	}

	public bool TrySetLoaders(List<XRLoader> reorderedLoaders)
	{
		List<XRLoader> list = new List<XRLoader>(activeLoaders);
		currentLoaders.Clear();
		foreach (XRLoader reorderedLoader in reorderedLoaders)
		{
			if (!TryAddLoader(reorderedLoader))
			{
				currentLoaders = list;
				return false;
			}
		}
		return true;
	}

	private void Awake()
	{
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if (!m_RegisteredLoaders.Contains(currentLoader))
			{
				m_RegisteredLoaders.Add(currentLoader);
			}
		}
	}

	private bool CheckGraphicsAPICompatibility(XRLoader loader)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		GraphicsDeviceType graphicsDeviceType = SystemInfo.graphicsDeviceType;
		List<GraphicsDeviceType> supportedGraphicsDeviceTypes = loader.GetSupportedGraphicsDeviceTypes(buildingPlayer: false);
		if (supportedGraphicsDeviceTypes.Count > 0 && !supportedGraphicsDeviceTypes.Contains(graphicsDeviceType))
		{
			Debug.LogWarning((object)$"The {((Object)loader).name} does not support the initialized graphics device, {((object)(GraphicsDeviceType)(ref graphicsDeviceType)).ToString()}. Please change the preffered Graphics API in PlayerSettings. Attempting to start the next XR loader.");
			return false;
		}
		return true;
	}

	public void StartSubsystems()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to StartSubsystems without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
		}
		else if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Start();
		}
	}

	public void StopSubsystems()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to StopSubsystems without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
		}
		else if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Stop();
		}
	}

	public void DeinitializeLoader()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to DeinitializeLoader without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
			return;
		}
		StopSubsystems();
		if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Deinitialize();
			activeLoader = null;
		}
		m_InitializationComplete = false;
	}

	private void Start()
	{
		if (automaticLoading && automaticRunning)
		{
			StartSubsystems();
		}
	}

	private void OnDisable()
	{
		if (automaticLoading && automaticRunning)
		{
			StopSubsystems();
		}
	}

	private void OnDestroy()
	{
		if (automaticLoading)
		{
			DeinitializeLoader();
		}
	}
}

BepInEx/plugins/LCVR/RuntimeDeps/Unity.XR.OpenXR.dll

Decompiled 5 days ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using AOT;
using UnityEngine.Analytics;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.LowLevel;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.InputSystem.XR;
using UnityEngine.Scripting;
using UnityEngine.Serialization;
using UnityEngine.XR.Management;
using UnityEngine.XR.OpenXR.Features;
using UnityEngine.XR.OpenXR.Features.Interactions;
using UnityEngine.XR.OpenXR.Input;
using UnityEngine.XR.OpenXR.NativeTypes;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Editor")]
[assembly: InternalsVisibleTo("UnityEditor.XR.OpenXR.Tests")]
[assembly: Preserve]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.TestHelpers")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Tests.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Features.MockRuntime")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Features.ConformanceAutomation")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[3291]
		{
			0, 0, 0, 2, 0, 0, 0, 96, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
			49, 46, 56, 46, 50, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 70, 101, 97, 116, 117, 114,
			101, 115, 92, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 92, 68, 80, 97, 100,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 46, 99, 115, 0, 0, 0, 3, 0, 0,
			0, 99, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
			110, 120, 114, 64, 49, 46, 56, 46, 50, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 101,
			97, 116, 117, 114, 101, 115, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 92,
			69, 121, 101, 71, 97, 122, 101, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 107, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
			64, 49, 46, 56, 46, 50, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 101, 97, 116, 117,
			114, 101, 115, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 92, 72, 97, 110,
			100, 67, 111, 109, 109, 111, 110, 80, 111, 115,
			101, 115, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 103, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
			112, 101, 110, 120, 114, 64, 49, 46, 56, 46,
			50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 101, 97, 116, 117, 114, 101, 115, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			115, 92, 72, 97, 110, 100, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 80, 114, 111,
			102, 105, 108, 101, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 108, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			111, 112, 101, 110, 120, 114, 64, 49, 46, 56,
			46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 101, 97, 116, 117, 114, 101, 115, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 115, 92, 72, 80, 82, 101, 118, 101, 114,
			98, 71, 50, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 80, 114, 111, 102, 105, 108, 101,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			105, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 101, 97,
			116, 117, 114, 101, 115, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 92, 72,
			84, 67, 86, 105, 118, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
			105, 108, 101, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 107, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
			112, 101, 110, 120, 114, 64, 49, 46, 56, 46,
			50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			70, 101, 97, 116, 117, 114, 101, 115, 92, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			115, 92, 75, 72, 82, 83, 105, 109, 112, 108,
			101, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 80, 114, 111, 102, 105, 108, 101, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 115, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
			64, 49, 46, 56, 46, 50, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 70, 101, 97, 116, 117,
			114, 101, 115, 92, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 92, 77, 101, 116,
			97, 81, 117, 101, 115, 116, 84, 111, 117, 99,
			104, 80, 114, 111, 67, 111, 110, 116, 114, 111,
			108, 108, 101, 114, 80, 114, 111, 102, 105, 108,
			101, 46, 99, 115, 0, 0, 0, 2, 0, 0,
			0, 105, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
			110, 120, 114, 64, 49, 46, 56, 46, 50, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 70, 101,
			97, 116, 117, 114, 101, 115, 92, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 92,
			77, 105, 99, 114, 111, 115, 111, 102, 116, 72,
			97, 110, 100, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 113, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			111, 112, 101, 110, 120, 114, 64, 49, 46, 56,
			46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 70, 101, 97, 116, 117, 114, 101, 115, 92,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 115, 92, 77, 105, 99, 114, 111, 115, 111,
			102, 116, 77, 111, 116, 105, 111, 110, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 80, 114,
			111, 102, 105, 108, 101, 46, 99, 115, 0, 0,
			0, 2, 0, 0, 0, 109, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
			56, 46, 50, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 101, 97, 116, 117, 114, 101, 115,
			92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 115, 92, 79, 99, 117, 108, 117, 115,
			84, 111, 117, 99, 104, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 80, 114, 111, 102, 105,
			108, 101, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 100, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
			101, 110, 120, 114, 64, 49, 46, 56, 46, 50,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			101, 97, 116, 117, 114, 101, 115, 92, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
			92, 80, 97, 108, 109, 80, 111, 115, 101, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			108, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 70, 101, 97,
			116, 117, 114, 101, 115, 92, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 92, 86,
			97, 108, 118, 101, 73, 110, 100, 101, 120, 67,
			111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
			114, 111, 102, 105, 108, 101, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 81, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 111, 112, 101, 110, 120, 114, 64, 49,
			46, 56, 46, 50, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 70, 101, 97, 116, 117, 114, 101,
			115, 92, 79, 112, 101, 110, 88, 82, 70, 101,
			97, 116, 117, 114, 101, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 89, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
			56, 46, 50, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 70, 101, 97, 116, 117, 114, 101, 115,
			92, 79, 112, 101, 110, 88, 82, 70, 101, 97,
			116, 117, 114, 101, 73, 110, 116, 101, 114, 110,
			97, 108, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 89, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
			101, 110, 120, 114, 64, 49, 46, 56, 46, 50,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
			101, 97, 116, 117, 114, 101, 115, 92, 79, 112,
			101, 110, 88, 82, 70, 101, 97, 116, 117, 114,
			101, 83, 101, 116, 116, 105, 110, 103, 115, 46,
			99, 115, 0, 0, 0, 6, 0, 0, 0, 92,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
			114, 64, 49, 46, 56, 46, 50, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 70, 101, 97, 116,
			117, 114, 101, 115, 92, 79, 112, 101, 110, 88,
			82, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 70, 101, 97, 116, 117, 114, 101, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 78,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
			114, 64, 49, 46, 56, 46, 50, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 105, 110, 112, 117,
			116, 92, 72, 97, 112, 116, 105, 99, 67, 111,
			110, 116, 114, 111, 108, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 77, 92, 76, 105, 98,
			114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
			103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
			109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
			46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
			56, 46, 50, 92, 82, 117, 110, 116, 105, 109,
			101, 92, 105, 110, 112, 117, 116, 92, 79, 112,
			101, 110, 88, 82, 68, 101, 118, 105, 99, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			74, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 105, 110, 112,
			117, 116, 92, 79, 112, 101, 110, 88, 82, 72,
			109, 100, 46, 99, 115, 0, 0, 0, 4, 0,
			0, 0, 76, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
			101, 110, 120, 114, 64, 49, 46, 56, 46, 50,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 105,
			110, 112, 117, 116, 92, 79, 112, 101, 110, 88,
			82, 73, 110, 112, 117, 116, 46, 99, 115, 0,
			0, 0, 2, 0, 0, 0, 76, 92, 76, 105,
			98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
			97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
			111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
			114, 46, 111, 112, 101, 110, 120, 114, 64, 49,
			46, 56, 46, 50, 92, 82, 117, 110, 116, 105,
			109, 101, 92, 105, 110, 112, 117, 116, 92, 80,
			111, 115, 101, 67, 111, 110, 116, 114, 111, 108,
			46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
			74, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 79, 112, 101,
			110, 88, 82, 65, 110, 97, 108, 121, 116, 105,
			99, 115, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 74, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
			101, 110, 120, 114, 64, 49, 46, 56, 46, 50,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 79,
			112, 101, 110, 88, 82, 67, 111, 110, 115, 116,
			97, 110, 116, 115, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 81, 92, 76, 105, 98, 114,
			97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
			101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
			46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
			111, 112, 101, 110, 120, 114, 64, 49, 46, 56,
			46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 79, 112, 101, 110, 88, 82, 68, 105, 97,
			103, 110, 111, 115, 116, 105, 99, 82, 101, 112,
			111, 114, 116, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 71, 92, 76, 105, 98, 114, 97,
			114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
			67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
			117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
			112, 101, 110, 120, 114, 64, 49, 46, 56, 46,
			50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
			79, 112, 101, 110, 88, 82, 76, 111, 97, 100,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 79, 92, 76, 105, 98, 114, 97, 114,
			121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
			97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
			110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
			101, 110, 120, 114, 64, 49, 46, 56, 46, 50,
			92, 82, 117, 110, 116, 105, 109, 101, 92, 79,
			112, 101, 110, 88, 82, 76, 111, 97, 100, 101,
			114, 73, 110, 116, 101, 114, 110, 97, 108, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 80,
			92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
			97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
			101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
			121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
			114, 64, 49, 46, 56, 46, 50, 92, 82, 117,
			110, 116, 105, 109, 101, 92, 79, 112, 101, 110,
			88, 82, 76, 111, 97, 100, 101, 114, 78, 111,
			80, 114, 101, 73, 110, 105, 116, 46, 99, 115,
			0, 0, 0, 4, 0, 0, 0, 76, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
			49, 46, 56, 46, 50, 92, 82, 117, 110, 116,
			105, 109, 101, 92, 79, 112, 101, 110, 88, 82,
			78, 97, 116, 105, 118, 101, 84, 121, 112, 101,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 79, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
			110, 120, 114, 64, 49, 46, 56, 46, 50, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 79, 112,
			101, 110, 88, 82, 82, 101, 110, 100, 101, 114,
			83, 101, 116, 116, 105, 110, 103, 115, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 74, 92,
			76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
			99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
			92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
			46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
			64, 49, 46, 56, 46, 50, 92, 82, 117, 110,
			116, 105, 109, 101, 92, 79, 112, 101, 110, 88,
			82, 82, 101, 115, 116, 97, 114, 116, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			72, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 79, 112, 101,
			110, 88, 82, 82, 117, 110, 116, 105, 109, 101,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			73, 92, 76, 105, 98, 114, 97, 114, 121, 92,
			80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
			104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
			116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
			120, 114, 64, 49, 46, 56, 46, 50, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 79, 112, 101,
			110, 88, 82, 83, 101, 116, 116, 105, 110, 103,
			115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 79, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
			110, 120, 114, 64, 49, 46, 56, 46, 50, 92,
			82, 117, 110, 116, 105, 109, 101, 92, 87, 97,
			105, 116, 70, 111, 114, 82, 101, 115, 116, 97,
			114, 116, 70, 105, 110, 105, 115, 104, 46, 99,
			115
		};
		result.TypesData = new byte[4017]
		{
			0, 0, 0, 0, 59, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
			116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 124, 68,
			80, 97, 100, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 0, 0, 0, 0, 64, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 70, 101, 97, 116, 117, 114, 101, 115, 46,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 115, 46, 68, 80, 97, 100, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 124, 68,
			80, 97, 100, 0, 0, 0, 0, 62, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 46, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			115, 124, 69, 121, 101, 71, 97, 122, 101, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			0, 0, 0, 0, 76, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
			116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 46, 69,
			121, 101, 71, 97, 122, 101, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 124, 69, 121,
			101, 71, 97, 122, 101, 68, 101, 118, 105, 99,
			101, 0, 0, 0, 0, 61, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 79, 112, 101, 110, 88, 82, 46, 70, 101,
			97, 116, 117, 114, 101, 115, 46, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 124,
			69, 121, 101, 84, 114, 97, 99, 107, 105, 110,
			103, 85, 115, 97, 103, 101, 115, 0, 0, 0,
			0, 70, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 124, 72, 97, 110, 100,
			67, 111, 109, 109, 111, 110, 80, 111, 115, 101,
			115, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 0, 0, 0, 0, 91, 85, 110, 105,
			116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
			82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
			101, 97, 116, 117, 114, 101, 115, 46, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
			46, 72, 97, 110, 100, 67, 111, 109, 109, 111,
			110, 80, 111, 115, 101, 115, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 124, 72, 97,
			110, 100, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 80, 111, 115, 101, 115, 0, 0,
			0, 0, 66, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
			114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 124, 72, 97, 110,
			100, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 80, 114, 111, 102, 105, 108, 101, 0,
			0, 0, 0, 82, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
			117, 114, 101, 115, 46, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 115, 46, 72, 97,
			110, 100, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 80, 114, 111, 102, 105, 108, 101,
			124, 72, 97, 110, 100, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 0, 0, 0, 0,
			71, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
			88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
			115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 115, 124, 72, 80, 82, 101, 118,
			101, 114, 98, 71, 50, 67, 111, 110, 116, 114,
			111, 108, 108, 101, 114, 80, 114, 111, 102, 105,
			108, 101, 0, 0, 0, 0, 90, 85, 110, 105,
			116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
			82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
			101, 97, 116, 117, 114, 101, 115, 46, 73, 110,
			116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
			46, 72, 80, 82, 101, 118, 101, 114, 98, 71,
			50, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 80, 114, 111, 102, 105, 108, 101, 124, 82,
			101, 118, 101, 114, 98, 71, 50, 67, 111, 110,
			116, 114, 111, 108, 108, 101, 114, 0, 0, 0,
			0, 68, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 124, 72, 84, 67, 86,
			105, 118, 101, 67, 111, 110, 116, 114, 111, 108,
			108, 101, 114, 80, 114, 111, 102, 105, 108, 101,
			0, 0, 0, 0, 83, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
			116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 46, 72,
			84, 67, 86, 105, 118, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
			105, 108, 101, 124, 86, 105, 118, 101, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 0, 0,
			0, 0, 70, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
			114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 124, 75, 72, 82,
			83, 105, 109, 112, 108, 101, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
			105, 108, 101, 0, 0, 0, 0, 90, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 46, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			115, 46, 75, 72, 82, 83, 105, 109, 112, 108,
			101, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 80, 114, 111, 102, 105, 108, 101, 124, 75,
			72, 82, 83, 105, 109, 112, 108, 101, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 0, 0,
			0, 0, 78, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
			114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 124, 77, 101, 116,
			97, 81, 117, 101, 115, 116, 84, 111, 117, 99,
			104, 80, 114, 111, 67, 111, 110, 116, 114, 111,
			108, 108, 101, 114, 80, 114, 111, 102, 105, 108,
			101, 0, 0, 0, 0, 102, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 79, 112, 101, 110, 88, 82, 46, 70, 101,
			97, 116, 117, 114, 101, 115, 46, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 46,
			77, 101, 116, 97, 81, 117, 101, 115, 116, 84,
			111, 117, 99, 104, 80, 114, 111, 67, 111, 110,
			116, 114, 111, 108, 108, 101, 114, 80, 114, 111,
			102, 105, 108, 101, 124, 81, 117, 101, 115, 116,
			80, 114, 111, 84, 111, 117, 99, 104, 67, 111,
			110, 116, 114, 111, 108, 108, 101, 114, 0, 0,
			0, 0, 68, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
			114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 124, 77, 105, 99,
			114, 111, 115, 111, 102, 116, 72, 97, 110, 100,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 0, 0, 0, 0, 81, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 79, 112, 101, 110, 88, 82, 46, 70, 101,
			97, 116, 117, 114, 101, 115, 46, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 46,
			77, 105, 99, 114, 111, 115, 111, 102, 116, 72,
			97, 110, 100, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 124, 72, 111, 108, 111, 76,
			101, 110, 115, 72, 97, 110, 100, 0, 0, 0,
			0, 76, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 124, 77, 105, 99, 114,
			111, 115, 111, 102, 116, 77, 111, 116, 105, 111,
			110, 67, 111, 110, 116, 114, 111, 108, 108, 101,
			114, 80, 114, 111, 102, 105, 108, 101, 0, 0,
			0, 0, 97, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
			114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
			99, 116, 105, 111, 110, 115, 46, 77, 105, 99,
			114, 111, 115, 111, 102, 116, 77, 111, 116, 105,
			111, 110, 67, 111, 110, 116, 114, 111, 108, 108,
			101, 114, 80, 114, 111, 102, 105, 108, 101, 124,
			87, 77, 82, 83, 112, 97, 116, 105, 97, 108,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			0, 0, 0, 0, 72, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
			116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
			114, 97, 99, 116, 105, 111, 110, 115, 124, 79,
			99, 117, 108, 117, 115, 84, 111, 117, 99, 104,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			80, 114, 111, 102, 105, 108, 101, 0, 0, 0,
			0, 94, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 46, 79, 99, 117, 108,
			117, 115, 84, 111, 117, 99, 104, 67, 111, 110,
			116, 114, 111, 108, 108, 101, 114, 80, 114, 111,
			102, 105, 108, 101, 124, 79, 99, 117, 108, 117,
			115, 84, 111, 117, 99, 104, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 0, 0, 0, 0,
			63, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
			88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
			115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 115, 124, 80, 97, 108, 109, 80,
			111, 115, 101, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 0, 0, 0, 0, 72, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 70, 101, 97, 116, 117, 114, 101, 115, 46,
			73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
			110, 115, 46, 80, 97, 108, 109, 80, 111, 115,
			101, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 124, 80, 97, 108, 109, 80, 111, 115,
			101, 0, 0, 0, 0, 71, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 79, 112, 101, 110, 88, 82, 46, 70, 101,
			97, 116, 117, 114, 101, 115, 46, 73, 110, 116,
			101, 114, 97, 99, 116, 105, 111, 110, 115, 124,
			86, 97, 108, 118, 101, 73, 110, 100, 101, 120,
			67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
			80, 114, 111, 102, 105, 108, 101, 0, 0, 0,
			0, 92, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 115, 46, 86, 97, 108, 118,
			101, 73, 110, 100, 101, 120, 67, 111, 110, 116,
			114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
			105, 108, 101, 124, 86, 97, 108, 118, 101, 73,
			110, 100, 101, 120, 67, 111, 110, 116, 114, 111,
			108, 108, 101, 114, 1, 0, 0, 0, 44, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 70, 101, 97, 116, 117, 114, 101, 115, 124,
			79, 112, 101, 110, 88, 82, 70, 101, 97, 116,
			117, 114, 101, 1, 0, 0, 0, 44, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 124, 79,
			112, 101, 110, 88, 82, 70, 101, 97, 116, 117,
			114, 101, 1, 0, 0, 0, 36, 85, 110, 105,
			116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
			82, 46, 79, 112, 101, 110, 88, 82, 124, 79,
			112, 101, 110, 88, 82, 83, 101, 116, 116, 105,
			110, 103, 115, 0, 0, 0, 0, 55, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 124, 79,
			112, 101, 110, 88, 82, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 70, 101, 97, 116,
			117, 114, 101, 0, 0, 0, 0, 69, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 46, 79,
			112, 101, 110, 88, 82, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 70, 101, 97, 116,
			117, 114, 101, 124, 65, 99, 116, 105, 111, 110,
			66, 105, 110, 100, 105, 110, 103, 0, 0, 0,
			0, 68, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
			101, 115, 46, 79, 112, 101, 110, 88, 82, 73,
			110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
			70, 101, 97, 116, 117, 114, 101, 124, 65, 99,
			116, 105, 111, 110, 67, 111, 110, 102, 105, 103,
			0, 0, 0, 0, 68, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
			116, 117, 114, 101, 115, 46, 79, 112, 101, 110,
			88, 82, 73, 110, 116, 101, 114, 97, 99, 116,
			105, 111, 110, 70, 101, 97, 116, 117, 114, 101,
			124, 68, 101, 118, 105, 99, 101, 67, 111, 110,
			102, 105, 103, 0, 0, 0, 0, 71, 85, 110,
			105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
			88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
			70, 101, 97, 116, 117, 114, 101, 115, 46, 79,
			112, 101, 110, 88, 82, 73, 110, 116, 101, 114,
			97, 99, 116, 105, 111, 110, 70, 101, 97, 116,
			117, 114, 101, 124, 65, 99, 116, 105, 111, 110,
			77, 97, 112, 67, 111, 110, 102, 105, 103, 0,
			0, 0, 0, 65, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
			117, 114, 101, 115, 46, 79, 112, 101, 110, 88,
			82, 73, 110, 116, 101, 114, 97, 99, 116, 105,
			111, 110, 70, 101, 97, 116, 117, 114, 101, 124,
			85, 115, 101, 114, 80, 97, 116, 104, 115, 0,
			0, 0, 0, 34, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 46, 73, 110, 112, 117,
			116, 124, 72, 97, 112, 116, 105, 99, 0, 0,
			0, 0, 41, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 73, 110, 112, 117, 116,
			124, 72, 97, 112, 116, 105, 99, 67, 111, 110,
			116, 114, 111, 108, 0, 0, 0, 0, 40, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 73, 110, 112, 117, 116, 124, 79, 112, 101,
			110, 88, 82, 68, 101, 118, 105, 99, 101, 0,
			0, 0, 0, 37, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 46, 73, 110, 112, 117,
			116, 124, 79, 112, 101, 110, 88, 82, 72, 109,
			100, 0, 0, 0, 0, 39, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
			46, 79, 112, 101, 110, 88, 82, 46, 73, 110,
			112, 117, 116, 124, 79, 112, 101, 110, 88, 82,
			73, 110, 112, 117, 116, 0, 0, 0, 0, 54,
			85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
			101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
			82, 46, 73, 110, 112, 117, 116, 46, 79, 112,
			101, 110, 88, 82, 73, 110, 112, 117, 116, 124,
			83, 101, 114, 105, 97, 108, 105, 122, 101, 100,
			71, 117, 105, 100, 0, 0, 0, 0, 57, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 73, 110, 112, 117, 116, 46, 79, 112, 101,
			110, 88, 82, 73, 110, 112, 117, 116, 124, 83,
			101, 114, 105, 97, 108, 105, 122, 101, 100, 66,
			105, 110, 100, 105, 110, 103, 0, 0, 0, 0,
			66, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
			88, 82, 46, 73, 110, 112, 117, 116, 46, 79,
			112, 101, 110, 88, 82, 73, 110, 112, 117, 116,
			124, 71, 101, 116, 73, 110, 116, 101, 114, 110,
			97, 108, 68, 101, 118, 105, 99, 101, 73, 100,
			67, 111, 109, 109, 97, 110, 100, 0, 0, 0,
			0, 32, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 46, 73, 110, 112, 117, 116, 124,
			80, 111, 115, 101, 0, 0, 0, 0, 39, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			46, 73, 110, 112, 117, 116, 124, 80, 111, 115,
			101, 67, 111, 110, 116, 114, 111, 108, 0, 0,
			0, 0, 37, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 124, 79, 112, 101, 110, 88,
			82, 65, 110, 97, 108, 121, 116, 105, 99, 115,
			0, 0, 0, 0, 53, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 65, 110, 97, 108, 121, 116, 105,
			99, 115, 124, 73, 110, 105, 116, 105, 97, 108,
			105, 122, 101, 69, 118, 101, 110, 116, 0, 0,
			0, 0, 31, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 124, 67, 111, 110, 115, 116,
			97, 110, 116, 115, 0, 0, 0, 0, 38, 85,
			110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
			46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
			124, 68, 105, 97, 103, 110, 111, 115, 116, 105,
			99, 82, 101, 112, 111, 114, 116, 0, 0, 0,
			0, 34, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 124, 79, 112, 101, 110, 88, 82,
			76, 111, 97, 100, 101, 114, 1, 0, 0, 0,
			38, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
			88, 82, 124, 79, 112, 101, 110, 88, 82, 76,
			111, 97, 100, 101, 114, 66, 97, 115, 101, 1,
			0, 0, 0, 38, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
			88, 82, 76, 111, 97, 100, 101, 114, 66, 97,
			115, 101, 0, 0, 0, 0, 43, 85, 110, 105,
			116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
			82, 46, 79, 112, 101, 110, 88, 82, 124, 79,
			112, 101, 110, 88, 82, 76, 111, 97, 100, 101,
			114, 78, 111, 80, 114, 101, 73, 110, 105, 116,
			0, 0, 0, 0, 44, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 78, 97, 116,
			105, 118, 101, 84, 121, 112, 101, 115, 124, 88,
			114, 86, 101, 99, 116, 111, 114, 50, 102, 0,
			0, 0, 0, 44, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 46, 78, 97, 116, 105,
			118, 101, 84, 121, 112, 101, 115, 124, 88, 114,
			86, 101, 99, 116, 111, 114, 51, 102, 0, 0,
			0, 0, 47, 85, 110, 105, 116, 121, 69, 110,
			103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
			101, 110, 88, 82, 46, 78, 97, 116, 105, 118,
			101, 84, 121, 112, 101, 115, 124, 88, 114, 81,
			117, 97, 116, 101, 114, 110, 105, 111, 110, 102,
			0, 0, 0, 0, 41, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 46, 78, 97, 116,
			105, 118, 101, 84, 121, 112, 101, 115, 124, 88,
			114, 80, 111, 115, 101, 102, 1, 0, 0, 0,
			36, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
			88, 82, 124, 79, 112, 101, 110, 88, 82, 83,
			101, 116, 116, 105, 110, 103, 115, 0, 0, 0,
			0, 37, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
			110, 88, 82, 124, 79, 112, 101, 110, 88, 82,
			82, 101, 115, 116, 97, 114, 116, 101, 114, 0,
			0, 0, 0, 35, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
			88, 82, 82, 117, 110, 116, 105, 109, 101, 1,
			0, 0, 0, 36, 85, 110, 105, 116, 121, 69,
			110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
			112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
			88, 82, 83, 101, 116, 116, 105, 110, 103, 115,
			0, 0, 0, 0, 42, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
			79, 112, 101, 110, 88, 82, 124, 87, 97, 105,
			116, 70, 111, 114, 82, 101, 115, 116, 97, 114,
			116, 70, 105, 110, 105, 115, 104
		};
		result.TotalFiles = 34;
		result.TotalTypes = 63;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UnityEngine.XR.OpenXR
{
	[Serializable]
	public class OpenXRSettings : ScriptableObject
	{
		public enum RenderMode
		{
			MultiPass,
			SinglePassInstanced
		}

		public enum DepthSubmissionMode
		{
			None,
			Depth16Bit,
			Depth24Bit
		}

		[FormerlySerializedAs("extensions")]
		[HideInInspector]
		[SerializeField]
		internal OpenXRFeature[] features = new OpenXRFeature[0];

		[SerializeField]
		private RenderMode m_renderMode = RenderMode.SinglePassInstanced;

		[SerializeField]
		private DepthSubmissionMode m_depthSubmissionMode;

		private const string LibraryName = "UnityOpenXR";

		private static OpenXRSettings s_RuntimeInstance;

		public int featureCount => features.Length;

		public RenderMode renderMode
		{
			get
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					return Internal_GetRenderMode();
				}
				return m_renderMode;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetRenderMode(value);
				}
				else
				{
					m_renderMode = value;
				}
			}
		}

		public DepthSubmissionMode depthSubmissionMode
		{
			get
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					return Internal_GetDepthSubmissionMode();
				}
				return m_depthSubmissionMode;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetDepthSubmissionMode(value);
				}
				else
				{
					m_depthSubmissionMode = value;
				}
			}
		}

		public static OpenXRSettings ActiveBuildTargetInstance => GetInstance(useActiveBuildTarget: true);

		public static OpenXRSettings Instance => GetInstance(useActiveBuildTarget: false);

		public TFeature GetFeature<TFeature>() where TFeature : OpenXRFeature
		{
			return (TFeature)GetFeature(typeof(TFeature));
		}

		public OpenXRFeature GetFeature(Type featureType)
		{
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					return openXRFeature;
				}
			}
			return null;
		}

		public OpenXRFeature[] GetFeatures<TFeature>()
		{
			return GetFeatures(typeof(TFeature));
		}

		public OpenXRFeature[] GetFeatures(Type featureType)
		{
			List<OpenXRFeature> list = new List<OpenXRFeature>();
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					list.Add(openXRFeature);
				}
			}
			return list.ToArray();
		}

		public int GetFeatures<TFeature>(List<TFeature> featuresOut) where TFeature : OpenXRFeature
		{
			featuresOut.Clear();
			OpenXRFeature[] array = features;
			for (int i = 0; i < array.Length; i++)
			{
				if (array[i] is TFeature item)
				{
					featuresOut.Add(item);
				}
			}
			return featuresOut.Count;
		}

		public int GetFeatures(Type featureType, List<OpenXRFeature> featuresOut)
		{
			featuresOut.Clear();
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					featuresOut.Add(openXRFeature);
				}
			}
			return featuresOut.Count;
		}

		public OpenXRFeature[] GetFeatures()
		{
			return ((OpenXRFeature[])features?.Clone()) ?? new OpenXRFeature[0];
		}

		public int GetFeatures(List<OpenXRFeature> featuresOut)
		{
			featuresOut.Clear();
			featuresOut.AddRange(features);
			return featuresOut.Count;
		}

		private void ApplyRenderSettings()
		{
			Internal_SetRenderMode(m_renderMode);
			Internal_SetDepthSubmissionMode(m_depthSubmissionMode);
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetRenderMode")]
		private static extern void Internal_SetRenderMode(RenderMode renderMode);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRenderMode")]
		private static extern RenderMode Internal_GetRenderMode();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetDepthSubmissionMode")]
		private static extern void Internal_SetDepthSubmissionMode(DepthSubmissionMode depthSubmissionMode);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetDepthSubmissionMode")]
		private static extern DepthSubmissionMode Internal_GetDepthSubmissionMode();

		private void Awake()
		{
			s_RuntimeInstance = this;
		}

		internal void ApplySettings()
		{
			ApplyRenderSettings();
		}

		private static OpenXRSettings GetInstance(bool useActiveBuildTarget)
		{
			OpenXRSettings openXRSettings = null;
			openXRSettings = s_RuntimeInstance;
			if ((Object)(object)openXRSettings == (Object)null)
			{
				openXRSettings = ScriptableObject.CreateInstance<OpenXRSettings>();
			}
			return openXRSettings;
		}
	}
	internal static class OpenXRAnalytics
	{
		[Serializable]
		private struct InitializeEvent
		{
			public bool success;

			public string runtime;

			public string runtime_version;

			public string plugin_version;

			public string api_version;

			public string[] available_extensions;

			public string[] enabled_extensions;

			public string[] enabled_features;

			public string[] failed_features;
		}

		private const int kMaxEventsPerHour = 1000;

		private const int kMaxNumberOfElements = 1000;

		private const string kVendorKey = "unity.openxr";

		private const string kEventInitialize = "openxr_initialize";

		private static bool s_Initialized;

		private static bool Initialize()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			if (s_Initialized)
			{
				return true;
			}
			if ((int)Analytics.RegisterEvent("openxr_initialize", 1000, 1000, "unity.openxr", "") != 0)
			{
				return false;
			}
			s_Initialized = true;
			return true;
		}

		public static void SendInitializeEvent(bool success)
		{
			if (s_Initialized || Initialize())
			{
				SendPlayerAnalytics(CreateInitializeEvent(success));
			}
		}

		private static InitializeEvent CreateInitializeEvent(bool success)
		{
			InitializeEvent result = default(InitializeEvent);
			result.success = success;
			result.runtime = OpenXRRuntime.name;
			result.runtime_version = OpenXRRuntime.version;
			result.plugin_version = OpenXRRuntime.pluginVersion;
			result.api_version = OpenXRRuntime.apiVersion;
			result.enabled_extensions = (from ext in OpenXRRuntime.GetEnabledExtensions()
				select $"{ext}_{OpenXRRuntime.GetExtensionVersion(ext)}").ToArray();
			result.available_extensions = (from ext in OpenXRRuntime.GetAvailableExtensions()
				select $"{ext}_{OpenXRRuntime.GetExtensionVersion(ext)}").ToArray();
			result.enabled_features = (from f in OpenXRSettings.Instance.features
				where (Object)(object)f != (Object)null && f.enabled
				select ((object)f).GetType().FullName + "_" + f.version).ToArray();
			result.failed_features = (from f in OpenXRSettings.Instance.features
				where (Object)(object)f != (Object)null && f.failedInitialization
				select ((object)f).GetType().FullName + "_" + f.version).ToArray();
			return result;
		}

		private static void SendPlayerAnalytics(InitializeEvent data)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			Analytics.SendEvent("openxr_initialize", (object)data, 1, "");
		}
	}
	public static class Constants
	{
		public const string k_SettingsKey = "com.unity.xr.openxr.settings4";
	}
	internal class DiagnosticReport
	{
		private const string LibraryName = "UnityOpenXR";

		public static readonly ulong k_NullSection;

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_StartReport")]
		public static extern void StartReport();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_GetSection")]
		public static extern ulong GetSection(string sectionName);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddSectionEntry")]
		public static extern void AddSectionEntry(ulong sectionHandle, string sectionEntry, string sectionBody);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddSectionBreak")]
		public static extern void AddSectionBreak(ulong sectionHandle);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddEventEntry")]
		public static extern void AddEventEntry(string eventName, string eventData);

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_DumpReport")]
		private static extern void Internal_DumpReport();

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_DumpReportWithReason")]
		private static extern void Internal_DumpReport(string reason);

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_GenerateReport")]
		private static extern IntPtr Internal_GenerateReport();

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_ReleaseReport")]
		private static extern void Internal_ReleaseReport(IntPtr report);

		internal static string GenerateReport()
		{
			string result = "";
			IntPtr intPtr = Internal_GenerateReport();
			if (intPtr != IntPtr.Zero)
			{
				result = Marshal.PtrToStringAnsi(intPtr);
				Internal_ReleaseReport(intPtr);
				intPtr = IntPtr.Zero;
			}
			return result;
		}

		public static void DumpReport(string reason)
		{
			Internal_DumpReport(reason);
		}
	}
	public class OpenXRLoader : OpenXRLoaderBase
	{
	}
	public class OpenXRLoaderBase : XRLoaderHelper
	{
		internal enum LoaderState
		{
			Uninitialized,
			InitializeAttempted,
			Initialized,
			StartAttempted,
			Started,
			StopAttempted,
			Stopped,
			DeinitializeAttempted
		}

		internal delegate void ReceiveNativeEventDelegate(OpenXRFeature.NativeEvent e, ulong payload);

		private const double k_IdlePollingWaitTimeInSeconds = 0.1;

		private static List<XRDisplaySubsystemDescriptor> s_DisplaySubsystemDescriptors = new List<XRDisplaySubsystemDescriptor>();

		private static List<XRInputSubsystemDescriptor> s_InputSubsystemDescriptors = new List<XRInputSubsystemDescriptor>();

		private List<LoaderState> validLoaderInitStates = new List<LoaderState>
		{
			LoaderState.Uninitialized,
			LoaderState.InitializeAttempted
		};

		private List<LoaderState> validLoaderStartStates = new List<LoaderState>
		{
			LoaderState.Initialized,
			LoaderState.StartAttempted,
			LoaderState.Stopped
		};

		private List<LoaderState> validLoaderStopStates = new List<LoaderState>
		{
			LoaderState.StartAttempted,
			LoaderState.Started,
			LoaderState.StopAttempted
		};

		private List<LoaderState> validLoaderDeinitStates = new List<LoaderState>
		{
			LoaderState.InitializeAttempted,
			LoaderState.Initialized,
			LoaderState.Stopped,
			LoaderState.DeinitializeAttempted
		};

		private List<LoaderState> runningStates = new List<LoaderState>
		{
			LoaderState.Initialized,
			LoaderState.StartAttempted,
			LoaderState.Started
		};

		private OpenXRFeature.NativeEvent currentOpenXRState;

		private bool actionSetsAttached;

		private UnhandledExceptionEventHandler unhandledExceptionHandler;

		internal bool DisableValidationChecksOnEnteringPlaymode;

		private double lastPollCheckTime;

		private const string LibraryName = "UnityOpenXR";

		internal static OpenXRLoaderBase Instance { get; private set; }

		internal LoaderState currentLoaderState { get; private set; }

		internal XRDisplaySubsystem displaySubsystem => ((XRLoaderHelper)this).GetLoadedSubsystem<XRDisplaySubsystem>();

		internal XRInputSubsystem inputSubsystem
		{
			get
			{
				OpenXRLoaderBase instance = Instance;
				if (instance == null)
				{
					return null;
				}
				return ((XRLoaderHelper)instance).GetLoadedSubsystem<XRInputSubsystem>();
			}
		}

		private bool isInitialized
		{
			get
			{
				if (currentLoaderState != 0)
				{
					return currentLoaderState != LoaderState.DeinitializeAttempted;
				}
				return false;
			}
		}

		private bool isStarted => runningStates.Contains(currentLoaderState);

		private static void ExceptionHandler(object sender, UnhandledExceptionEventArgs args)
		{
			ulong section = DiagnosticReport.GetSection("Unhandled Exception Report");
			DiagnosticReport.AddSectionEntry(section, "Is Terminating", $"{args.IsTerminating}");
			Exception ex = (Exception)args.ExceptionObject;
			DiagnosticReport.AddSectionEntry(section, "Message", ex.Message ?? "");
			DiagnosticReport.AddSectionEntry(section, "Source", ex.Source ?? "");
			DiagnosticReport.AddSectionEntry(section, "Stack Trace", "\n" + ex.StackTrace);
			DiagnosticReport.DumpReport("Uncaught Exception");
		}

		public override bool Initialize()
		{
			if (currentLoaderState == LoaderState.Initialized)
			{
				return true;
			}
			if (!validLoaderInitStates.Contains(currentLoaderState))
			{
				return false;
			}
			if ((Object)(object)Instance != (Object)null)
			{
				Debug.LogError((object)"Only one OpenXRLoader can be initialized at any given time");
				return false;
			}
			DiagnosticReport.StartReport();
			try
			{
				if (InitializeInternal())
				{
					return true;
				}
			}
			catch (Exception ex)
			{
				Debug.LogException(ex);
			}
			((XRLoader)this).Deinitialize();
			Instance = null;
			OpenXRAnalytics.SendInitializeEvent(success: false);
			return false;
		}

		private bool InitializeInternal()
		{
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Expected O, but got Unknown
			Instance = this;
			currentLoaderState = LoaderState.InitializeAttempted;
			Internal_SetSuccessfullyInitialized(value: false);
			OpenXRInput.RegisterLayouts();
			OpenXRFeature.Initialize();
			if (!LoadOpenXRSymbols())
			{
				Debug.LogError((object)"Failed to load openxr runtime loader.");
				return false;
			}
			OpenXRSettings.Instance.features = (from f in OpenXRSettings.Instance.features
				where (Object)(object)f != (Object)null
				orderby f.priority descending, f.nameUi
				select f).ToArray();
			OpenXRFeature.HookGetInstanceProcAddr();
			if (!Internal_InitializeSession())
			{
				return false;
			}
			SetApplicationInfo();
			RequestOpenXRFeatures();
			RegisterOpenXRCallbacks();
			if ((Object)null != (Object)(object)OpenXRSettings.Instance)
			{
				OpenXRSettings.Instance.ApplySettings();
			}
			if (!CreateSubsystems())
			{
				return false;
			}
			if (OpenXRFeature.requiredFeatureFailed)
			{
				return false;
			}
			OpenXRAnalytics.SendInitializeEvent(success: true);
			OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemCreate);
			DebugLogEnabledSpecExtensions();
			Application.onBeforeRender += new UnityAction(ProcessOpenXRMessageLoop);
			currentLoaderState = LoaderState.Initialized;
			return true;
		}

		private bool CreateSubsystems()
		{
			if (displaySubsystem == null)
			{
				this.CreateSubsystem<XRDisplaySubsystemDescriptor, XRDisplaySubsystem>(s_DisplaySubsystemDescriptors, "OpenXR Display");
				if (displaySubsystem == null)
				{
					return false;
				}
			}
			if (inputSubsystem == null)
			{
				this.CreateSubsystem<XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "OpenXR Input");
				if (inputSubsystem == null)
				{
					return false;
				}
			}
			return true;
		}

		internal void ProcessOpenXRMessageLoop()
		{
			if (currentOpenXRState == OpenXRFeature.NativeEvent.XrIdle || currentOpenXRState == OpenXRFeature.NativeEvent.XrStopping || currentOpenXRState == OpenXRFeature.NativeEvent.XrExiting || currentOpenXRState == OpenXRFeature.NativeEvent.XrLossPending || currentOpenXRState == OpenXRFeature.NativeEvent.XrInstanceLossPending)
			{
				float realtimeSinceStartup = Time.realtimeSinceStartup;
				if ((double)realtimeSinceStartup - lastPollCheckTime < 0.1)
				{
					return;
				}
				lastPollCheckTime = realtimeSinceStartup;
			}
			Internal_PumpMessageLoop();
		}

		public override bool Start()
		{
			if (currentLoaderState == LoaderState.Started)
			{
				return true;
			}
			if (!validLoaderStartStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.StartAttempted;
			if (!StartInternal())
			{
				((XRLoader)this).Stop();
				return false;
			}
			currentLoaderState = LoaderState.Started;
			return true;
		}

		private bool StartInternal()
		{
			if (!Internal_CreateSessionIfNeeded())
			{
				return false;
			}
			if (currentOpenXRState != OpenXRFeature.NativeEvent.XrReady || (currentLoaderState != LoaderState.StartAttempted && currentLoaderState != LoaderState.Started))
			{
				return true;
			}
			this.StartSubsystem<XRDisplaySubsystem>();
			XRDisplaySubsystem obj = displaySubsystem;
			if (obj != null && !((IntegratedSubsystem)obj).running)
			{
				return false;
			}
			Internal_BeginSession();
			if (!actionSetsAttached)
			{
				OpenXRInput.AttachActionSets();
				actionSetsAttached = true;
			}
			XRDisplaySubsystem obj2 = displaySubsystem;
			if (obj2 != null && !((IntegratedSubsystem)obj2).running)
			{
				this.StartSubsystem<XRDisplaySubsystem>();
			}
			XRInputSubsystem obj3 = inputSubsystem;
			if (obj3 != null && !((IntegratedSubsystem)obj3).running)
			{
				this.StartSubsystem<XRInputSubsystem>();
			}
			XRInputSubsystem obj4 = inputSubsystem;
			bool num = obj4 != null && ((IntegratedSubsystem)obj4).running;
			XRDisplaySubsystem obj5 = displaySubsystem;
			bool flag = obj5 != null && ((IntegratedSubsystem)obj5).running;
			if (num && flag)
			{
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemStart);
				return true;
			}
			return false;
		}

		public override bool Stop()
		{
			if (currentLoaderState == LoaderState.Stopped)
			{
				return true;
			}
			if (!validLoaderStopStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.StopAttempted;
			XRInputSubsystem obj = inputSubsystem;
			bool num = obj != null && ((IntegratedSubsystem)obj).running;
			XRDisplaySubsystem obj2 = displaySubsystem;
			bool flag = obj2 != null && ((IntegratedSubsystem)obj2).running;
			if (num || flag)
			{
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemStop);
			}
			if (num)
			{
				this.StopSubsystem<XRInputSubsystem>();
			}
			if (flag)
			{
				this.StopSubsystem<XRDisplaySubsystem>();
			}
			StopInternal();
			currentLoaderState = LoaderState.Stopped;
			return true;
		}

		private void StopInternal()
		{
			Internal_EndSession();
			ProcessOpenXRMessageLoop();
		}

		public override bool Deinitialize()
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			if (currentLoaderState == LoaderState.Uninitialized)
			{
				return true;
			}
			if (!validLoaderDeinitStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.DeinitializeAttempted;
			try
			{
				Internal_RequestExitSession();
				Application.onBeforeRender -= new UnityAction(ProcessOpenXRMessageLoop);
				ProcessOpenXRMessageLoop();
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemDestroy);
				this.DestroySubsystem<XRInputSubsystem>();
				this.DestroySubsystem<XRDisplaySubsystem>();
				DiagnosticReport.DumpReport("System Shutdown");
				Internal_DestroySession();
				ProcessOpenXRMessageLoop();
				Internal_UnloadOpenXRLibrary();
				currentLoaderState = LoaderState.Uninitialized;
				actionSetsAttached = false;
				if (unhandledExceptionHandler != null)
				{
					AppDomain.CurrentDomain.UnhandledException -= unhandledExceptionHandler;
					unhandledExceptionHandler = null;
				}
				return ((XRLoaderHelper)this).Deinitialize();
			}
			finally
			{
				Instance = null;
			}
		}

		internal void CreateSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : ISubsystemDescriptor where TSubsystem : ISubsystem
		{
			((XRLoaderHelper)this).CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
		}

		internal void StartSubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).StartSubsystem<T>();
		}

		internal void StopSubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).StopSubsystem<T>();
		}

		internal void DestroySubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).DestroySubsystem<T>();
		}

		private void SetApplicationInfo()
		{
			byte[] array = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(Application.version));
			if (BitConverter.IsLittleEndian)
			{
				Array.Reverse(array);
			}
			uint applicationVersionHash = BitConverter.ToUInt32(array, 0);
			Internal_SetApplicationInfo(Application.productName, Application.version, applicationVersionHash, Application.unityVersion);
		}

		internal static byte[] StringToWCHAR_T(string s)
		{
			return ((Environment.OSVersion.Platform == PlatformID.Unix) ? Encoding.UTF32 : Encoding.Unicode).GetBytes(s + "\0");
		}

		private bool LoadOpenXRSymbols()
		{
			if (!Internal_LoadOpenXRLibrary(StringToWCHAR_T("openxr_loader")))
			{
				return false;
			}
			return true;
		}

		private void RequestOpenXRFeatures()
		{
			OpenXRSettings instance = OpenXRSettings.Instance;
			if ((Object)(object)instance == (Object)null || instance.features == null)
			{
				return;
			}
			StringBuilder stringBuilder = new StringBuilder("");
			StringBuilder stringBuilder2 = new StringBuilder("");
			uint num = 0u;
			uint num2 = 0u;
			OpenXRFeature[] features = instance.features;
			foreach (OpenXRFeature openXRFeature in features)
			{
				if ((Object)(object)openXRFeature == (Object)null || !openXRFeature.enabled)
				{
					continue;
				}
				num++;
				stringBuilder.Append("  " + openXRFeature.nameUi + ": Version=" + openXRFeature.version + ", Company=\"" + openXRFeature.company + "\"");
				if (!string.IsNullOrEmpty(openXRFeature.openxrExtensionStrings))
				{
					stringBuilder.Append(", Extensions=\"" + openXRFeature.openxrExtensionStrings + "\"");
					string[] array = openXRFeature.openxrExtensionStrings.Split(' ');
					foreach (string text in array)
					{
						if (!string.IsNullOrWhiteSpace(text) && !Internal_RequestEnableExtensionString(text))
						{
							num2++;
							stringBuilder2.Append("  " + text + ": Feature=\"" + openXRFeature.nameUi + "\": Version=" + openXRFeature.version + ", Company=\"" + openXRFeature.company + "\"\n");
						}
					}
				}
				stringBuilder.Append("\n");
			}
			ulong section = DiagnosticReport.GetSection("OpenXR Runtime Info");
			DiagnosticReport.AddSectionBreak(section);
			DiagnosticReport.AddSectionEntry(section, "Features requested to be enabled", $"({num})\n{stringBuilder.ToString()}");
			DiagnosticReport.AddSectionBreak(section);
			DiagnosticReport.AddSectionEntry(section, "Requested feature extensions not supported by runtime", $"({num2})\n{stringBuilder2.ToString()}");
		}

		private static void DebugLogEnabledSpecExtensions()
		{
			ulong section = DiagnosticReport.GetSection("OpenXR Runtime Info");
			DiagnosticReport.AddSectionBreak(section);
			string[] enabledExtensions = OpenXRRuntime.GetEnabledExtensions();
			StringBuilder stringBuilder = new StringBuilder($"({enabledExtensions.Length})\n");
			string[] array = enabledExtensions;
			foreach (string text in array)
			{
				stringBuilder.Append($"  {text}: Version={OpenXRRuntime.GetExtensionVersion(text)}\n");
			}
			DiagnosticReport.AddSectionEntry(section, "Runtime extensions enabled", stringBuilder.ToString());
		}

		[MonoPInvokeCallback(typeof(ReceiveNativeEventDelegate))]
		private static void ReceiveNativeEvent(OpenXRFeature.NativeEvent e, ulong payload)
		{
			OpenXRLoaderBase instance = Instance;
			if ((Object)(object)instance != (Object)null)
			{
				instance.currentOpenXRState = e;
			}
			switch (e)
			{
			case OpenXRFeature.NativeEvent.XrRestartRequested:
				OpenXRRestarter.Instance.ShutdownAndRestart();
				break;
			case OpenXRFeature.NativeEvent.XrReady:
				instance.StartInternal();
				break;
			case OpenXRFeature.NativeEvent.XrFocused:
				DiagnosticReport.DumpReport("System Startup Completed");
				break;
			case OpenXRFeature.NativeEvent.XrRequestRestartLoop:
				Debug.Log((object)"XR Initialization failed, will try to restart xr periodically.");
				OpenXRRestarter.Instance.PauseAndShutdownAndRestart();
				break;
			case OpenXRFeature.NativeEvent.XrRequestGetSystemLoop:
				OpenXRRestarter.Instance.PauseAndRetryInitialization();
				break;
			case OpenXRFeature.NativeEvent.XrStopping:
				instance.StopInternal();
				break;
			}
			OpenXRFeature.ReceiveNativeEvent(e, payload);
			if ((!((Object)(object)instance == (Object)null) && instance.isStarted) || e == OpenXRFeature.NativeEvent.XrInstanceChanged)
			{
				switch (e)
				{
				case OpenXRFeature.NativeEvent.XrExiting:
					OpenXRRestarter.Instance.Shutdown();
					break;
				case OpenXRFeature.NativeEvent.XrLossPending:
					OpenXRRestarter.Instance.ShutdownAndRestart();
					break;
				case OpenXRFeature.NativeEvent.XrInstanceLossPending:
					OpenXRRestarter.Instance.Shutdown();
					break;
				}
			}
		}

		internal static void RegisterOpenXRCallbacks()
		{
			Internal_SetCallbacks(ReceiveNativeEvent);
		}

		[DllImport("UnityOpenXR", EntryPoint = "main_LoadOpenXRLibrary")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_LoadOpenXRLibrary(byte[] loaderPath);

		[DllImport("UnityOpenXR", EntryPoint = "main_UnloadOpenXRLibrary")]
		internal static extern void Internal_UnloadOpenXRLibrary();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetCallbacks")]
		private static extern void Internal_SetCallbacks(ReceiveNativeEventDelegate callback);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "NativeConfig_SetApplicationInfo")]
		private static extern void Internal_SetApplicationInfo(string applicationName, string applicationVersion, uint applicationVersionHash, string engineVersion);

		[DllImport("UnityOpenXR", EntryPoint = "session_RequestExitSession")]
		internal static extern void Internal_RequestExitSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_InitializeSession")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_InitializeSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_CreateSessionIfNeeded")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_CreateSessionIfNeeded();

		[DllImport("UnityOpenXR", EntryPoint = "session_BeginSession")]
		internal static extern void Internal_BeginSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_EndSession")]
		internal static extern void Internal_EndSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_DestroySession")]
		internal static extern void Internal_DestroySession();

		[DllImport("UnityOpenXR", EntryPoint = "messagepump_PumpMessageLoop")]
		private static extern void Internal_PumpMessageLoop();

		[DllImport("UnityOpenXR", EntryPoint = "session_SetSuccessfullyInitialized")]
		internal static extern void Internal_SetSuccessfullyInitialized(bool value);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_RequestEnableExtensionString")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_RequestEnableExtensionString(string extensionString);
	}
	public class OpenXRLoaderNoPreInit : OpenXRLoaderBase
	{
	}
	internal class OpenXRRestarter : MonoBehaviour
	{
		internal Action onAfterRestart;

		internal Action onAfterShutdown;

		internal Action onQuit;

		internal Action onAfterCoroutine;

		internal Action onAfterSuccessfulRestart;

		private static OpenXRRestarter s_Instance;

		private Coroutine m_Coroutine;

		private static int m_pauseAndRestartAttempts;

		public bool isRunning => m_Coroutine != null;

		public static float TimeBetweenRestartAttempts { get; set; }

		public static int PauseAndRestartAttempts => m_pauseAndRestartAttempts;

		public static OpenXRRestarter Instance
		{
			get
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Expected O, but got Unknown
				if ((Object)(object)s_Instance == (Object)null)
				{
					GameObject val = GameObject.Find("~oxrestarter");
					if ((Object)(object)val == (Object)null)
					{
						val = new GameObject("~oxrestarter");
						((Object)val).hideFlags = (HideFlags)61;
						val.AddComponent<OpenXRRestarter>();
					}
					s_Instance = val.GetComponent<OpenXRRestarter>();
				}
				return s_Instance;
			}
		}

		static OpenXRRestarter()
		{
			TimeBetweenRestartAttempts = 5f;
		}

		public void ResetCallbacks()
		{
			onAfterRestart = null;
			onAfterSuccessfulRestart = null;
			onAfterShutdown = null;
			onAfterCoroutine = null;
			onQuit = null;
			m_pauseAndRestartAttempts = 0;
		}

		public void Shutdown()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				if (m_Coroutine != null)
				{
					Debug.LogError((object)"Only one shutdown or restart can be executed at a time");
				}
				else
				{
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: false, shouldShutdown: true));
				}
			}
		}

		public void ShutdownAndRestart()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				if (m_Coroutine != null)
				{
					Debug.LogError((object)"Only one shutdown or restart can be executed at a time");
				}
				else
				{
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: true));
				}
			}
		}

		public void PauseAndShutdownAndRestart()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				((MonoBehaviour)this).StartCoroutine(PauseAndShutdownAndRestartCoroutine(TimeBetweenRestartAttempts));
			}
		}

		public void PauseAndRetryInitialization()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				((MonoBehaviour)this).StartCoroutine(PauseAndRetryInitializationCoroutine(TimeBetweenRestartAttempts));
			}
		}

		public IEnumerator PauseAndShutdownAndRestartCoroutine(float pauseTimeInSeconds)
		{
			try
			{
				yield return (object)new WaitForSeconds(pauseTimeInSeconds);
				yield return new WaitForRestartFinish();
				m_pauseAndRestartAttempts++;
				m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: true));
			}
			finally
			{
				onAfterCoroutine?.Invoke();
			}
		}

		public IEnumerator PauseAndRetryInitializationCoroutine(float pauseTimeInSeconds)
		{
			try
			{
				yield return (object)new WaitForSeconds(pauseTimeInSeconds);
				yield return new WaitForRestartFinish();
				if (!((Object)(object)XRGeneralSettings.Instance.Manager.activeLoader != (Object)null))
				{
					m_pauseAndRestartAttempts++;
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: false));
				}
			}
			finally
			{
				onAfterCoroutine?.Invoke();
			}
		}

		private IEnumerator RestartCoroutine(bool shouldRestart, bool shouldShutdown)
		{
			try
			{
				if (shouldShutdown)
				{
					Debug.Log((object)"Shutting down OpenXR.");
					yield return null;
					XRGeneralSettings.Instance.Manager.DeinitializeLoader();
					yield return null;
					onAfterShutdown?.Invoke();
				}
				if (shouldRestart && OpenXRRuntime.ShouldRestart())
				{
					Debug.Log((object)"Initializing OpenXR.");
					yield return XRGeneralSettings.Instance.Manager.InitializeLoader();
					XRGeneralSettings.Instance.Manager.StartSubsystems();
					if ((Object)(object)XRGeneralSettings.Instance.Manager.activeLoader != (Object)null)
					{
						m_pauseAndRestartAttempts = 0;
						onAfterSuccessfulRestart?.Invoke();
					}
					onAfterRestart?.Invoke();
				}
				else if (OpenXRRuntime.ShouldQuit())
				{
					onQuit?.Invoke();
					Application.Quit();
				}
			}
			finally
			{
				OpenXRRestarter openXRRestarter = this;
				openXRRestarter.m_Coroutine = null;
				openXRRestarter.onAfterCoroutine?.Invoke();
			}
		}
	}
	public static class OpenXRRuntime
	{
		private const string LibraryName = "UnityOpenXR";

		public static string name
		{
			get
			{
				if (!Internal_GetRuntimeName(out var runtimeNamePtr))
				{
					return "";
				}
				return Marshal.PtrToStringAnsi(runtimeNamePtr);
			}
		}

		public static string version
		{
			get
			{
				if (!Internal_GetRuntimeVersion(out var major, out var minor, out var patch))
				{
					return "";
				}
				return $"{major}.{minor}.{patch}";
			}
		}

		public static string apiVersion
		{
			get
			{
				if (!Internal_GetAPIVersion(out var major, out var minor, out var patch))
				{
					return "";
				}
				return $"{major}.{minor}.{patch}";
			}
		}

		public static string pluginVersion
		{
			get
			{
				if (!Internal_GetPluginVersion(out var pluginVersionPtr))
				{
					return "";
				}
				return Marshal.PtrToStringAnsi(pluginVersionPtr);
			}
		}

		public static bool retryInitializationOnFormFactorErrors
		{
			get
			{
				return Internal_GetSoftRestartLoopAtInitialization();
			}
			set
			{
				Internal_SetSoftRestartLoopAtInitialization(value);
			}
		}

		public static event Func<bool> wantsToQuit;

		public static event Func<bool> wantsToRestart;

		public static bool IsExtensionEnabled(string extensionName)
		{
			return Internal_IsExtensionEnabled(extensionName);
		}

		public static uint GetExtensionVersion(string extensionName)
		{
			return Internal_GetExtensionVersion(extensionName);
		}

		public static string[] GetEnabledExtensions()
		{
			string[] array = new string[Internal_GetEnabledExtensionCount()];
			for (int i = 0; i < array.Length; i++)
			{
				Internal_GetEnabledExtensionName((uint)i, out var extensionName);
				array[i] = extensionName ?? "";
			}
			return array;
		}

		public static string[] GetAvailableExtensions()
		{
			string[] array = new string[Internal_GetAvailableExtensionCount()];
			for (int i = 0; i < array.Length; i++)
			{
				Internal_GetAvailableExtensionName((uint)i, out var extensionName);
				array[i] = extensionName ?? "";
			}
			return array;
		}

		private static bool InvokeEvent(Func<bool> func)
		{
			if (func == null)
			{
				return true;
			}
			Delegate[] invocationList = func.GetInvocationList();
			for (int i = 0; i < invocationList.Length; i++)
			{
				Func<bool> func2 = (Func<bool>)invocationList[i];
				try
				{
					if (!func2())
					{
						return false;
					}
				}
				catch (Exception ex)
				{
					Debug.LogException(ex);
				}
			}
			return true;
		}

		internal static bool ShouldQuit()
		{
			return InvokeEvent(OpenXRRuntime.wantsToQuit);
		}

		internal static bool ShouldRestart()
		{
			return InvokeEvent(OpenXRRuntime.wantsToRestart);
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeName")]
		private static extern bool Internal_GetRuntimeName(out IntPtr runtimeNamePtr);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeVersion")]
		private static extern bool Internal_GetRuntimeVersion(out ushort major, out ushort minor, out uint patch);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetAPIVersion")]
		private static extern bool Internal_GetAPIVersion(out ushort major, out ushort minor, out uint patch);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetPluginVersion")]
		private static extern bool Internal_GetPluginVersion(out IntPtr pluginVersionPtr);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_IsExtensionEnabled")]
		private static extern bool Internal_IsExtensionEnabled(string extensionName);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetExtensionVersion")]
		private static extern uint Internal_GetExtensionVersion(string extensionName);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetEnabledExtensionCount")]
		private static extern uint Internal_GetEnabledExtensionCount();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_GetEnabledExtensionName")]
		private static extern bool Internal_GetEnabledExtensionNamePtr(uint index, out IntPtr outName);

		[DllImport("UnityOpenXR", EntryPoint = "session_SetSoftRestartLoopAtInitialization")]
		private static extern void Internal_SetSoftRestartLoopAtInitialization(bool value);

		[DllImport("UnityOpenXR", EntryPoint = "session_GetSoftRestartLoopAtInitialization")]
		private static extern bool Internal_GetSoftRestartLoopAtInitialization();

		private static bool Internal_GetEnabledExtensionName(uint index, out string extensionName)
		{
			if (!Internal_GetEnabledExtensionNamePtr(index, out var outName))
			{
				extensionName = "";
				return false;
			}
			extensionName = Marshal.PtrToStringAnsi(outName);
			return true;
		}

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetAvailableExtensionCount")]
		private static extern uint Internal_GetAvailableExtensionCount();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_GetAvailableExtensionName")]
		private static extern bool Internal_GetAvailableExtensionNamePtr(uint index, out IntPtr extensionName);

		private static bool Internal_GetAvailableExtensionName(uint index, out string extensionName)
		{
			if (!Internal_GetAvailableExtensionNamePtr(index, out var extensionName2))
			{
				extensionName = "";
				return false;
			}
			extensionName = Marshal.PtrToStringAnsi(extensionName2);
			return true;
		}

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "session_GetLastError")]
		private static extern bool Internal_GetLastError(out IntPtr error);

		internal static bool GetLastError(out string error)
		{
			if (!Internal_GetLastError(out var error2))
			{
				error = "";
				return false;
			}
			error = Marshal.PtrToStringAnsi(error2);
			return true;
		}

		internal static void LogLastError()
		{
			if (GetLastError(out var error))
			{
				Debug.LogError((object)error);
			}
		}
	}
	internal sealed class WaitForRestartFinish : CustomYieldInstruction
	{
		private float m_Timeout;

		public override bool keepWaiting
		{
			get
			{
				if (!OpenXRRestarter.Instance.isRunning)
				{
					return false;
				}
				if (Time.realtimeSinceStartup > m_Timeout)
				{
					Debug.LogError((object)"WaitForRestartFinish: Timeout");
					return false;
				}
				return true;
			}
		}

		public WaitForRestartFinish(float timeout = 5f)
		{
			m_Timeout = Time.realtimeSinceStartup + timeout;
		}
	}
}
namespace UnityEngine.XR.OpenXR.NativeTypes
{
	public enum XrEnvironmentBlendMode
	{
		Opaque = 1,
		Additive,
		AlphaBlend
	}
	internal enum XrResult
	{
		Success = 0,
		TimeoutExpored = 1,
		LossPending = 3,
		EventUnavailable = 4,
		SpaceBoundsUnavailable = 7,
		SessionNotFocused = 8,
		FrameDiscarded = 9,
		ValidationFailure = -1,
		RuntimeFailure = -2,
		OutOfMemory = -3,
		ApiVersionUnsupported = -4,
		InitializationFailed = -6,
		FunctionUnsupported = -7,
		FeatureUnsupported = -8,
		ExtensionNotPresent = -9,
		LimitReached = -10,
		SizeInsufficient = -11,
		HandleInvalid = -12,
		InstanceLOst = -13,
		SessionRunning = -14,
		SessionNotRunning = -16,
		SessionLost = -17,
		SystemInvalid = -18,
		PathInvalid = -19,
		PathCountExceeded = -20,
		PathFormatInvalid = -21,
		PathUnsupported = -22,
		LayerInvalid = -23,
		LayerLimitExceeded = -24,
		SpwachainRectInvalid = -25,
		SwapchainFormatUnsupported = -26,
		ActionTypeMismatch = -27,
		SessionNotReady = -28,
		SessionNotStopping = -29,
		TimeInvalid = -30,
		ReferenceSpaceUnsupported = -31,
		FileAccessError = -32,
		FileContentsInvalid = -33,
		FormFactorUnsupported = -34,
		FormFactorUnavailable = -35,
		ApiLayerNotPresent = -36,
		CallOrderInvalid = -37,
		GraphicsDeviceInvalid = -38,
		PoseInvalid = -39,
		IndexOutOfRange = -40,
		ViewConfigurationTypeUnsupported = -41,
		EnvironmentBlendModeUnsupported = -42,
		NameDuplicated = -44,
		NameInvalid = -45,
		ActionsetNotAttached = -46,
		ActionsetsAlreadyAttached = -47,
		LocalizedNameDuplicated = -48,
		LocalizedNameInvalid = -49,
		AndroidThreadSettingsIdInvalidKHR = -1000003000,
		AndroidThreadSettingsdFailureKHR = -1000003001,
		CreateSpatialAnchorFailedMSFT = -1000039001,
		SecondaryViewConfigurationTypeNotEnabledMSFT = -1000053000,
		MaxResult = int.MaxValue
	}
	internal enum XrViewConfigurationType
	{
		PrimaryMono = 1,
		PrimaryStereo = 2,
		PrimaryQuadVarjo = 1000037000,
		SecondaryMonoFirstPersonObserver = 1000054000,
		SecondaryMonoThirdPersonObserver = 1000145000
	}
	[Flags]
	internal enum XrSpaceLocationFlags
	{
		None = 0,
		OrientationValid = 1,
		PositionValid = 2,
		OrientationTracked = 4,
		PositionTracked = 8
	}
	[Flags]
	internal enum XrViewStateFlags
	{
		None = 0,
		OrientationValid = 1,
		PositionValid = 2,
		OrientationTracked = 4,
		PositionTracked = 8
	}
	[Flags]
	internal enum XrReferenceSpaceType
	{
		View = 1,
		Local = 2,
		Stage = 3,
		UnboundedMsft = 0x3B9B5E70,
		CombinedEyeVarjo = 0x3B9CA2A8
	}
	internal enum XrSessionState
	{
		Unknown,
		Idle,
		Ready,
		Synchronized,
		Visible,
		Focused,
		Stopping,
		LossPending,
		Exiting
	}
	internal struct XrVector2f
	{
		private float x;

		private float y;

		public XrVector2f(float x, float y)
		{
			this.x = x;
			this.y = y;
		}

		public XrVector2f(Vector2 value)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			x = value.x;
			y = value.y;
		}
	}
	internal struct XrVector3f
	{
		private float x;

		private float y;

		private float z;

		public XrVector3f(float x, float y, float z)
		{
			this.x = x;
			this.y = y;
			this.z = 0f - z;
		}

		public XrVector3f(Vector3 value)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			x = value.x;
			y = value.y;
			z = 0f - value.z;
		}
	}
	internal struct XrQuaternionf
	{
		private float x;

		private float y;

		private float z;

		private float w;

		public XrQuaternionf(float x, float y, float z, float w)
		{
			this.x = 0f - x;
			this.y = 0f - y;
			this.z = z;
			this.w = w;
		}

		public XrQuaternionf(Quaternion quaternion)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			x = 0f - quaternion.x;
			y = 0f - quaternion.y;
			z = quaternion.z;
			w = quaternion.w;
		}
	}
	internal struct XrPosef
	{
		private XrQuaternionf orientation;

		private XrVector3f position;

		public XrPosef(Vector3 vec3, Quaternion quaternion)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			position = new XrVector3f(vec3);
			orientation = new XrQuaternionf(quaternion);
		}
	}
}
namespace UnityEngine.XR.OpenXR.Input
{
	[StructLayout(LayoutKind.Sequential, Size = 1)]
	public struct Haptic
	{
	}
	[Preserve]
	public class HapticControl : InputControl<Haptic>
	{
		public HapticControl()
		{
			((InputStateBlock)(ref ((InputControl)this).m_StateBlock)).sizeInBits = 1u;
			((InputStateBlock)(ref ((InputControl)this).m_StateBlock)).bitOffset = 0u;
			((InputStateBlock)(ref ((InputControl)this).m_StateBlock)).byteOffset = 0u;
		}

		public unsafe override Haptic ReadUnprocessedValueFromState(void* statePtr)
		{
			return default(Haptic);
		}
	}
	[Preserve]
	[InputControlLayout(displayName = "OpenXR Action Map")]
	public abstract class OpenXRDevice : InputDevice
	{
		protected override void FinishSetup()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			((InputControl)this).FinishSetup();
			InputDeviceDescription description = ((InputDevice)this).description;
			XRDeviceDescriptor val = XRDeviceDescriptor.FromJson(((InputDeviceDescription)(ref description)).capabilities);
			if (val != null)
			{
				if ((val.characteristics & 0x100) != 0)
				{
					InputSystem.SetDeviceUsage((InputDevice)(object)this, CommonUsages.LeftHand);
				}
				else if ((val.characteristics & 0x200) != 0)
				{
					InputSystem.SetDeviceUsage((InputDevice)(object)this, CommonUsages.RightHand);
				}
			}
		}
	}
	[Preserve]
	[InputControlLayout(displayName = "OpenXR HMD")]
	internal class OpenXRHmd : XRHMD
	{
		[Preserve]
		[InputControl]
		private ButtonControl userPresence { get; set; }

		protected override void FinishSetup()
		{
			((XRHMD)this).FinishSetup();
			userPresence = ((InputControl)this).GetChildControl<ButtonControl>("UserPresence");
		}
	}
	public static class OpenXRInput
	{
		[StructLayout(LayoutKind.Explicit)]
		private struct SerializedGuid
		{
			[FieldOffset(0)]
			public Guid guid;

			[FieldOffset(0)]
			public ulong ulong1;

			[FieldOffset(8)]
			public ulong ulong2;
		}

		internal struct SerializedBinding
		{
			public ulong actionId;

			public string path;
		}

		[Flags]
		public enum InputSourceNameFlags
		{
			UserPath = 1,
			InteractionProfile = 2,
			Component = 4,
			All = 7
		}

		[StructLayout(LayoutKind.Explicit, Size = 12)]
		private struct GetInternalDeviceIdCommand : IInputDeviceCommandInfo
		{
			private const int k_BaseCommandSizeSize = 8;

			private const int k_Size = 12;

			[FieldOffset(0)]
			private InputDeviceCommand baseCommand;

			[FieldOffset(8)]
			public readonly uint deviceId;

			private static FourCC Type => new FourCC('X', 'R', 'D', 'I');

			public FourCC typeStatic => Type;

			public static GetInternalDeviceIdCommand Create()
			{
				//IL_000a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				GetInternalDeviceIdCommand result = default(GetInternalDeviceIdCommand);
				result.baseCommand = new InputDeviceCommand(Type, 12);
				return result;
			}
		}

		private static readonly Dictionary<string, OpenXRInteractionFeature.ActionType> ExpectedControlTypeToActionType = new Dictionary<string, OpenXRInteractionFeature.ActionType>
		{
			["Digital"] = OpenXRInteractionFeature.ActionType.Binary,
			["Button"] = OpenXRInteractionFeature.ActionType.Binary,
			["Axis"] = OpenXRInteractionFeature.ActionType.Axis1D,
			["Integer"] = OpenXRInteractionFeature.ActionType.Axis1D,
			["Analog"] = OpenXRInteractionFeature.ActionType.Axis1D,
			["Vector2"] = OpenXRInteractionFeature.ActionType.Axis2D,
			["Dpad"] = OpenXRInteractionFeature.ActionType.Axis2D,
			["Stick"] = OpenXRInteractionFeature.ActionType.Axis2D,
			["Pose"] = OpenXRInteractionFeature.ActionType.Pose,
			["Vector3"] = OpenXRInteractionFeature.ActionType.Pose,
			["Quaternion"] = OpenXRInteractionFeature.ActionType.Pose,
			["Haptic"] = OpenXRInteractionFeature.ActionType.Vibrate
		};

		private const string s_devicePoseActionName = "devicepose";

		private const string s_pointerActionName = "pointer";

		private static readonly Dictionary<string, string> kVirtualControlMap = new Dictionary<string, string>
		{
			["deviceposition"] = "devicepose",
			["devicerotation"] = "devicepose",
			["trackingstate"] = "devicepose",
			["istracked"] = "devicepose",
			["pointerposition"] = "pointer",
			["pointerrotation"] = "pointer"
		};

		private const string Library = "UnityOpenXR";

		internal static void RegisterLayouts()
		{
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			InputSystem.RegisterLayout<HapticControl>("Haptic", (InputDeviceMatcher?)null);
			InputSystem.RegisterLayout<OpenXRDevice>((string)null, (InputDeviceMatcher?)null);
			InputDeviceMatcher val = default(InputDeviceMatcher);
			val = ((InputDeviceMatcher)(ref val)).WithInterface("^(XRInput)", true);
			val = ((InputDeviceMatcher)(ref val)).WithProduct("Head Tracking - OpenXR", true);
			InputSystem.RegisterLayout<OpenXRHmd>((string)null, (InputDeviceMatcher?)((InputDeviceMatcher)(ref val)).WithManufacturer("OpenXR", true));
			OpenXRInteractionFeature.RegisterLayouts();
		}

		private static bool ValidateActionMapConfig(OpenXRInteractionFeature interactionFeature, OpenXRInteractionFeature.ActionMapConfig actionMapConfig)
		{
			bool result = true;
			if (actionMapConfig.deviceInfos == null || actionMapConfig.deviceInfos.Count == 0)
			{
				Debug.LogError((object)$"ActionMapConfig contains no `deviceInfos` in InteractionFeature '{((object)interactionFeature).GetType()}'");
				result = false;
			}
			if (actionMapConfig.actions == null || actionMapConfig.actions.Count == 0)
			{
				Debug.LogError((object)$"ActionMapConfig contains no `actions` in InteractionFeature '{((object)interactionFeature).GetType()}'");
				result = false;
			}
			return result;
		}

		internal static void AttachActionSets()
		{
			List<OpenXRInteractionFeature.ActionMapConfig> list = new List<OpenXRInteractionFeature.ActionMapConfig>();
			List<OpenXRInteractionFeature.ActionMapConfig> list2 = new List<OpenXRInteractionFeature.ActionMapConfig>();
			foreach (OpenXRInteractionFeature item in from f in OpenXRSettings.Instance.features.OfType<OpenXRInteractionFeature>()
				where f.enabled && !f.IsAdditive
				select f)
			{
				int count = list.Count;
				item.CreateActionMaps(list);
				for (int num = list.Count - 1; num >= count; num--)
				{
					if (!ValidateActionMapConfig(item, list[num]))
					{
						list.RemoveAt(num);
					}
				}
			}
			if (!RegisterDevices(list, isAdditive: false))
			{
				return;
			}
			foreach (OpenXRInteractionFeature item2 in from f in OpenXRSettings.Instance.features.OfType<OpenXRInteractionFeature>()
				where f.enabled && f.IsAdditive
				select f)
			{
				item2.CreateActionMaps(list2);
				item2.AddAdditiveActions(list, list2[list2.Count - 1]);
			}
			Dictionary<string, List<SerializedBinding>> dictionary = new Dictionary<string, List<SerializedBinding>>();
			if (!CreateActions(list, dictionary))
			{
				return;
			}
			if (list2.Count > 0)
			{
				RegisterDevices(list2, isAdditive: true);
				CreateActions(list2, dictionary);
			}
			SetDpadBindingCustomValues();
			foreach (KeyValuePair<string, List<SerializedBinding>> item3 in dictionary)
			{
				if (!Internal_SuggestBindings(item3.Key, item3.Value.ToArray(), (uint)item3.Value.Count))
				{
					OpenXRRuntime.LogLastError();
				}
			}
			if (!Internal_AttachActionSets())
			{
				OpenXRRuntime.LogLastError();
			}
		}

		private static bool RegisterDevices(List<OpenXRInteractionFeature.ActionMapConfig> actionMaps, bool isAdditive)
		{
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected I4, but got Unknown
			foreach (OpenXRInteractionFeature.ActionMapConfig actionMap in actionMaps)
			{
				foreach (OpenXRInteractionFeature.DeviceConfig deviceInfo in actionMap.deviceInfos)
				{
					string name = ((actionMap.desiredInteractionProfile == null) ? UserPathToDeviceName(deviceInfo.userPath) : actionMap.localizedName);
					if (Internal_RegisterDeviceDefinition(deviceInfo.userPath, actionMap.desiredInteractionProfile, isAdditive, (uint)(int)deviceInfo.characteristics, name, actionMap.manufacturer, actionMap.serialNumber) == 0L)
					{
						OpenXRRuntime.LogLastError();
						return false;
					}
				}
			}
			return true;
		}

		private static bool CreateActions(List<OpenXRInteractionFeature.ActionMapConfig> actionMaps, Dictionary<string, List<SerializedBinding>> interactionProfiles)
		{
			foreach (OpenXRInteractionFeature.ActionMapConfig actionMap in actionMaps)
			{
				string localizedName = SanitizeStringForOpenXRPath(actionMap.localizedName);
				ulong num = Internal_CreateActionSet(SanitizeStringForOpenXRPath(actionMap.name), localizedName, default(SerializedGuid));
				if (num == 0L)
				{
					OpenXRRuntime.LogLastError();
					return false;
				}
				List<string> list = actionMap.deviceInfos.Select((OpenXRInteractionFeature.DeviceConfig d) => d.userPath).ToList();
				foreach (OpenXRInteractionFeature.ActionConfig action in actionMap.actions)
				{
					string[] array = action.bindings.Where((OpenXRInteractionFeature.ActionBinding b) => b.userPaths != null).SelectMany((OpenXRInteractionFeature.ActionBinding b) => b.userPaths).Distinct()
						.ToList()
						.Union(list)
						.ToArray();
					ulong num2 = Internal_CreateAction(num, SanitizeStringForOpenXRPath(action.name), action.localizedName, (uint)action.type, default(SerializedGuid), array, (uint)array.Length, action.isAdditive, action.usages?.ToArray(), (uint)(action.usages?.Count ?? 0));
					if (num2 == 0L)
					{
						OpenXRRuntime.LogLastError();
						return false;
					}
					foreach (OpenXRInteractionFeature.ActionBinding binding in action.bindings)
					{
						foreach (string item in binding.userPaths ?? list)
						{
							string key = (action.isAdditive ? actionMap.desiredInteractionProfile : (binding.interactionProfileName ?? actionMap.desiredInteractionProfile));
							if (!interactionProfiles.TryGetValue(key, out var value))
							{
								value = (interactionProfiles[key] = new List<SerializedBinding>());
							}
							value.Add(new SerializedBinding
							{
								actionId = num2,
								path = item + binding.interactionPath
							});
						}
					}
				}
			}
			return true;
		}

		private static void SetDpadBindingCustomValues()
		{
			DPadInteraction feature = OpenXRSettings.Instance.GetFeature<DPadInteraction>();
			if ((Object)(object)feature != (Object)null && feature.enabled)
			{
				Internal_SetDpadBindingCustomValues(isLeft: true, feature.forceThresholdLeft, feature.forceThresholdReleaseLeft, feature.centerRegionLeft, feature.wedgeAngleLeft, feature.isStickyLeft);
				Internal_SetDpadBindingCustomValues(isLeft: false, feature.forceThresholdRight, feature.forceThresholdReleaseRight, feature.centerRegionRight, feature.wedgeAngleRight, feature.isStickyRight);
			}
		}

		private static char SanitizeCharForOpenXRPath(char c)
		{
			if (char.IsLower(c) || char.IsDigit(c))
			{
				return c;
			}
			if (char.IsUpper(c))
			{
				return char.ToLower(c);
			}
			if (c == '-' || c == '.' || c == '_' || c == '/')
			{
				return c;
			}
			return '\0';
		}

		private static string SanitizeStringForOpenXRPath(string input)
		{
			if (string.IsNullOrEmpty(input))
			{
				return "";
			}
			int i;
			for (i = 0; i < input.Length && SanitizeCharForOpenXRPath(input[i]) == input[i]; i++)
			{
			}
			if (i == input.Length)
			{
				return input;
			}
			StringBuilder stringBuilder = new StringBuilder(input, 0, i, input.Length);
			for (; i < input.Length; i++)
			{
				char c = SanitizeCharForOpenXRPath(input[i]);
				if (c != 0)
				{
					stringBuilder.Append(c);
				}
			}
			return stringBuilder.ToString();
		}

		private static string GetActionHandleName(InputControl control)
		{
			InputControl val = control;
			while (val.parent != null && val.parent.parent != null)
			{
				val = val.parent;
			}
			string text = SanitizeStringForOpenXRPath(val.name);
			if (kVirtualControlMap.TryGetValue(text, out var value))
			{
				return value;
			}
			return text;
		}

		public static void SendHapticImpulse(InputActionReference actionRef, float amplitude, float duration, InputDevice inputDevice = null)
		{
			SendHapticImpulse(actionRef, amplitude, 0f, duration, inputDevice);
		}

		public static void SendHapticImpulse(InputActionReference actionRef, float amplitude, float frequency, float duration, InputDevice inputDevice = null)
		{
			SendHapticImpulse(actionRef.action, amplitude, frequency, duration, inputDevice);
		}

		public static void SendHapticImpulse(InputAction action, float amplitude, float duration, InputDevice inputDevice = null)
		{
			SendHapticImpulse(action, amplitude, 0f, duration, inputDevice);
		}

		public static void SendHapticImpulse(InputAction action, float amplitude, float frequency, float duration, InputDevice inputDevice = null)
		{
			if (action != null)
			{
				ulong actionHandle = GetActionHandle(action, inputDevice);
				if (actionHandle != 0L)
				{
					amplitude = Mathf.Clamp(amplitude, 0f, 1f);
					duration = Mathf.Max(duration, 0f);
					Internal_SendHapticImpulse(GetDeviceId(inputDevice), actionHandle, amplitude, frequency, duration);
				}
			}
		}

		public static void StopHaptics(InputActionReference actionRef, InputDevice inputDevice = null)
		{
			if (!((Object)(object)actionRef == (Object)null))
			{
				StopHaptics(actionRef.action, inputDevice);
			}
		}

		public static void StopHaptics(InputAction inputAction, InputDevice inputDevice = null)
		{
			if (inputAction != null)
			{
				ulong actionHandle = GetActionHandle(inputAction, inputDevice);
				if (actionHandle != 0L)
				{
					Internal_StopHaptics(GetDeviceId(inputDevice), actionHandle);
				}
			}
		}

		public static bool TryGetInputSourceName(InputAction inputAction, int index, out string name, InputSourceNameFlags flags = InputSourceNameFlags.All, InputDevice inputDevice = null)
		{
			name = "";
			if (index < 0)
			{
				return false;
			}
			ulong actionHandle = GetActionHandle(inputAction, inputDevice);
			if (actionHandle == 0L)
			{
				return false;
			}
			return Internal_TryGetInputSourceName(GetDeviceId(inputDevice), actionHandle, (uint)index, (uint)flags, out name);
		}

		public static bool GetActionIsActive(InputAction inputAction)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			if (inputAction != null && inputAction.controls.Count > 0 && inputAction.controls[0].device != null)
			{
				for (int i = 0; i < inputAction.controls.Count; i++)
				{
					uint deviceId = GetDeviceId(inputAction.controls[i].device);
					if (deviceId != 0)
					{
						string actionHandleName = GetActionHandleName(inputAction.controls[i]);
						if (Internal_GetActionIsActive(deviceId, actionHandleName))
						{
							return true;
						}
					}
				}
			}
			return false;
		}

		public static ulong GetActionHandle(InputAction inputAction, InputDevice inputDevice = null)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			if (inputAction == null || inputAction.controls.Count == 0)
			{
				return 0uL;
			}
			Enumerator<InputControl> enumerator = inputAction.controls.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					InputControl current = enumerator.Current;
					if ((inputDevice != null && current.device != inputDevice) || current.device == null)
					{
						continue;
					}
					uint deviceId = GetDeviceId(current.device);
					if (deviceId != 0)
					{
						string actionHandleName = GetActionHandleName(current);
						ulong num = Internal_GetActionId(deviceId, actionHandleName);
						if (num != 0L)
						{
							return num;
						}
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
			return 0uL;
		}

		private static uint GetDeviceId(InputDevice inputDevice)
		{
			if (inputDevice == null)
			{
				return 0u;
			}
			GetInternalDeviceIdCommand getInternalDeviceIdCommand = GetInternalDeviceIdCommand.Create();
			if (inputDevice.ExecuteCommand<GetInternalDeviceIdCommand>(ref getInternalDeviceIdCommand) != 0L)
			{
				return getInternalDeviceIdCommand.deviceId;
			}
			return 0u;
		}

		private static string UserPathToDeviceName(string userPath)
		{
			string[] array = userPath.Split('/', '_');
			StringBuilder stringBuilder = new StringBuilder("OXR");
			string[] array2 = array;
			foreach (string text in array2)
			{
				if (text.Length != 0)
				{
					string text2 = SanitizeStringForOpenXRPath(text);
					stringBuilder.Append(char.ToUpper(text2[0]));
					stringBuilder.Append(text2.Substring(1));
				}
			}
			return stringBuilder.ToString();
		}

		[DllImport("UnityOpenXR", CallingConvention = CallingConvention.Cdecl, EntryPoint = "OpenXRInputProvider_SetDpadBindingCustomValues")]
		private static extern void Internal_SetDpadBindingCustomValues(bool isLeft, float forceThreshold, float forceThresholdReleased, float centerRegion, float wedgeAngle, bool isSticky);

		[DllImport("UnityOpenXR", CallingConvention = CallingConvention.Cdecl, EntryPoint = "OpenXRInputProvider_SendHapticImpulse")]
		private static extern void Internal_SendHapticImpulse(uint deviceId, ulong actionId, float amplitude, float frequency, float duration);

		[DllImport("UnityOpenXR", CallingConvention = CallingConvention.Cdecl, EntryPoint = "OpenXRInputProvider_StopHaptics")]
		private static extern void Internal_StopHaptics(uint deviceId, ulong actionId);

		[DllImport("UnityOpenXR", EntryPoint = "OpenXRInputProvider_GetActionIdByControl")]
		private static extern ulong Internal_GetActionId(uint deviceId, string name);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "OpenXRInputProvider_TryGetInputSourceName")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_TryGetInputSourceNamePtr(uint deviceId, ulong actionId, uint index, uint flags, out IntPtr outName);

		internal static bool Internal_TryGetInputSourceName(uint deviceId, ulong actionId, uint index, uint flags, out string outName)
		{
			if (!Internal_TryGetInputSourceNamePtr(deviceId, actionId, index, flags, out var outName2))
			{
				outName = "";
				return false;
			}
			outName = Marshal.PtrToStringAnsi(outName2);
			return true;
		}

		[DllImport("UnityOpenXR", EntryPoint = "OpenXRInputProvider_GetActionIsActive")]
		private static extern bool Internal_GetActionIsActive(uint deviceId, string name);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "OpenXRInputProvider_RegisterDeviceDefinition")]
		private static extern ulong Internal_RegisterDeviceDefinition(string userPath, string interactionProfile, bool isAdditive, uint characteristics, string name, string manufacturer, string serialNumber);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "OpenXRInputProvider_CreateActionSet")]
		private static extern ulong Internal_CreateActionSet(string name, string localizedName, SerializedGuid guid);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "OpenXRInputProvider_CreateAction")]
		private static extern ulong Internal_CreateAction(ulong actionSetId, string name, string localizedName, uint actionType, SerializedGuid guid, string[] userPaths, uint userPathCount, bool isAdditive, string[] usages, uint usageCount);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "OpenXRInputProvider_SuggestBindings

BepInEx/plugins/LCVR/RuntimeDeps/UnityEngine.SpatialTracking.dll

Decompiled 5 days ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine.Events;
using UnityEngine.Experimental.XR.Interaction;
using UnityEngine.SpatialTracking;
using UnityEngine.XR;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("UnityEditor.XR.SpatialTracking")]
[assembly: InternalsVisibleTo("UnityEditor.SpatialTracking")]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[229]
		{
			0, 0, 0, 1, 0, 0, 0, 106, 92, 76,
			105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
			107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
			99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
			120, 114, 46, 108, 101, 103, 97, 99, 121, 105,
			110, 112, 117, 116, 104, 101, 108, 112, 101, 114,
			115, 64, 50, 46, 49, 46, 49, 48, 92, 82,
			117, 110, 116, 105, 109, 101, 92, 84, 114, 97,
			99, 107, 101, 100, 80, 111, 115, 101, 68, 114,
			105, 118, 101, 114, 92, 66, 97, 115, 101, 80,
			111, 115, 101, 80, 114, 111, 118, 105, 100, 101,
			114, 46, 99, 115, 0, 0, 0, 4, 0, 0,
			0, 107, 92, 76, 105, 98, 114, 97, 114, 121,
			92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
			99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
			105, 116, 121, 46, 120, 114, 46, 108, 101, 103,
			97, 99, 121, 105, 110, 112, 117, 116, 104, 101,
			108, 112, 101, 114, 115, 64, 50, 46, 49, 46,
			49, 48, 92, 82, 117, 110, 116, 105, 109, 101,
			92, 84, 114, 97, 99, 107, 101, 100, 80, 111,
			115, 101, 68, 114, 105, 118, 101, 114, 92, 84,
			114, 97, 99, 107, 101, 100, 80, 111, 115, 101,
			68, 114, 105, 118, 101, 114, 46, 99, 115
		};
		result.TypesData = new byte[297]
		{
			0, 0, 0, 0, 56, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 69, 120, 112,
			101, 114, 105, 109, 101, 110, 116, 97, 108, 46,
			88, 82, 46, 73, 110, 116, 101, 114, 97, 99,
			116, 105, 111, 110, 124, 66, 97, 115, 101, 80,
			111, 115, 101, 80, 114, 111, 118, 105, 100, 101,
			114, 0, 0, 0, 0, 60, 85, 110, 105, 116,
			121, 69, 110, 103, 105, 110, 101, 46, 83, 112,
			97, 116, 105, 97, 108, 84, 114, 97, 99, 107,
			105, 110, 103, 124, 84, 114, 97, 99, 107, 101,
			100, 80, 111, 115, 101, 68, 114, 105, 118, 101,
			114, 68, 97, 116, 97, 68, 101, 115, 99, 114,
			105, 112, 116, 105, 111, 110, 0, 0, 0, 0,
			69, 85, 110, 105, 116, 121, 69, 110, 103, 105,
			110, 101, 46, 83, 112, 97, 116, 105, 97, 108,
			84, 114, 97, 99, 107, 105, 110, 103, 46, 84,
			114, 97, 99, 107, 101, 100, 80, 111, 115, 101,
			68, 114, 105, 118, 101, 114, 68, 97, 116, 97,
			68, 101, 115, 99, 114, 105, 112, 116, 105, 111,
			110, 124, 80, 111, 115, 101, 68, 97, 116, 97,
			0, 0, 0, 0, 42, 85, 110, 105, 116, 121,
			69, 110, 103, 105, 110, 101, 46, 83, 112, 97,
			116, 105, 97, 108, 84, 114, 97, 99, 107, 105,
			110, 103, 124, 80, 111, 115, 101, 68, 97, 116,
			97, 83, 111, 117, 114, 99, 101, 0, 0, 0,
			0, 45, 85, 110, 105, 116, 121, 69, 110, 103,
			105, 110, 101, 46, 83, 112, 97, 116, 105, 97,
			108, 84, 114, 97, 99, 107, 105, 110, 103, 124,
			84, 114, 97, 99, 107, 101, 100, 80, 111, 115,
			101, 68, 114, 105, 118, 101, 114
		};
		result.TotalFiles = 2;
		result.TotalTypes = 5;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace UnityEngine.SpatialTracking
{
	internal class TrackedPoseDriverDataDescription
	{
		internal struct PoseData
		{
			public List<string> PoseNames;

			public List<TrackedPoseDriver.TrackedPose> Poses;
		}

		internal static List<PoseData> DeviceData = new List<PoseData>
		{
			new PoseData
			{
				PoseNames = new List<string> { "Left Eye", "Right Eye", "Center Eye - HMD Reference", "Head", "Color Camera" },
				Poses = new List<TrackedPoseDriver.TrackedPose>
				{
					TrackedPoseDriver.TrackedPose.LeftEye,
					TrackedPoseDriver.TrackedPose.RightEye,
					TrackedPoseDriver.TrackedPose.Center,
					TrackedPoseDriver.TrackedPose.Head,
					TrackedPoseDriver.TrackedPose.ColorCamera
				}
			},
			new PoseData
			{
				PoseNames = new List<string> { "Left Controller", "Right Controller" },
				Poses = new List<TrackedPoseDriver.TrackedPose>
				{
					TrackedPoseDriver.TrackedPose.LeftPose,
					TrackedPoseDriver.TrackedPose.RightPose
				}
			},
			new PoseData
			{
				PoseNames = new List<string> { "Device Pose" },
				Poses = new List<TrackedPoseDriver.TrackedPose> { TrackedPoseDriver.TrackedPose.RemotePose }
			}
		};
	}
	[Flags]
	public enum PoseDataFlags
	{
		NoData = 0,
		Position = 1,
		Rotation = 2
	}
	public static class PoseDataSource
	{
		internal static List<XRNodeState> nodeStates = new List<XRNodeState>();

		internal static PoseDataFlags GetNodePoseData(XRNode node, out Pose resultPose)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			PoseDataFlags poseDataFlags = PoseDataFlags.NoData;
			InputTracking.GetNodeStates(nodeStates);
			foreach (XRNodeState nodeState in nodeStates)
			{
				XRNodeState current = nodeState;
				if (((XRNodeState)(ref current)).nodeType == node)
				{
					if (((XRNodeState)(ref current)).TryGetPosition(ref resultPose.position))
					{
						poseDataFlags |= PoseDataFlags.Position;
					}
					if (((XRNodeState)(ref current)).TryGetRotation(ref resultPose.rotation))
					{
						poseDataFlags |= PoseDataFlags.Rotation;
					}
					return poseDataFlags;
				}
			}
			resultPose = Pose.identity;
			return poseDataFlags;
		}

		public static bool TryGetDataFromSource(TrackedPoseDriver.TrackedPose poseSource, out Pose resultPose)
		{
			return GetDataFromSource(poseSource, out resultPose) == (PoseDataFlags.Position | PoseDataFlags.Rotation);
		}

		public static PoseDataFlags GetDataFromSource(TrackedPoseDriver.TrackedPose poseSource, out Pose resultPose)
		{
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			switch (poseSource)
			{
			case TrackedPoseDriver.TrackedPose.RemotePose:
			{
				PoseDataFlags nodePoseData = GetNodePoseData((XRNode)5, out resultPose);
				if (nodePoseData == PoseDataFlags.NoData)
				{
					return GetNodePoseData((XRNode)4, out resultPose);
				}
				return nodePoseData;
			}
			case TrackedPoseDriver.TrackedPose.LeftEye:
				return GetNodePoseData((XRNode)0, out resultPose);
			case TrackedPoseDriver.TrackedPose.RightEye:
				return GetNodePoseData((XRNode)1, out resultPose);
			case TrackedPoseDriver.TrackedPose.Head:
				return GetNodePoseData((XRNode)3, out resultPose);
			case TrackedPoseDriver.TrackedPose.Center:
				return GetNodePoseData((XRNode)2, out resultPose);
			case TrackedPoseDriver.TrackedPose.LeftPose:
				return GetNodePoseData((XRNode)4, out resultPose);
			case TrackedPoseDriver.TrackedPose.RightPose:
				return GetNodePoseData((XRNode)5, out resultPose);
			case TrackedPoseDriver.TrackedPose.ColorCamera:
				return GetNodePoseData((XRNode)2, out resultPose);
			default:
				Debug.LogWarningFormat("Unable to retrieve pose data for poseSource: {0}", new object[1] { poseSource.ToString() });
				resultPose = Pose.identity;
				return PoseDataFlags.NoData;
			}
		}
	}
	[Serializable]
	[DefaultExecutionOrder(-30000)]
	[AddComponentMenu("XR/Tracked Pose Driver")]
	[HelpURL("https://docs.unity3d.com/Packages/[email protected]/manual/index.html")]
	public class TrackedPoseDriver : MonoBehaviour
	{
		public enum DeviceType
		{
			GenericXRDevice,
			GenericXRController,
			GenericXRRemote
		}

		public enum TrackedPose
		{
			LeftEye,
			RightEye,
			Center,
			Head,
			LeftPose,
			RightPose,
			ColorCamera,
			DepthCameraDeprecated,
			FisheyeCameraDeprected,
			DeviceDeprecated,
			RemotePose
		}

		public enum TrackingType
		{
			RotationAndPosition,
			RotationOnly,
			PositionOnly
		}

		public enum UpdateType
		{
			UpdateAndBeforeRender,
			Update,
			BeforeRender
		}

		[SerializeField]
		private DeviceType m_Device;

		[SerializeField]
		private TrackedPose m_PoseSource = TrackedPose.Center;

		[SerializeField]
		private BasePoseProvider m_PoseProviderComponent;

		[SerializeField]
		private TrackingType m_TrackingType;

		[SerializeField]
		private UpdateType m_UpdateType;

		[SerializeField]
		private bool m_UseRelativeTransform;

		protected Pose m_OriginPose;

		public DeviceType deviceType
		{
			get
			{
				return m_Device;
			}
			internal set
			{
				m_Device = value;
			}
		}

		public TrackedPose poseSource
		{
			get
			{
				return m_PoseSource;
			}
			internal set
			{
				m_PoseSource = value;
			}
		}

		public BasePoseProvider poseProviderComponent
		{
			get
			{
				return m_PoseProviderComponent;
			}
			set
			{
				m_PoseProviderComponent = value;
			}
		}

		public TrackingType trackingType
		{
			get
			{
				return m_TrackingType;
			}
			set
			{
				m_TrackingType = value;
			}
		}

		public UpdateType updateType
		{
			get
			{
				return m_UpdateType;
			}
			set
			{
				m_UpdateType = value;
			}
		}

		public bool UseRelativeTransform
		{
			get
			{
				return m_UseRelativeTransform;
			}
			set
			{
				m_UseRelativeTransform = value;
			}
		}

		public Pose originPose
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return m_OriginPose;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				m_OriginPose = value;
			}
		}

		public bool SetPoseSource(DeviceType deviceType, TrackedPose pose)
		{
			if ((int)deviceType < TrackedPoseDriverDataDescription.DeviceData.Count)
			{
				TrackedPoseDriverDataDescription.PoseData poseData = TrackedPoseDriverDataDescription.DeviceData[(int)deviceType];
				for (int i = 0; i < poseData.Poses.Count; i++)
				{
					if (poseData.Poses[i] == pose)
					{
						this.deviceType = deviceType;
						poseSource = pose;
						return true;
					}
				}
			}
			return false;
		}

		private PoseDataFlags GetPoseData(DeviceType device, TrackedPose poseSource, out Pose resultPose)
		{
			if (!((Object)(object)m_PoseProviderComponent != (Object)null))
			{
				return PoseDataSource.GetDataFromSource(poseSource, out resultPose);
			}
			return m_PoseProviderComponent.GetPoseFromProvider(out resultPose);
		}

		private void CacheLocalPosition()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			m_OriginPose.position = ((Component)this).transform.localPosition;
			m_OriginPose.rotation = ((Component)this).transform.localRotation;
		}

		private void ResetToCachedLocalPosition()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			SetLocalTransform(m_OriginPose.position, m_OriginPose.rotation, PoseDataFlags.Position | PoseDataFlags.Rotation);
		}

		protected virtual void Awake()
		{
			CacheLocalPosition();
		}

		protected virtual void OnDestroy()
		{
		}

		protected virtual void OnEnable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			Application.onBeforeRender += new UnityAction(OnBeforeRender);
		}

		protected virtual void OnDisable()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			ResetToCachedLocalPosition();
			Application.onBeforeRender -= new UnityAction(OnBeforeRender);
		}

		protected virtual void FixedUpdate()
		{
			if (m_UpdateType == UpdateType.Update || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		protected virtual void Update()
		{
			if (m_UpdateType == UpdateType.Update || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		[BeforeRenderOrder(-30000)]
		protected virtual void OnBeforeRender()
		{
			if (m_UpdateType == UpdateType.BeforeRender || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		protected virtual void SetLocalTransform(Vector3 newPosition, Quaternion newRotation, PoseDataFlags poseFlags)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			if ((m_TrackingType == TrackingType.RotationAndPosition || m_TrackingType == TrackingType.RotationOnly) && (poseFlags & PoseDataFlags.Rotation) > PoseDataFlags.NoData)
			{
				((Component)this).transform.localRotation = newRotation;
			}
			if ((m_TrackingType == TrackingType.RotationAndPosition || m_TrackingType == TrackingType.PositionOnly) && (poseFlags & PoseDataFlags.Position) > PoseDataFlags.NoData)
			{
				((Component)this).transform.localPosition = newPosition;
			}
		}

		protected Pose TransformPoseByOriginIfNeeded(Pose pose)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			if (m_UseRelativeTransform)
			{
				return ((Pose)(ref pose)).GetTransformedBy(m_OriginPose);
			}
			return pose;
		}

		private bool HasStereoCamera()
		{
			Camera component = ((Component)this).GetComponent<Camera>();
			if ((Object)(object)component != (Object)null)
			{
				return component.stereoEnabled;
			}
			return false;
		}

		protected virtual void PerformUpdate()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			if (((Behaviour)this).enabled)
			{
				Pose resultPose;
				PoseDataFlags poseData = GetPoseData(m_Device, m_PoseSource, out resultPose);
				if (poseData != 0)
				{
					Pose val = TransformPoseByOriginIfNeeded(resultPose);
					SetLocalTransform(val.position, val.rotation, poseData);
				}
			}
		}
	}
}
namespace UnityEngine.Experimental.XR.Interaction
{
	[Serializable]
	public abstract class BasePoseProvider : MonoBehaviour
	{
		public virtual PoseDataFlags GetPoseFromProvider(out Pose output)
		{
			if (TryGetPoseFromProvider(out output))
			{
				return PoseDataFlags.Position | PoseDataFlags.Rotation;
			}
			return PoseDataFlags.NoData;
		}

		[Obsolete("This function is provided for backwards compatibility with the BasePoseProvider found in com.unity.xr.legacyinputhelpers v1.3.X. Please do not implement this function, instead use the new API via GetPoseFromProvider", false)]
		public virtual bool TryGetPoseFromProvider(out Pose output)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			output = Pose.identity;
			return false;
		}
	}
}