Decompiled source of LethalCompanyVR v1.2.3

BepInEx/plugins/LCVR/LCVR.dll

Decompiled 3 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.Net;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;
using System.Runtime.CompilerServices;
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 Dissonance;
using Dissonance.Integrations.Unity_NFGO;
using Dissonance.Networking;
using Dissonance.Networking.Client;
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.Player;
using LCVR.Properties;
using LCVR.Rendering;
using LCVR.UI;
using LCVR.UI.Settings;
using Microsoft.CodeAnalysis;
using Microsoft.MixedReality.Toolkit.Experimental.UI;
using Mimics;
using MoreCompany.Behaviors;
using MoreCompany.Cosmetics;
using Newtonsoft.Json;
using TMPro;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Animations.Rigging;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.UI;
using UnityEngine.InputSystem.Utilities;
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("LCVR")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCopyright("Copyright (c) DaXcess 2024")]
[assembly: AssemblyDescription("Collecting Scrap in VR")]
[assembly: AssemblyFileVersion("1.2.3.0")]
[assembly: AssemblyInformationalVersion("1.2.3+1722f98932769334945d2a0fe71f5dd58b788c09")]
[assembly: AssemblyProduct("LCVR")]
[assembly: AssemblyTitle("LCVR")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/DaXcess/LCVR")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.3.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_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: 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)
			Items.Clear();
			foreach (Transform item in ((Component)this).transform)
			{
				RectTransform component = ((Component)item).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 class Compat
	{
		private class CompatibleMod
		{
			public string Name { get; }

			public string Guid { get; }

			public CompatibleMod(string name, string guid)
			{
				Name = name;
				Guid = guid;
				base..ctor();
			}
		}

		private readonly CompatibleMod[] ModCompatibilityList = new CompatibleMod[4]
		{
			new CompatibleMod("MoreCompany", "me.swipez.melonloader.morecompany"),
			new CompatibleMod("Mimics", "x753.Mimics"),
			new CompatibleMod("Diversity", "Chaos.Diversity"),
			new CompatibleMod("CullFactory", "com.fumiko.CullFactory")
		};

		private readonly List<string> DetectedMods = new List<string>();

		public Compat(IEnumerable<PluginInfo> plugins)
		{
			foreach (PluginInfo plugin in plugins)
			{
				CompatibleMod compatibleMod = ModCompatibilityList.FirstOrDefault((CompatibleMod mod) => mod.Guid == plugin.Metadata.GUID);
				if (compatibleMod != null)
				{
					Logger.LogInfo("Found compatible mod " + compatibleMod.Name);
					DetectedMods.Add(compatibleMod.Name);
				}
			}
		}

		public bool IsLoaded(string modName)
		{
			return DetectedMods.Contains(modName);
		}
	}
	public class Config
	{
		public enum TurnProviderOption
		{
			Snap,
			Smooth,
			Disabled
		}

		public ConfigEntry<TurnProviderOption> TurnProvider;

		public ConfigFile File { get; }

		public ConfigEntry<bool> DisableVR { get; }

		public ConfigEntry<bool> AskOnStartup { get; }

		public ConfigEntry<bool> IntroScreenSeen { get; }

		public ConfigEntry<bool> EnableHelmetVisor { get; }

		public ConfigEntry<bool> EnableDynamicResolution { get; }

		public ConfigEntry<DynamicResUpscaleFilter> DynamicResolutionUpscaleFilter { get; }

		public ConfigEntry<float> DynamicResolutionPercentage { get; }

		public ConfigEntry<bool> EnableDLSS { get; }

		public ConfigEntry<float> CameraResolution { get; }

		public ConfigEntry<bool> DisableVolumetrics { get; }

		public ConfigEntry<float> SmoothTurnSpeedModifier { get; }

		public ConfigEntry<float> SnapTurnSize { get; }

		public ConfigEntry<bool> ToggleSprint { get; }

		public ConfigEntry<float> MovementSprintToggleCooldown { get; }

		public ConfigEntry<string> ControllerBindingsOverrideProfile { 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> 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> DisableMuffleInteraction { get; }

		public ConfigEntry<bool> DisableFaceInteractions { get; }

		public ConfigEntry<string> LastInternalControllerProfile { get; }

		public ConfigEntry<string> OpenXRRuntimeFile { get; }

		public ConfigEntry<bool> DisableSettingsButton { get; }

		public Config(ConfigFile file)
		{
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Expected O, but got Unknown
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Expected O, but got Unknown
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Expected O, but got Unknown
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Expected O, but got Unknown
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Expected O, but got Unknown
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0255: Expected O, but got Unknown
			//IL_0338: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Expected O, but got Unknown
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Expected O, but got Unknown
			//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Expected O, but got Unknown
			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.");
			IntroScreenSeen = file.Bind<bool>("General", "IntroScreenSeen", false, "Whether the VR intro screen has been displayed before. This configuration option should be set automatically.");
			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.");
			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>()));
			EnableDLSS = file.Bind<bool>("Performance", "EnableDLSS", false, "(Not recommended!) Enable DLSS support for the game. Requires dynamic resolution to be enabled. DLSS will override the upscale filter used.");
			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, 1f), 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>()));
			ControllerBindingsOverrideProfile = file.Bind<string>("Input", "ControllerBindingsOverrideProfile", "", "Specify the name of a controler profile you would like to use. Keep empty to use the built-in controller profiles. You can find a list of available controller profiles on https://github.com/DaXcess/LCVR-Controller-Profiles. To test a local profile, specify a path using the file protocol (e.g. file:///C:/Users/.../profile.inputactions)");
			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.");
			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.");
			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.");
			LastInternalControllerProfile = file.Bind<string>("Internal", "LastInternalControllerProfile", "", "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.VROnly, null)]
	[HarmonyPatch]
	internal class VREntryPoint
	{
		[HarmonyPatch(typeof(StartOfRound), "Start")]
		[HarmonyPostfix]
		private static void OnGameEntered()
		{
			((MonoBehaviour)StartOfRound.Instance).StartCoroutine(Start());
		}

		private static IEnumerator Start()
		{
			Logger.Log("Hello from VR!");
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)StartOfRound.Instance.activeCamera != (Object)null));
		}
	}
	[LCVRPatch(LCVRPatchTarget.Universal, null)]
	[HarmonyPatch]
	internal class UniversalEntryPoint
	{
		[HarmonyPatch(typeof(StartOfRound), "Start")]
		[HarmonyPostfix]
		private static void OnGameEntered()
		{
			((MonoBehaviour)StartOfRound.Instance).StartCoroutine(Start());
		}

		private static IEnumerator Start()
		{
			Logger.Log("Hello from universal!");
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)StartOfRound.Instance.activeCamera != (Object)null));
			new GameObject("LCVR Session Manager").AddComponent<VRSession>();
			yield return DNet.Initialize();
		}

		[HarmonyPatch(typeof(StartOfRound), "OnDestroy")]
		[HarmonyPostfix]
		private static void OnGameLeave()
		{
			DNet.Shutdown();
		}
	}
	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);
		}
	}
	public class NamedLogger
	{
		private readonly string name;

		public NamedLogger(string name)
		{
			this.name = name;
			base..ctor();
		}

		public void Log(string message)
		{
			Logger.Log("[" + name + "] " + message);
		}

		public void LogInfo(string message)
		{
			Logger.LogInfo("[" + name + "] " + message);
		}

		public void LogWarning(string message)
		{
			Logger.LogWarning("[" + name + "] " + message);
		}

		public void LogError(string message)
		{
			Logger.LogError("[" + name + "] " + message);
		}

		public void LogDebug(string message)
		{
			Logger.LogDebug("[" + name + "] " + message);
		}
	}
	internal static class Native
	{
		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);

		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;
			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);
		}
	}
	internal class OpenXR
	{
		public class OpenXRReport
		{
			public string RuntimeName { get; }

			public string RuntimeVersion { get; }

			public string Error { get; }

			public OpenXRReport(string runtimeName, string runtimeVersion, string error)
			{
				RuntimeName = runtimeName;
				RuntimeVersion = runtimeVersion;
				Error = error;
				base..ctor();
			}
		}

		[Serializable]
		private struct OpenXRRuntime
		{
			public RuntimeInfo runtime;
		}

		[Serializable]
		private struct RuntimeInfo
		{
			public string name;
		}

		[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);

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

		public static bool GetDiagnosticReport(out OpenXRReport report)
		{
			report = null;
			Regex regex = new Regex("^==== ([A-z0-9-_ ]+) ====$", RegexOptions.Multiline);
			Regex regex2 = new Regex("^\\[FAILURE\\] [A-z]+: ([A-Z_]+) \\(\\d+x\\)$");
			string input = GenerateReport();
			string[] array = (from v in regex.Split(input).Skip(1)
				select v.Trim()).ToArray();
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			for (int i = 0; i < array.Length; i += 2)
			{
				dictionary.Add(array[i], array[i + 1]);
			}
			if (!dictionary.TryGetValue("OpenXR Runtime Info", out var value))
			{
				return false;
			}
			string[] source = value.Split('\n');
			string text = source.FirstOrDefault((string line) => line.StartsWith("Runtime Name: "));
			string text2 = source.FirstOrDefault((string line) => line.StartsWith("Runtime Version: "));
			if (text == null || text2 == null)
			{
				text = "<Missing>";
				text2 = "<Missing>";
			}
			else
			{
				text = text.Split(": ")[1];
				text2 = text2.Split(": ")[1];
			}
			if (!dictionary.TryGetValue("Last 20 non-XR_SUCCESS returns", out value))
			{
				return false;
			}
			Match match = regex2.Match(value.Split('\n')[0].Trim());
			if (match == null)
			{
				return false;
			}
			string value2 = match.Groups[1].Value;
			report = new OpenXRReport(text, text2, value2);
			return true;
		}

		public static Dictionary<string, string> DetectOpenXRRuntimes(out string @default)
		{
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			@default = null;
			IntPtr phkResult = IntPtr.Zero;
			uint lpcbData = 0u;
			try
			{
				if (Native.RegOpenKeyEx(Native.HKEY_LOCAL_MACHINE, "SOFTWARE\\Khronos\\OpenXR\\1", 0, 131097, out phkResult) != 0)
				{
					throw new Exception("Failed to open registry key HKLM\\SOFTWARE\\Khronos\\OpenXR\\1");
				}
				if (Native.RegQueryValueEx(phkResult, "ActiveRuntime", 0, out var lpType, null, ref lpcbData) != 0)
				{
					throw new Exception("Failed to query ActiveRuntime value");
				}
				StringBuilder stringBuilder = new StringBuilder((int)lpcbData);
				if (Native.RegQueryValueEx(phkResult, "ActiveRuntime", 0, out lpType, stringBuilder, ref lpcbData) != 0)
				{
					throw new Exception("Failed to query ActiveRuntime value");
				}
				string path = stringBuilder.ToString();
				@default = JsonConvert.DeserializeObject<OpenXRRuntime>(File.ReadAllText(path)).runtime.name;
				if (Native.RegOpenKeyEx(phkResult, "AvailableRuntimes", 0, 131097, out phkResult) != 0)
				{
					throw new Exception("Failed to open AvailableRuntimes registry key");
				}
				if (Native.RegQueryInfoKey(phkResult, null, IntPtr.Zero, IntPtr.Zero, out var _, out var _, out var _, out var lpcValues, out var lpcbMaxValueNameLen, out var _, IntPtr.Zero, IntPtr.Zero) != 0)
				{
					throw new Exception("Failed to query AvailableRuntimes registry key");
				}
				List<string> list = new List<string>();
				for (uint num = 0u; num < lpcValues; num++)
				{
					try
					{
						StringBuilder stringBuilder2 = new StringBuilder((int)(lpcbMaxValueNameLen + 1));
						uint lpcchValueName = lpcbMaxValueNameLen + 1;
						if (Native.RegEnumValue(phkResult, num, stringBuilder2, ref lpcchValueName, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero) == 0)
						{
							list.Add(stringBuilder2.ToString());
						}
					}
					catch
					{
					}
				}
				foreach (string item in list)
				{
					int num2 = 0;
					string name = JsonConvert.DeserializeObject<OpenXRRuntime>(File.ReadAllText(item)).runtime.name;
					string key = name;
					while (dictionary.ContainsKey(key))
					{
						num2++;
						key = $"{name} ({num2})";
					}
					dictionary.Add(name, item);
				}
				return dictionary;
			}
			catch (Exception ex)
			{
				Logger.LogWarning("Failed to query runtimes: " + ex.Message);
				return null;
			}
			finally
			{
				if (phkResult != IntPtr.Zero)
				{
					Native.RegCloseKey(phkResult);
				}
			}
		}

		public static bool GetRuntimeName(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 GetRuntimeVersion(out ushort major, out ushort minor, out ushort patch)
		{
			return Internal_GetRuntimeVersion(out major, out minor, out patch);
		}
	}
	[BepInPlugin("io.daxcess.lcvr", "LCVR", "1.2.3")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[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.2.3";

		private readonly string[] GAME_ASSEMBLY_HASHES = new string[2] { "7CFABBA203022CC46EF309B0E651276CB59217AF6D38C34E2085E67957DBBCBD", "4C265CECBC1A075E52D9E1FA458C67AA25C087362B472DF66DF370B9A0676A67" };

		public static Config Config { get; private set; }

		public static Compat Compatibility { 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).Config);
			Dictionary<string, PluginInfo>.ValueCollection values = Chainloader.PluginInfos.Values;
			int num = 0;
			PluginInfo[] array = (PluginInfo[])(object)new PluginInfo[values.Count];
			foreach (PluginInfo item in values)
			{
				array[num] = item;
				num++;
			}
			Compatibility = new Compat(new <>z__ReadOnlyArray<PluginInfo>(array));
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin LCVR is starting...");
			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;
				}
			}
			if (Environment.GetCommandLineArgs().Contains("--lcvr-debug-interactables"))
			{
				Flags |= Flags.InteractableDebug;
			}
			bool flag2 = Environment.GetCommandLineArgs().Contains("--lcvr-skip-checksum");
			if (!VerifyGameVersion())
			{
				if (!flag2)
				{
					((BaseUnityPlugin)this).Logger.LogError((object)"Error: Unsupported game version, or corrupted game detected!");
					((BaseUnityPlugin)this).Logger.LogError((object)"Aborting before we blow something up!");
					return;
				}
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Warning: Unsupported game version, or corrupted game detected!");
				Flags |= Flags.InvalidGameAssembly;
			}
			if (!LoadEarlyRuntimeDependencies())
			{
				((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 && InitVRLoader())
			{
				Flags |= Flags.VR;
				((MonoBehaviour)this).StartCoroutine(HijackSplashScreen());
			}
			HarmonyPatcher.PatchUniversal();
			((BaseUnityPlugin)this).Logger.LogDebug((object)"Inserted universal patches using Harmony");
			Native.BringGameWindowToFront();
		}

		private bool VerifyGameVersion()
		{
			string value = BitConverter.ToString(Utils.ComputeHash(File.ReadAllBytes(Path.Combine(Paths.ManagedPath, "Assembly-CSharp.dll")))).Replace("-", "");
			return GAME_ASSEMBLY_HASHES.Contains(value);
		}

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

		private bool InitVRLoader()
		{
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0406: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Expected O, but got Unknown
			//IL_0412: Unknown result type (might be due to invalid IL or missing references)
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Loading VR...");
			if (SetupRuntimeAssets())
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"You must restart the game to allow VR to function properly");
				Flags |= Flags.RestartRequired;
				return false;
			}
			if (!string.IsNullOrEmpty(Config.OpenXRRuntimeFile.Value))
			{
				Environment.SetEnvironmentVariable("XR_RUNTIME_JSON", Config.OpenXRRuntimeFile.Value);
			}
			EnableControllerProfiles();
			InitializeXRRuntime();
			if (!StartDisplay())
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"Failed to start in VR Mode! Only Non-VR features are available!");
				if (OpenXR.GetDiagnosticReport(out var report))
				{
					((BaseUnityPlugin)this).Logger.LogWarning((object)("Runtime Name:    " + report.RuntimeName));
					((BaseUnityPlugin)this).Logger.LogWarning((object)("Runtime Version: " + report.RuntimeVersion));
					((BaseUnityPlugin)this).Logger.LogWarning((object)("Last Error:      " + report.Error));
					((BaseUnityPlugin)this).Logger.LogWarning((object)"");
					string error = report.Error;
					if (!(error == "XR_ERROR_RUNTIME_UNAVAILABLE"))
					{
						if (error == "XR_ERROR_FORM_FACTOR_UNAVAILABLE")
						{
							((BaseUnityPlugin)this).Logger.LogWarning((object)"This generally means that your headset is not connected, or that your headset is connected to a different runtime. Please make sure your headset is active and connected, and that you are using the correct OpenXR runtime.");
						}
						else
						{
							((BaseUnityPlugin)this).Logger.LogWarning((object)"Unknown reason for OpenXR failure!");
							((BaseUnityPlugin)this).Logger.LogWarning((object)("\n" + OpenXR.GenerateReport()));
						}
					}
					else
					{
						((BaseUnityPlugin)this).Logger.LogWarning((object)"It appears that no OpenXR runtime is currently active. Please go to the dedicated application for your VR headset and make sure that it is running, and set as default OpenXR runtime.");
					}
				}
				else
				{
					((BaseUnityPlugin)this).Logger.LogError((object)"Failed to generate OpenXR diagnostics report!");
				}
				string @default;
				Dictionary<string, string> dictionary = OpenXR.DetectOpenXRRuntimes(out @default);
				if (dictionary != null)
				{
					((BaseUnityPlugin)this).Logger.LogWarning((object)"List of registered OpenXR runtimes on this device:");
					if (@default != null)
					{
						((BaseUnityPlugin)this).Logger.LogWarning((object)(">>> " + @default));
					}
					else
					{
						((BaseUnityPlugin)this).Logger.LogWarning((object)"No default runtime detected!");
					}
					foreach (string key in dictionary.Keys)
					{
						if (!(key == @default))
						{
							((BaseUnityPlugin)this).Logger.LogWarning((object)("    " + key));
						}
					}
				}
				return false;
			}
			foreach (PluginInfo value in Chainloader.PluginInfos.Values)
			{
				if (value.Metadata.GUID == "com.sinai.unityexplorer")
				{
					((BaseUnityPlugin)this).Logger.LogWarning((object)"WARNING: UNITY EXPLORER DETECTED! UNITY EXPLORER *WILL* BREAK VR UI INPUTS!");
					Flags |= Flags.UnityExplorerDetected;
				}
			}
			if (OpenXR.GetRuntimeName(out var name) && OpenXR.GetRuntimeVersion(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 runtime OpenXR name?");
			}
			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.enableDLSS = Config.EnableDLSS.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 = false;
			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;
			return true;
		}

		private void EnableControllerProfiles()
		{
			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
			};
			((BaseUnityPlugin)this).Logger.LogDebug((object)"Enabled XR Controller Profiles");
		}

		private void InitializeXRRuntime()
		{
			XRGeneralSettings obj = ScriptableObject.CreateInstance<XRGeneralSettings>();
			XRManagerSettings val = ScriptableObject.CreateInstance<XRManagerSettings>();
			OpenXRLoader item = ScriptableObject.CreateInstance<OpenXRLoader>();
			obj.Manager = val;
			((List<XRLoader>)val.activeLoaders).Clear();
			((List<XRLoader>)val.activeLoaders).Add((XRLoader)(object)item);
			OpenXRSettings.Instance.renderMode = (RenderMode)0;
			OpenXRSettings.Instance.depthSubmissionMode = (DepthSubmissionMode)0;
			obj.InitXRSDK();
			obj.Start();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Initialized OpenXR Runtime");
		}

		private bool StartDisplay()
		{
			List<XRDisplaySubsystem> list = new List<XRDisplaySubsystem>();
			SubsystemManager.GetInstances<XRDisplaySubsystem>(list);
			if (list.Count < 1)
			{
				return false;
			}
			((IntegratedSubsystem)list[0]).Start();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Started XR Display subsystem, welcome to VR!");
			return true;
		}

		private 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;
		}

		private bool SetupRuntimeAssets()
		{
			bool result = false;
			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, Resources.UnitySubsystemsManifest);
				result = true;
			}
			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))
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Could not find UnityOpenXR.dll to copy to the game, VR might not work!");
			}
			if (!CopyResourceFile(sourceFile2, destinationFile2))
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"Could not find openxr_loader.dll to copy to the game, VR might not work!");
			}
			return result;
		}

		private 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;
				}
			});
			((Renderer)GameObject.Find("SplashRootObject/Quad").GetComponent<MeshRenderer>()).material = AssetManager.splashMaterial;
		}
	}
	[Flags]
	public enum Flags
	{
		VR = 1,
		RestartRequired = 2,
		UnityExplorerDetected = 4,
		InvalidGameAssembly = 8,
		InteractableDebug = 0x10
	}
	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 GetPath(this Transform current)
		{
			if ((Object)(object)current.parent == (Object)null)
			{
				return "/" + ((Object)current).name;
			}
			return current.parent.GetPath() + "/" + ((Object)current).name;
		}

		public static string FormatPascalAndAcronym(string input)
		{
			StringBuilder stringBuilder = new StringBuilder(input[0].ToString());
			if (stringBuilder.Length > 0)
			{
				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_0030: Unknown result type (might be due to invalid IL or missing references)
			TrackedPoseDriver obj = @object.AddComponent<TrackedPoseDriver>();
			obj.positionAction = Actions.Instance.HeadPosition;
			obj.rotationAction = Actions.Instance.HeadRotation;
			obj.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 bool IsInactivePlayer(this PlayerControllerB player)
		{
			if ((Object)(object)player == (Object)(object)StartOfRound.Instance.localPlayerController)
			{
				return false;
			}
			return !((Behaviour)((Component)((Component)player).transform.Find("ScavengerModel/metarig/CameraContainer/MainCamera")).GetComponent<Camera>()).enabled;
		}

		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;
		}

		public 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.defaultInputActions.FindAction($"{hand}/Select", false));
			controller.selectActionValue = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Select Value", false));
			controller.activateAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Activate", false));
			controller.activateActionValue = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Activate Value", false));
			controller.uiPressAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/UI Press", false));
			controller.uiPressActionValue = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/UI Press Value", false));
			controller.uiScrollAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/UI Scroll", false));
			controller.rotateAnchorAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Rotate Anchor", false));
			controller.translateAnchorAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Translate Anchor", false));
			controller.scaleToggleAction = new InputActionProperty(AssetManager.defaultInputActions.FindAction($"{hand}/Scale Toggle", false));
			controller.scaleDeltaAction = new InputActionProperty(AssetManager.defaultInputActions.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);
		}

		public static bool BoxCast(this Ray ray, float radius, out RaycastHit hit, float maxDistance = float.PositiveInfinity, int layerMask = -5)
		{
			//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_000d: 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_001a: Unknown result type (might be due to invalid IL or missing references)
			return Physics.BoxCast(((Ray)(ref ray)).origin, Vector3.one * radius, ((Ray)(ref ray)).direction, ref hit, Quaternion.identity, 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 NotImplementedException(), 
			});
		}

		private static InputAction Rotation(this Hand hand)
		{
			return (InputAction)(hand switch
			{
				Hand.Left => Actions.Instance.LeftHandRotation, 
				Hand.Right => Actions.Instance.RightHandRotation, 
				_ => throw new NotImplementedException(), 
			});
		}

		private static InputAction TrackingState(this Hand hand)
		{
			return (InputAction)(hand switch
			{
				Hand.Left => Actions.Instance.LeftHandTrackingState, 
				Hand.Right => Actions.Instance.RightHandTrackingState, 
				_ => throw new NotImplementedException(), 
			});
		}

		public static IEnumerator NopRoutine()
		{
			yield break;
		}
	}
}
namespace LCVR.UI
{
	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.OnReload += OnReloadActions;
			Actions.Instance["Controls/Reset Height"].performed += OnResetHeight;
			enemyTransform = Object.Instantiate<GameObject>(AssetManager.enemyPrefab).transform;
			((MonoBehaviour)this).StartCoroutine(Init());
		}

		private void OnReloadActions(InputActionAsset oldActions, InputActionAsset newActions)
		{
			oldActions["Controls/Reset Height"].performed -= OnResetHeight;
			newActions["Controls/Reset Height"].performed += OnResetHeight;
		}

		private void OnDestroy()
		{
			Actions.Instance.OnReload -= OnReloadActions;
			Actions.Instance["Controls/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_0024: 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_0033: 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_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: 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_0069: 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_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: 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_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: 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_00da: 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_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = Quaternion.Euler(0f, sourceTransform.eulerAngles.y, 0f) * Vector3.forward * 5f;
			targetPosition = new Vector3(val.x + sourceTransform.position.x, heightOffset, val.z + sourceTransform.position.z);
			targetRotation = Quaternion.Euler(0f, sourceTransform.eulerAngles.y, 0f);
			enemyTransform.position = new Vector3(0f - val.x + sourceTransform.position.x, heightOffset - 2f, 0f - val.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();
			}
		}
	}
	public class InteractCanvasPositionOffset : MonoBehaviour
	{
		public Vector3 offset;
	}
	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);
			foreach (TMP_InputField input in array)
			{
				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);
			}
		}
	}
	internal class ObjectScanner
	{
		private Dictionary<RectTransform, ScanNodeProperties> ScanNodes => (Dictionary<RectTransform, ScanNodeProperties>)typeof(HUDManager).GetField("scanNodes", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(HUDManager.Instance);

		internal ObjectScanner()
		{
			//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_0049: Unknown result type (might be due to invalid IL or missing references)
			foreach (Transform item in GameObject.Find("ObjectScanner").transform)
			{
				Canvas obj = ((Component)item).gameObject.AddComponent<Canvas>();
				obj.worldCamera = VRSession.Instance.MainCamera;
				obj.renderMode = (RenderMode)2;
				CollectionExtensions.Do<Image>((IEnumerable<Image>)((Component)item).GetComponentsInChildren<Image>(), (Action<Image>)delegate(Image image)
				{
					((Graphic)image).material = AssetManager.alwaysOnTopMat;
				});
				CollectionExtensions.Do<TextMeshProUGUI>((IEnumerable<TextMeshProUGUI>)((Component)item).GetComponentsInChildren<TextMeshProUGUI>(), (Action<TextMeshProUGUI>)delegate(TextMeshProUGUI text)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_0011: Expected O, but got Unknown
					((TMP_Text)text).fontSharedMaterial = new Material(((TMP_Text)text).fontSharedMaterial);
					((TMP_Text)text).isOverlay = true;
				});
			}
		}

		public void Update()
		{
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: 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)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: 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_00fd: 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_010c: 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_0123: Unknown result type (might be due to invalid IL or missing references)
			HUDManager instance = HUDManager.Instance;
			for (int i = 0; i < instance.scanElements.Length; i++)
			{
				if (ScanNodes.Count > 0 && ScanNodes.TryGetValue(instance.scanElements[i], out var value) && (Object)(object)value != (Object)null && !InvokeFunction<bool>("NodeIsNotVisible", new object[2] { value, i }))
				{
					GameObject gameObject = ((Component)instance.scanElements[i]).gameObject;
					gameObject.transform.position = ((Component)value).transform.position;
					int num = 5;
					float num2 = Vector3.Distance(((Component)VRSession.Instance.MainCamera).transform.position, ((Component)value).transform.position) / (float)num;
					gameObject.transform.rotation = Quaternion.LookRotation(gameObject.transform.position - ((Component)VRSession.Instance.MainCamera).transform.position);
					Transform transform = gameObject.transform;
					transform.position += gameObject.transform.forward * -0.2f;
					gameObject.transform.localScale = Vector3.one * num2;
				}
			}
		}

		private static T InvokeFunction<T>(string name, params object[] args)
		{
			return (T)typeof(HUDManager).GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic).Invoke(HUDManager.Instance, args);
		}
	}
	public class VRHUD : MonoBehaviour
	{
		private ObjectScanner scanner;

		private GameObject selfRed;

		private GameObject self;

		private GameObject sprintMeter;

		private GameObject redGlowBodyParts;

		private GameObject weightUi;

		private GameObject clock;

		private GameObject battery;

		private GameObject inventory;

		private GameObject deathScreen;

		private GameObject spectatorLight;

		public Canvas Canvas { get; private set; }

		public Canvas WorldInteractionCanvas { get; private set; }

		public Canvas SpectateCanvas { get; private set; }

		public Canvas LeftHandCanvas { get; private set; }

		public Canvas RightHandCanvas { get; private set; }

		public NonNativeKeyboard MenuKeyboard { get; private set; }

		public NonNativeKeyboard TerminalKeyboard { get; internal set; }

		private void Awake()
		{
			//IL_0006: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0320: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: 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_00e4: 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_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b3: Expected O, but got Unknown
			//IL_070e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0715: Unknown result type (might be due to invalid IL or missing references)
			//IL_0717: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_071f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0740: Unknown result type (might be due to invalid IL or missing references)
			//IL_0764: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Unknown result type (might be due to invalid IL or missing references)
			//IL_081d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0822: Unknown result type (might be due to invalid IL or missing references)
			//IL_0823: Unknown result type (might be due to invalid IL or missing references)
			//IL_082a: Unknown result type (might be due to invalid IL or missing references)
			//IL_082c: Unknown result type (might be due to invalid IL or missing references)
			//IL_082d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0834: Unknown result type (might be due to invalid IL or missing references)
			//IL_0836: Unknown result type (might be due to invalid IL or missing references)
			//IL_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_083e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0840: Unknown result type (might be due to invalid IL or missing references)
			//IL_0841: Unknown result type (might be due to invalid IL or missing references)
			//IL_0848: Unknown result type (might be due to invalid IL or missing references)
			//IL_0864: Unknown result type (might be due to invalid IL or missing references)
			//IL_086e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0537: Unknown result type (might be due to invalid IL or missing references)
			//IL_0578: Unknown result type (might be due to invalid IL or missing references)
			//IL_057d: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Unknown result type (might be due to invalid IL or missing references)
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_0588: Unknown result type (might be due to invalid IL or missing references)
			//IL_058f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0599: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_059c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a3: Unknown result type (might be due to invalid IL or miss

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

Decompiled 3 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 3 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 3 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 3 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 3 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;
		}
	}
}