diff --git a/docs/api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html b/docs/api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html new file mode 100644 index 00000000..437b3a80 --- /dev/null +++ b/docs/api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html @@ -0,0 +1,163 @@ + + + + + + + + Enum StringLiteralParsingType + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+
Search Results for
+
+

+
+
    +
    +
    + + + +
    + + + + + + diff --git a/docs/api/System.Linq.Dynamic.Core.Config.html b/docs/api/System.Linq.Dynamic.Core.Config.html new file mode 100644 index 00000000..95d3d131 --- /dev/null +++ b/docs/api/System.Linq.Dynamic.Core.Config.html @@ -0,0 +1,129 @@ + + + + + + + + Namespace System.Linq.Dynamic.Core.Config + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + +
    +
    Search Results for
    +
    +

    +
    +
      +
      +
      + + + +
      + + + + + + diff --git a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html index 815a4cd4..3c214a79 100644 --- a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html +++ b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html @@ -88,32 +88,32 @@

      Inheritance
      - +
      System.Object
      AbstractDynamicLinqCustomTypeProvider
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.CustomTypeProviders
      @@ -151,7 +151,7 @@
      Parameters
      - IEnumerable<Assembly> + System.Collections.Generic.IEnumerable<System.Reflection.Assembly> assemblies

      The assemblies to process.

      @@ -168,8 +168,8 @@
      Returns
      - IEnumerable<Type> -

      IEnumerable<T>

      + System.Collections.Generic.IEnumerable<System.Type> +

      System.Collections.Generic.IEnumerable<T>

      @@ -179,7 +179,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable<Assembly>)

      @@ -188,7 +188,7 @@

      Declaration
      -
      protected IEnumerable<Type> GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable<Assembly> assemblies)
      +
      protected Type[] GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable<Assembly> assemblies)
      Parameters
      @@ -201,7 +201,7 @@
      Parameters
      - + @@ -218,8 +218,8 @@
      Returns
      - - + @@ -251,13 +251,13 @@
      Parameters
      - + - + @@ -274,8 +274,8 @@
      Returns
      - - + @@ -307,13 +307,13 @@
      Parameters
      - + - + @@ -330,8 +330,8 @@
      Returns
      - - + diff --git a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html index 60656171..f9b3fa15 100644 --- a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html +++ b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html @@ -86,12 +86,12 @@

      The default implementation for DefaultDynamicLinqCustomTypeProvider.

      Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute, and adds them as custom Dynamic Link types.

      Also provides functionality to resolve a Type in the current Application Domain.

      -

      This class is used as default for full .NET Framework, so not for .NET Core

      +

      This class is used as default for full .NET Framework and .NET Core App 2.x and higher.

      Inheritance
      - +
      System.Object
      DefaultDynamicLinqCustomTypeProvider
      @@ -115,25 +115,25 @@

      Inherited Members
      AbstractDynamicLinqCustomTypeProvider.GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable<Assembly>)
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core.CustomTypeProviders
      @@ -149,16 +149,52 @@

      Constructors Improve this Doc - View Source + View Source

      DefaultDynamicLinqCustomTypeProvider(Boolean)

      +

      Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class. +Backwards compatibility for issue https://github.com/zzzprojects/System.Linq.Dynamic.Core/issues/830.

      +
      +
      +
      Declaration
      +
      +
      [Obsolete("Please use the DefaultDynamicLinqCustomTypeProvider(ParsingConfig config, bool cacheCustomTypes = true) constructor.")]
      +public DefaultDynamicLinqCustomTypeProvider(bool cacheCustomTypes = true)
      +
      +
      Parameters
      +
      IEnumerable<Assembly>System.Collections.Generic.IEnumerable<System.Reflection.Assembly> assemblies

      The assemblies to process.

      IEnumerable<Type>

      IEnumerable<T>

      +
      System.Type[]

      Array of System.Type

      IEnumerable<Assembly>System.Collections.Generic.IEnumerable<System.Reflection.Assembly> assemblies

      The assemblies to inspect.

      StringSystem.String typeName

      The typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      IEnumerable<Assembly>System.Collections.Generic.IEnumerable<System.Reflection.Assembly> assemblies

      The assemblies to inspect.

      StringSystem.String simpleTypeName

      The simple typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      + + + + + + + + + + + + + + +
      TypeNameDescription
      System.BooleancacheCustomTypes

      Defines whether to cache the CustomTypes (including extension methods) which are found in the Application Domain. Default set to 'true'.

      +
      + + | + Improve this Doc + + + View Source + + +

      DefaultDynamicLinqCustomTypeProvider(ParsingConfig, Boolean)

      Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class.

      Declaration
      -
      public DefaultDynamicLinqCustomTypeProvider(bool cacheCustomTypes = true)
      +
      public DefaultDynamicLinqCustomTypeProvider(ParsingConfig config, bool cacheCustomTypes = true)
      Parameters
      @@ -171,7 +207,13 @@
      Parameters
      - + + + + + + @@ -185,7 +227,7 @@

      Methods Improve this Doc - View Source + View Source

      GetCustomTypes()

      @@ -206,8 +248,8 @@
      Returns
      - - + @@ -217,7 +259,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GetExtensionMethods()

      @@ -238,7 +280,7 @@
      Returns
      - + @@ -249,7 +291,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ResolveType(String)

      @@ -271,7 +313,7 @@
      Parameters
      - + @@ -288,8 +330,8 @@
      Returns
      - - + @@ -299,7 +341,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ResolveTypeBySimpleName(String)

      @@ -321,7 +363,7 @@
      Parameters
      - + @@ -338,8 +380,8 @@
      Returns
      - - + diff --git a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html index 5c5a5bbc..b8c8c062 100644 --- a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html +++ b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html @@ -88,165 +88,165 @@

      Inheritance
      - - +
      System.Object
      +
      System.Attribute
      DynamicLinqTypeAttribute
      Implements
      -
      _Attribute
      +
      System.Runtime.InteropServices._Attribute
      Inherited Members
      - Attribute.GetCustomAttributes(MemberInfo, Type) + System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Type)
      - Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(MemberInfo) + System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo)
      - Attribute.GetCustomAttributes(MemberInfo, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Boolean)
      - Attribute.IsDefined(MemberInfo, Type) + System.Attribute.IsDefined(System.Reflection.MemberInfo, System.Type)
      - Attribute.IsDefined(MemberInfo, Type, Boolean) + System.Attribute.IsDefined(System.Reflection.MemberInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttribute(MemberInfo, Type) + System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo, System.Type)
      - Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) + System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(ParameterInfo) + System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo)
      - Attribute.GetCustomAttributes(ParameterInfo, Type) + System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Type)
      - Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(ParameterInfo, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Boolean)
      - Attribute.IsDefined(ParameterInfo, Type) + System.Attribute.IsDefined(System.Reflection.ParameterInfo, System.Type)
      - Attribute.IsDefined(ParameterInfo, Type, Boolean) + System.Attribute.IsDefined(System.Reflection.ParameterInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttribute(ParameterInfo, Type) + System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo, System.Type)
      - Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) + System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(Module, Type) + System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Type)
      - Attribute.GetCustomAttributes(Module) + System.Attribute.GetCustomAttributes(System.Reflection.Module)
      - Attribute.GetCustomAttributes(Module, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Boolean)
      - Attribute.GetCustomAttributes(Module, Type, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Type, System.Boolean)
      - Attribute.IsDefined(Module, Type) + System.Attribute.IsDefined(System.Reflection.Module, System.Type)
      - Attribute.IsDefined(Module, Type, Boolean) + System.Attribute.IsDefined(System.Reflection.Module, System.Type, System.Boolean)
      - Attribute.GetCustomAttribute(Module, Type) + System.Attribute.GetCustomAttribute(System.Reflection.Module, System.Type)
      - Attribute.GetCustomAttribute(Module, Type, Boolean) + System.Attribute.GetCustomAttribute(System.Reflection.Module, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(Assembly, Type) + System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Type)
      - Attribute.GetCustomAttributes(Assembly, Type, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Type, System.Boolean)
      - Attribute.GetCustomAttributes(Assembly) + System.Attribute.GetCustomAttributes(System.Reflection.Assembly)
      - Attribute.GetCustomAttributes(Assembly, Boolean) + System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Boolean)
      - Attribute.IsDefined(Assembly, Type) + System.Attribute.IsDefined(System.Reflection.Assembly, System.Type)
      - Attribute.IsDefined(Assembly, Type, Boolean) + System.Attribute.IsDefined(System.Reflection.Assembly, System.Type, System.Boolean)
      - Attribute.GetCustomAttribute(Assembly, Type) + System.Attribute.GetCustomAttribute(System.Reflection.Assembly, System.Type)
      - Attribute.GetCustomAttribute(Assembly, Type, Boolean) + System.Attribute.GetCustomAttribute(System.Reflection.Assembly, System.Type, System.Boolean)
      - Attribute.Equals(Object) + System.Attribute.Equals(System.Object)
      - Attribute.GetHashCode() + System.Attribute.GetHashCode()
      - Attribute.Match(Object) + System.Attribute.Match(System.Object)
      - Attribute.IsDefaultAttribute() + System.Attribute.IsDefaultAttribute()
      - Attribute._Attribute.GetTypeInfoCount(UInt32) + System.Attribute.System.Runtime.InteropServices._Attribute.GetTypeInfoCount(System.UInt32)
      - Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) + System.Attribute.System.Runtime.InteropServices._Attribute.GetTypeInfo(System.UInt32, System.UInt32, System.IntPtr)
      - Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) + System.Attribute.System.Runtime.InteropServices._Attribute.GetIDsOfNames(System.Guid, System.IntPtr, System.UInt32, System.UInt32, System.IntPtr)
      - Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) + System.Attribute.System.Runtime.InteropServices._Attribute.Invoke(System.UInt32, System.Guid, System.UInt32, System.Int16, System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr)
      - Attribute.TypeId + System.Attribute.TypeId
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.CustomTypeProviders
      Assembly: System.Linq.Dynamic.Core.dll
      Syntax
      -
      [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, AllowMultiple = false, Inherited = false)]
      +    
      [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface, AllowMultiple = false, Inherited = false)]
       public sealed class DynamicLinqTypeAttribute : Attribute, _Attribute

      Implements

      - System.Runtime.InteropServices._Attribute + System.Runtime.InteropServices._Attribute
      diff --git a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html index b0b7f031..88325b0f 100644 --- a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html +++ b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html @@ -120,8 +120,8 @@
      Returns
      - - + @@ -152,7 +152,7 @@
      Returns
      - + @@ -185,7 +185,7 @@
      Parameters
      - + @@ -202,8 +202,8 @@
      Returns
      - - + @@ -235,7 +235,7 @@
      Parameters
      - + @@ -252,8 +252,8 @@
      Returns
      - - + diff --git a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.html b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.html index dbe11daf..91ba9460 100644 --- a/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.html +++ b/docs/api/System.Linq.Dynamic.Core.CustomTypeProviders.html @@ -94,7 +94,7 @@

      DefaultDynamicLinqCustomTypeProvider.

      Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute, and adds them as custom Dynamic Link types.

      Also provides functionality to resolve a Type in the current Application Domain.

      -

      This class is used as default for full .NET Framework, so not for .NET Core

      +

      This class is used as default for full .NET Framework and .NET Core App 2.x and higher.

      DynamicLinqTypeAttribute

      Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type.

      diff --git a/docs/api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html b/docs/api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html index 66ce87d3..2ac920ba 100644 --- a/docs/api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html +++ b/docs/api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html @@ -88,7 +88,7 @@

      Inheritance
      - +
      System.Object
      DefaultQueryableAnalyzer
      @@ -98,25 +98,25 @@
      Implements
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core
      @@ -154,13 +154,13 @@
      Parameters

      - + - + @@ -177,7 +177,7 @@
      Returns
      - + diff --git a/docs/api/System.Linq.Dynamic.Core.DynamicClass.html b/docs/api/System.Linq.Dynamic.Core.DynamicClass.html index 60696707..bc4daa81 100644 --- a/docs/api/System.Linq.Dynamic.Core.DynamicClass.html +++ b/docs/api/System.Linq.Dynamic.Core.DynamicClass.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      DynamicClass
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -150,7 +150,7 @@
      Parameters
      - + @@ -167,7 +167,7 @@
      Returns
      - + @@ -200,7 +200,7 @@
      Parameters
      - + @@ -266,13 +266,13 @@
      Parameters
      - + - + @@ -306,7 +306,7 @@
      Parameters
      - + diff --git a/docs/api/System.Linq.Dynamic.Core.DynamicClassFactory.html b/docs/api/System.Linq.Dynamic.Core.DynamicClassFactory.html index c04be03a..33fbaf8d 100644 --- a/docs/api/System.Linq.Dynamic.Core.DynamicClassFactory.html +++ b/docs/api/System.Linq.Dynamic.Core.DynamicClassFactory.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      DynamicClassFactory
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -128,11 +128,11 @@

      Methods Improve this Doc - View Source + View Source

      CreateGenericComparerType(Type, Type)

      -

      Create a GenericComparerType based on the GenericType and an instance of a IComparer.

      +

      Create a GenericComparerType based on the GenericType and an instance of a System.Collections.IComparer.

      Declaration
      @@ -150,15 +150,15 @@
      Parameters
      - + - + - @@ -173,7 +173,7 @@
      Returns
      - + @@ -184,7 +184,7 @@
      Returns
      Improve this Doc - View Source + View Source

      CreateType(IList<DynamicProperty>, Boolean)

      @@ -209,13 +209,13 @@
      Parameters
      - + - + @@ -232,7 +232,7 @@
      Returns
      - + @@ -241,10 +241,9 @@
      Returns
      Examples
      DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty("Name", typeof(string)), new DynamicProperty("Birthday", typeof(DateTime)) };
       Type type = DynamicClassFactory.CreateType(props);
      -DynamicClass dynamicClass = Activator.CreateInstance(type) as DynamicClass;
      -dynamicClass.SetDynamicProperty("Name", "Albert");
      -dynamicClass.SetDynamicProperty("Birthday", new DateTime(1879, 3, 14));
      -Console.WriteLine(dynamicClass);
      +DynamicClass dynamicClass = (DynamicClass) Activator.CreateInstance(type)!; +dynamicClass.SetDynamicPropertyValue("Name", "Albert"); +dynamicClass.SetDynamicPropertyValue("Birthday", new DateTime(1879, 3, 14));
      @@ -257,7 +256,7 @@

      Class DynamicEnumerableExtensions

      -

      Define extensions on IEnumerable.

      +

      Define extensions on System.Collections.IEnumerable.

      Inheritance
      - +
      System.Object
      DynamicEnumerableExtensions
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core
      @@ -132,7 +132,7 @@

      Methods

      ToDynamicArray(IEnumerable)

      -

      Creates an array of dynamic objects from a IEnumerable.

      +

      Creates an array of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -150,9 +150,9 @@
      Parameters
      - + - @@ -167,7 +167,7 @@
      Returns
      - + @@ -182,7 +182,7 @@
      Returns

      ToDynamicArray(IEnumerable, Type)

      -

      Creates an array of dynamic objects from a IEnumerable.

      +

      Creates an array of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -200,15 +200,15 @@
      Parameters
      - + - - + - @@ -223,7 +223,7 @@
      Returns
      - + @@ -238,7 +238,7 @@
      Returns

      ToDynamicArray<T>(IEnumerable)

      -

      Creates an array of dynamic objects from a IEnumerable.

      +

      Creates an array of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -256,9 +256,9 @@
      Parameters
      - + - @@ -304,7 +304,7 @@
      Type Parameters

      ToDynamicList(IEnumerable)

      -

      Creates a list of dynamic objects from a IEnumerable.

      +

      Creates a list of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -322,9 +322,9 @@
      Parameters
      - + - @@ -339,7 +339,7 @@
      Returns
      - + @@ -354,7 +354,7 @@
      Returns

      ToDynamicList(IEnumerable, Type)

      -

      Creates a list of dynamic objects from a IEnumerable.

      +

      Creates a list of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -372,15 +372,15 @@
      Parameters
      - + - - + - @@ -395,7 +395,7 @@
      Returns
      - + @@ -410,7 +410,7 @@
      Returns

      ToDynamicList<T>(IEnumerable)

      -

      Creates a list of dynamic objects from a IEnumerable.

      +

      Creates a list of dynamic objects from a System.Collections.IEnumerable.

      Declaration
      @@ -428,9 +428,9 @@
      Parameters
      - + - @@ -445,7 +445,7 @@
      Returns
      - + diff --git a/docs/api/System.Linq.Dynamic.Core.DynamicExpressionParser.html b/docs/api/System.Linq.Dynamic.Core.DynamicExpressionParser.html index 95ce693d..799d05f3 100644 --- a/docs/api/System.Linq.Dynamic.Core.DynamicExpressionParser.html +++ b/docs/api/System.Linq.Dynamic.Core.DynamicExpressionParser.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      DynamicExpressionParser
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -128,7 +128,7 @@

      Methods Improve this Doc - View Source + View Source

      ParseLambda(Boolean, ParameterExpression[], Type, String, Object[])

      @@ -151,31 +151,31 @@
      Parameters
      - + - + - + - + - + @@ -192,8 +192,8 @@
      Returns
      - - + @@ -203,7 +203,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Boolean, Type, Type, String, Object[])

      @@ -226,31 +226,31 @@
      Parameters
      - + - + - + - + - + @@ -267,8 +267,8 @@
      Returns
      - - + @@ -307,31 +307,31 @@
      Parameters
      - + - + - + - + - + @@ -348,8 +348,8 @@
      Returns
      - - + @@ -388,25 +388,25 @@
      Parameters
      - + - + - + - + @@ -423,8 +423,8 @@
      Returns
      - - + @@ -434,7 +434,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object[])

      @@ -463,31 +463,31 @@
      Parameters
      - + - + - + - + - + @@ -504,8 +504,8 @@
      Returns
      - - + @@ -515,7 +515,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(ParsingConfig, ParameterExpression[], Type, String, Object[])

      @@ -544,25 +544,25 @@
      Parameters
      - + - + - + - + @@ -579,8 +579,8 @@
      Returns
      - - + @@ -590,7 +590,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(ParsingConfig, Type, String, Object[])

      @@ -619,19 +619,19 @@
      Parameters
      - + - + - + @@ -648,8 +648,8 @@
      Returns
      - - + @@ -659,7 +659,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(ParsingConfig, Type, Type, String, Object[])

      @@ -688,25 +688,25 @@
      Parameters
      - + - + - + - + @@ -723,8 +723,8 @@
      Returns
      - - + @@ -734,7 +734,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(ParameterExpression[], Type, String, Object[])

      @@ -757,25 +757,25 @@
      Parameters
      - + - + - + - + @@ -792,8 +792,8 @@
      Returns
      - - + @@ -826,7 +826,7 @@
      Parameters
      - + @@ -838,31 +838,31 @@
      Parameters
      - + - + - + - + - + @@ -879,8 +879,8 @@
      Returns
      - - + @@ -913,7 +913,7 @@
      Parameters
      - + @@ -925,25 +925,25 @@
      Parameters
      - + - + - + - + @@ -960,8 +960,8 @@
      Returns
      - - + @@ -971,7 +971,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, ParsingConfig, Boolean, Type, Type, String, Object[])

      @@ -994,7 +994,7 @@
      Parameters
      - + @@ -1006,31 +1006,31 @@
      Parameters
      - + - + - + - + - + @@ -1047,8 +1047,8 @@
      Returns
      - - + @@ -1058,7 +1058,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, ParsingConfig, ParameterExpression[], Type, String, Object[])

      @@ -1081,7 +1081,7 @@
      Parameters
      - + @@ -1093,25 +1093,25 @@
      Parameters
      - + - + - + - + @@ -1128,8 +1128,8 @@
      Returns
      - - + @@ -1139,7 +1139,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, ParsingConfig, Type, String, Object[])

      @@ -1162,7 +1162,7 @@
      Parameters
      - + @@ -1174,19 +1174,19 @@
      Parameters
      - + - + - + @@ -1203,8 +1203,8 @@
      Returns
      - - + @@ -1214,7 +1214,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, ParsingConfig, Type, Type, String, Object[])

      @@ -1237,7 +1237,7 @@
      Parameters
      - + @@ -1249,25 +1249,25 @@
      Parameters
      - + - + - + - + @@ -1284,8 +1284,8 @@
      Returns
      - - + @@ -1295,7 +1295,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, ParameterExpression[], Type, String, Object[])

      @@ -1318,31 +1318,31 @@
      Parameters
      - + - + - + - + - + @@ -1359,8 +1359,8 @@
      Returns
      - - + @@ -1370,7 +1370,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, String, Object[])

      @@ -1393,19 +1393,19 @@
      Parameters
      - + - + - + @@ -1422,8 +1422,8 @@
      Returns
      - - + @@ -1433,7 +1433,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda(Type, Type, String, Object[])

      @@ -1456,25 +1456,25 @@
      Parameters
      - + - + - + - + @@ -1491,8 +1491,8 @@
      Returns
      - - + @@ -1502,7 +1502,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseLambda<TResult>(ParsingConfig, Boolean, ParameterExpression[], String, Object[])

      @@ -1531,25 +1531,25 @@
      Parameters
      - + - + - + - + @@ -1566,8 +1566,8 @@
      Returns
      - - + @@ -1622,19 +1622,19 @@
      Parameters
      - + - + - + @@ -1651,8 +1651,8 @@
      Returns
      - - + @@ -1678,7 +1678,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      ParseLambda<TResult>(Type, ParsingConfig, Boolean, ParameterExpression[], String, Object[])

      @@ -1701,7 +1701,7 @@
      Parameters
      - + @@ -1713,25 +1713,25 @@
      Parameters
      - + - + - + - + @@ -1748,8 +1748,8 @@
      Returns
      - - + @@ -1798,7 +1798,7 @@
      Parameters
      - + @@ -1810,19 +1810,19 @@
      Parameters
      - + - + - + @@ -1839,8 +1839,8 @@
      Returns
      - - + @@ -1866,7 +1866,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      ParseLambda<T, TResult>(ParsingConfig, Boolean, String, Object[])

      @@ -1895,19 +1895,19 @@
      Parameters
      - + - + - + @@ -1924,8 +1924,8 @@
      Returns
      - - + @@ -1956,7 +1956,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      ParseLambda<T, TResult>(Type, ParsingConfig, Boolean, String, Object[])

      @@ -1979,7 +1979,7 @@
      Parameters
      - + @@ -1991,19 +1991,19 @@
      Parameters
      - + - + - + @@ -2020,8 +2020,8 @@
      Returns
      - - + diff --git a/docs/api/System.Linq.Dynamic.Core.DynamicProperty.html b/docs/api/System.Linq.Dynamic.Core.DynamicProperty.html index aa122e67..2f661ea2 100644 --- a/docs/api/System.Linq.Dynamic.Core.DynamicProperty.html +++ b/docs/api/System.Linq.Dynamic.Core.DynamicProperty.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      DynamicProperty
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -150,13 +150,13 @@
      Parameters
      - + - + @@ -191,7 +191,7 @@
      Property Value
      - + @@ -223,7 +223,7 @@
      Property Value
      - + diff --git a/docs/api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html b/docs/api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html index f72aca2c..a4bbcc8b 100644 --- a/docs/api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html +++ b/docs/api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html @@ -83,38 +83,38 @@

      Class DynamicQueryableExtensions

      -

      Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement IQueryable. +

      Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement System.Linq.IQueryable. It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by.

      Inheritance
      - +
      System.Object
      DynamicQueryableExtensions
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core
      @@ -130,7 +130,7 @@

      Methods Improve this Doc - View Source + View Source

      Aggregate(IQueryable, String, String)

      @@ -152,19 +152,19 @@
      Parameters
      - + - + - + @@ -181,7 +181,7 @@
      Returns
      - + @@ -192,7 +192,7 @@
      Returns
      Improve this Doc - View Source + View Source

      All(IQueryable, ParsingConfig, String, Object[])

      @@ -215,7 +215,7 @@
      Parameters
      - + @@ -227,13 +227,13 @@
      Parameters
      - + - + @@ -250,7 +250,7 @@
      Returns
      - + @@ -261,7 +261,7 @@
      Returns
      Improve this Doc - View Source + View Source

      All(IQueryable, String, Object[])

      @@ -284,19 +284,19 @@
      Parameters
      - + - + - + @@ -313,7 +313,7 @@
      Returns
      - + @@ -324,7 +324,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Any(IQueryable)

      @@ -346,7 +346,7 @@
      Parameters
      - + @@ -363,7 +363,7 @@
      Returns
      - + @@ -378,7 +378,7 @@
      Improve this Doc - View Source + View Source

      Any(IQueryable, ParsingConfig, String, Object[])

      @@ -401,7 +401,7 @@
      Parameters
      - + @@ -413,13 +413,13 @@
      Parameters
      - + - + @@ -436,7 +436,7 @@
      Returns
      - + @@ -453,7 +453,7 @@
      Improve this Doc - View Source + View Source

      Any(IQueryable, LambdaExpression)

      @@ -475,13 +475,13 @@
      Parameters
      - + - + @@ -498,7 +498,7 @@
      Returns
      - + @@ -509,7 +509,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Any(IQueryable, String, Object[])

      @@ -531,17 +531,17 @@
      Parameters
      - + - + - + @@ -557,7 +557,7 @@
      Returns
      - + @@ -568,11 +568,11 @@
      Returns
      Improve this Doc - View Source + View Source

      AsDynamicEnumerable(IQueryable)

      -

      Returns the input typed as IEnumerable<T> of Object./>

      +

      Returns the input typed as System.Collections.Generic.IEnumerable<T> of System.Object./>

      Declaration
      @@ -590,9 +590,9 @@
      Parameters
      - + - @@ -607,8 +607,8 @@
      Returns
      - - + @@ -618,7 +618,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Average(IQueryable)

      @@ -641,7 +641,7 @@
      Parameters
      - + @@ -658,7 +658,7 @@
      Returns
      - + @@ -674,7 +674,7 @@
      Improve this Doc - View Source + View Source

      Average(IQueryable, ParsingConfig, String, Object[])

      @@ -697,7 +697,7 @@
      Parameters
      - + @@ -709,13 +709,13 @@
      Parameters
      - + - + @@ -732,7 +732,7 @@
      Returns
      - + @@ -747,7 +747,7 @@
      Improve this Doc - View Source + View Source

      Average(IQueryable, LambdaExpression)

      @@ -770,13 +770,13 @@
      Parameters
      - + - + @@ -793,7 +793,7 @@
      Returns
      - + @@ -804,7 +804,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Average(IQueryable, String, Object[])

      @@ -827,17 +827,17 @@
      Parameters
      - + - + - + @@ -853,7 +853,7 @@
      Returns
      - + @@ -864,11 +864,11 @@
      Returns
      Improve this Doc - View Source + View Source

      Cast(IQueryable, ParsingConfig, String)

      -

      Converts the elements of an IQueryable to the specified type.

      +

      Converts the elements of an System.Linq.IQueryable to the specified type.

      Declaration
      @@ -886,9 +886,9 @@
      Parameters
      - + - @@ -898,7 +898,7 @@
      Parameters
      - + @@ -915,8 +915,8 @@
      Returns
      - - + @@ -926,11 +926,11 @@
      Returns
      Improve this Doc - View Source + View Source

      Cast(IQueryable, String)

      -

      Converts the elements of an IQueryable to the specified type.

      +

      Converts the elements of an System.Linq.IQueryable to the specified type.

      Declaration
      @@ -948,13 +948,13 @@
      Parameters
      - + - - + @@ -971,8 +971,8 @@
      Returns
      - - + @@ -982,11 +982,11 @@
      Returns
      Improve this Doc - View Source + View Source

      Cast(IQueryable, Type)

      -

      Converts the elements of an IQueryable to the specified type.

      +

      Converts the elements of an System.Linq.IQueryable to the specified type.

      Declaration
      @@ -1004,13 +1004,13 @@
      Parameters
      - + - - + @@ -1027,8 +1027,8 @@
      Returns
      - - + @@ -1038,7 +1038,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Count(IQueryable)

      @@ -1060,9 +1060,9 @@
      Parameters
      - + - @@ -1077,7 +1077,7 @@
      Returns
      - + @@ -1092,7 +1092,7 @@
      Improve this Doc - View Source + View Source

      Count(IQueryable, ParsingConfig, String, Object[])

      @@ -1115,9 +1115,9 @@
      Parameters
      - + - @@ -1127,13 +1127,13 @@
      Parameters
      - + - + @@ -1150,7 +1150,7 @@
      Returns
      - + @@ -1167,7 +1167,7 @@
      Improve this Doc - View Source + View Source

      Count(IQueryable, LambdaExpression)

      @@ -1189,13 +1189,13 @@
      Parameters
      - + - - + @@ -1212,7 +1212,7 @@
      Returns
      - + @@ -1223,7 +1223,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Count(IQueryable, String, Object[])

      @@ -1245,17 +1245,17 @@
      Parameters
      - + - + - + @@ -1271,7 +1271,7 @@
      Returns
      - + @@ -1282,7 +1282,7 @@
      Returns
      Improve this Doc - View Source + View Source

      DefaultIfEmpty(IQueryable)

      @@ -1304,9 +1304,9 @@
      Parameters
      - + - @@ -1321,8 +1321,8 @@
      Returns
      - - + @@ -1335,7 +1335,7 @@
      Improve this Doc - View Source + View Source

      DefaultIfEmpty(IQueryable, Object)

      @@ -1357,13 +1357,13 @@
      Parameters
      - + - - + @@ -1380,8 +1380,8 @@
      Returns
      - - + @@ -1394,7 +1394,7 @@
      Improve this Doc - View Source + View Source

      Distinct(IQueryable)

      @@ -1416,7 +1416,7 @@
      Parameters
      - + @@ -1433,8 +1433,8 @@
      Returns
      - - + @@ -1449,7 +1449,7 @@
      Improve this Doc - View Source + View Source

      First(IQueryable)

      @@ -1471,9 +1471,9 @@
      Parameters
      - + - @@ -1488,7 +1488,7 @@
      Returns
      - + @@ -1499,7 +1499,7 @@
      Returns
      Improve this Doc - View Source + View Source

      First(IQueryable, ParsingConfig, String, Object[])

      @@ -1522,9 +1522,9 @@
      Parameters
      - + - @@ -1534,13 +1534,13 @@
      Parameters
      - + - + @@ -1557,7 +1557,7 @@
      Returns
      - + @@ -1568,7 +1568,7 @@
      Returns
      Improve this Doc - View Source + View Source

      First(IQueryable, LambdaExpression)

      @@ -1590,13 +1590,13 @@
      Parameters
      - + - - + @@ -1613,7 +1613,7 @@
      Returns
      - + @@ -1624,7 +1624,7 @@
      Returns
      Improve this Doc - View Source + View Source

      First(IQueryable, String, Object[])

      @@ -1646,17 +1646,17 @@
      Parameters
      - + - + - + @@ -1672,7 +1672,7 @@
      Returns
      - + @@ -1683,7 +1683,7 @@
      Returns
      Improve this Doc - View Source + View Source

      FirstOrDefault(IQueryable)

      @@ -1705,9 +1705,9 @@
      Parameters
      - + - @@ -1722,7 +1722,7 @@
      Returns
      - + @@ -1733,7 +1733,7 @@
      Returns
      Improve this Doc - View Source + View Source

      FirstOrDefault(IQueryable, ParsingConfig, String, Object[])

      @@ -1756,9 +1756,9 @@
      Parameters
      - + - @@ -1768,13 +1768,13 @@
      Parameters
      - + - + @@ -1791,7 +1791,7 @@
      Returns
      - + @@ -1802,7 +1802,7 @@
      Returns
      Improve this Doc - View Source + View Source

      FirstOrDefault(IQueryable, LambdaExpression)

      @@ -1824,13 +1824,13 @@
      Parameters
      - + - - + @@ -1847,7 +1847,7 @@
      Returns
      - + @@ -1858,7 +1858,7 @@
      Returns
      Improve this Doc - View Source + View Source

      FirstOrDefault(IQueryable, String, Object[])

      @@ -1880,17 +1880,17 @@
      Parameters
      - + - + - + @@ -1906,7 +1906,7 @@
      Returns
      - + @@ -1917,7 +1917,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, IEqualityComparer, Object[])

      @@ -1940,9 +1940,9 @@
      Parameters
      - + - @@ -1952,19 +1952,19 @@
      Parameters
      - + - + - + @@ -1981,8 +1981,8 @@
      Returns
      - - + @@ -1992,7 +1992,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, Object[])

      @@ -2016,9 +2016,9 @@
      Parameters
      - + - @@ -2028,13 +2028,13 @@
      Parameters
      - + - + @@ -2051,8 +2051,8 @@
      Returns
      - - + @@ -2066,7 +2066,7 @@
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, String)

      @@ -2089,9 +2089,9 @@
      Parameters
      - + - @@ -2101,13 +2101,13 @@
      Parameters
      - + - + @@ -2124,8 +2124,8 @@
      Returns
      - - + @@ -2139,7 +2139,7 @@
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer)

      @@ -2162,9 +2162,9 @@
      Parameters
      - + - @@ -2174,19 +2174,19 @@
      Parameters
      - + - + - + @@ -2203,8 +2203,8 @@
      Returns
      - - + @@ -2214,7 +2214,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer, Object[])

      @@ -2237,9 +2237,9 @@
      Parameters
      - + - @@ -2249,25 +2249,25 @@
      Parameters
      - + - + - + - + @@ -2284,8 +2284,8 @@
      Returns
      - - + @@ -2295,7 +2295,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, ParsingConfig, String, String, Object[])

      @@ -2319,9 +2319,9 @@
      Parameters
      - + - @@ -2331,19 +2331,19 @@
      Parameters
      - + - + - + @@ -2360,8 +2360,8 @@
      Returns
      - - + @@ -2375,7 +2375,7 @@
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, IEqualityComparer, Object[])

      @@ -2398,22 +2398,22 @@
      Parameters
      - + - + - + - + @@ -2429,8 +2429,8 @@
      Returns
      - - + @@ -2440,7 +2440,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, Object[])

      @@ -2464,17 +2464,17 @@
      Parameters
      - + - + - + @@ -2490,8 +2490,8 @@
      Returns
      - - + @@ -2501,7 +2501,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, String)

      @@ -2524,17 +2524,17 @@
      Parameters
      - + - + - + @@ -2550,8 +2550,8 @@
      Returns
      - - + @@ -2561,7 +2561,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, String, IEqualityComparer)

      @@ -2584,22 +2584,22 @@
      Parameters
      - + - + - + - + @@ -2615,8 +2615,8 @@
      Returns
      - - + @@ -2626,7 +2626,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, String, IEqualityComparer, Object[])

      @@ -2649,27 +2649,27 @@
      Parameters
      - + - + - + - + - + @@ -2685,8 +2685,8 @@
      Returns
      - - + @@ -2696,7 +2696,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupBy(IQueryable, String, String, Object[])

      @@ -2720,22 +2720,22 @@
      Parameters
      - + - + - + - + @@ -2751,8 +2751,8 @@
      Returns
      - - + @@ -2762,7 +2762,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupByMany<TElement>(IEnumerable<TElement>, Func<TElement, Object>[])

      @@ -2785,13 +2785,13 @@
      Parameters
      - + - - + @@ -2808,8 +2808,8 @@
      Returns
      - - + @@ -2834,7 +2834,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      GroupByMany<TElement>(IEnumerable<TElement>, ParsingConfig, String[])

      @@ -2857,9 +2857,9 @@
      Parameters
      - + - @@ -2869,9 +2869,9 @@
      Parameters
      - + - @@ -2886,8 +2886,8 @@
      Returns
      - - + @@ -2912,7 +2912,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      GroupByMany<TElement>(IEnumerable<TElement>, String[])

      @@ -2935,12 +2935,12 @@
      Parameters
      - + - + @@ -2956,8 +2956,8 @@
      Returns
      - - + @@ -2982,7 +2982,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      GroupJoin(IQueryable, IEnumerable, String, String, String, Object[])

      @@ -3004,32 +3004,32 @@
      Parameters
      - + - + - + - + - + - + @@ -3045,8 +3045,8 @@
      Returns
      - - + @@ -3056,7 +3056,7 @@
      Returns
      Improve this Doc - View Source + View Source

      GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[])

      @@ -3078,7 +3078,7 @@
      Parameters
      - + @@ -3090,31 +3090,31 @@
      Parameters
      - + - + - + - + - + @@ -3131,8 +3131,8 @@
      Returns
      - - + @@ -3142,7 +3142,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Join(IQueryable, IEnumerable, String, String, String, Object[])

      @@ -3164,32 +3164,32 @@
      Parameters
      - + - + - + - + - + - + @@ -3205,8 +3205,8 @@
      Returns
      - - + @@ -3216,7 +3216,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[])

      @@ -3238,7 +3238,7 @@
      Parameters
      - + @@ -3250,31 +3250,31 @@
      Parameters
      - + - + - + - + - + @@ -3291,8 +3291,8 @@
      Returns
      - - + @@ -3302,7 +3302,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Join<TElement>(IQueryable<TElement>, IEnumerable<TElement>, String, String, String, Object[])

      @@ -3324,32 +3324,32 @@
      Parameters
      - + - + - + - + - + - + @@ -3365,8 +3365,8 @@
      Returns
      - - + @@ -3395,7 +3395,7 @@
      Improve this Doc - View Source + View Source

      Join<TElement>(IQueryable<TElement>, ParsingConfig, IEnumerable<TElement>, String, String, String, Object[])

      @@ -3417,7 +3417,7 @@
      Parameters
      - + @@ -3429,31 +3429,31 @@
      Parameters
      - + - + - + - + - + @@ -3470,8 +3470,8 @@
      Returns
      - - + @@ -3500,7 +3500,7 @@
      Improve this Doc - View Source + View Source

      Last(IQueryable)

      @@ -3522,9 +3522,9 @@
      Parameters
      - + - @@ -3539,7 +3539,7 @@
      Returns
      - + @@ -3550,7 +3550,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Last(IQueryable, ParsingConfig, String, Object[])

      @@ -3572,9 +3572,9 @@
      Parameters
      - + - @@ -3584,13 +3584,13 @@
      Parameters
      - + - + @@ -3607,7 +3607,7 @@
      Returns
      - + @@ -3618,7 +3618,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Last(IQueryable, LambdaExpression)

      @@ -3640,13 +3640,13 @@
      Parameters
      - + - - + @@ -3663,7 +3663,7 @@
      Returns
      - + @@ -3674,7 +3674,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Last(IQueryable, String, Object[])

      @@ -3696,17 +3696,17 @@
      Parameters
      - + - + - + @@ -3722,7 +3722,7 @@
      Returns
      - + @@ -3733,7 +3733,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LastOrDefault(IQueryable)

      @@ -3755,9 +3755,9 @@
      Parameters
      - + - @@ -3772,7 +3772,7 @@
      Returns
      - + @@ -3783,7 +3783,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LastOrDefault(IQueryable, ParsingConfig, String, Object[])

      @@ -3805,9 +3805,9 @@
      Parameters
      - + - @@ -3817,13 +3817,13 @@
      Parameters
      - + - + @@ -3840,7 +3840,7 @@
      Returns
      - + @@ -3851,7 +3851,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LastOrDefault(IQueryable, LambdaExpression)

      @@ -3873,13 +3873,13 @@
      Parameters
      - + - - + @@ -3896,7 +3896,7 @@
      Returns
      - + @@ -3907,7 +3907,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LastOrDefault(IQueryable, String, Object[])

      @@ -3929,17 +3929,17 @@
      Parameters
      - + - + - + @@ -3955,7 +3955,7 @@
      Returns
      - + @@ -3966,7 +3966,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LongCount(IQueryable)

      @@ -3988,9 +3988,9 @@
      Parameters
      - + - @@ -4005,7 +4005,7 @@
      Returns
      - + @@ -4020,7 +4020,7 @@
      Improve this Doc - View Source + View Source

      LongCount(IQueryable, ParsingConfig, String, Object[])

      @@ -4043,9 +4043,9 @@
      Parameters
      - + - @@ -4055,13 +4055,13 @@
      Parameters
      - + - + @@ -4078,7 +4078,7 @@
      Returns
      - + @@ -4095,7 +4095,7 @@
      Improve this Doc - View Source + View Source

      LongCount(IQueryable, LambdaExpression)

      @@ -4117,13 +4117,13 @@
      Parameters
      - + - - + @@ -4140,7 +4140,7 @@
      Returns
      - + @@ -4151,7 +4151,7 @@
      Returns
      Improve this Doc - View Source + View Source

      LongCount(IQueryable, String, Object[])

      @@ -4173,17 +4173,17 @@
      Parameters
      - + - + - + @@ -4199,7 +4199,7 @@
      Returns
      - + @@ -4210,7 +4210,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Max(IQueryable)

      @@ -4233,7 +4233,7 @@
      Parameters
      - + @@ -4250,7 +4250,7 @@
      Returns
      - + @@ -4266,7 +4266,7 @@
      Improve this Doc - View Source + View Source

      Max(IQueryable, ParsingConfig, String, Object[])

      @@ -4289,7 +4289,7 @@
      Parameters
      - + @@ -4301,13 +4301,13 @@
      Parameters
      - + - + @@ -4324,7 +4324,7 @@
      Returns
      - + @@ -4339,7 +4339,7 @@
      Improve this Doc - View Source + View Source

      Max(IQueryable, LambdaExpression)

      @@ -4362,13 +4362,13 @@
      Parameters
      - + - + @@ -4385,7 +4385,7 @@
      Returns
      - + @@ -4396,7 +4396,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Max(IQueryable, String, Object[])

      @@ -4419,17 +4419,17 @@
      Parameters
      - + - + - + @@ -4445,7 +4445,7 @@
      Returns
      - + @@ -4456,7 +4456,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Min(IQueryable)

      @@ -4479,7 +4479,7 @@
      Parameters
      - + @@ -4496,7 +4496,7 @@
      Returns
      - + @@ -4512,7 +4512,7 @@
      Improve this Doc - View Source + View Source

      Min(IQueryable, ParsingConfig, String, Object[])

      @@ -4535,7 +4535,7 @@
      Parameters
      - + @@ -4547,13 +4547,13 @@
      Parameters
      - + - + @@ -4570,7 +4570,7 @@
      Returns
      - + @@ -4585,7 +4585,7 @@
      Improve this Doc - View Source + View Source

      Min(IQueryable, LambdaExpression)

      @@ -4608,13 +4608,13 @@
      Parameters
      - + - + @@ -4631,7 +4631,7 @@
      Returns
      - + @@ -4642,7 +4642,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Min(IQueryable, String, Object[])

      @@ -4665,17 +4665,17 @@
      Parameters
      - + - + - + @@ -4691,7 +4691,7 @@
      Returns
      - + @@ -4702,11 +4702,11 @@
      Returns
      Improve this Doc - View Source + View Source

      OfType(IQueryable, ParsingConfig, String)

      -

      Filters the elements of an IQueryable based on a specified type.

      +

      Filters the elements of an System.Linq.IQueryable based on a specified type.

      Declaration
      @@ -4724,9 +4724,9 @@
      Parameters
      - + - @@ -4736,7 +4736,7 @@
      Parameters
      - + @@ -4753,7 +4753,7 @@
      Returns
      - + @@ -4764,11 +4764,11 @@
      Returns
      Improve this Doc - View Source + View Source

      OfType(IQueryable, String)

      -

      Filters the elements of an IQueryable based on a specified type.

      +

      Filters the elements of an System.Linq.IQueryable based on a specified type.

      Declaration
      @@ -4786,13 +4786,13 @@
      Parameters
      - + - - + @@ -4809,7 +4809,7 @@
      Returns
      - + @@ -4820,11 +4820,11 @@
      Returns
      Improve this Doc - View Source + View Source

      OfType(IQueryable, Type)

      -

      Filters the elements of an IQueryable based on a specified type.

      +

      Filters the elements of an System.Linq.IQueryable based on a specified type.

      Declaration
      @@ -4842,13 +4842,13 @@
      Parameters
      - + - - + @@ -4865,7 +4865,7 @@
      Returns
      - + @@ -4876,7 +4876,7 @@
      Returns
      Improve this Doc - View Source + View Source

      OrderBy(IQueryable, ParsingConfig, String, IComparer, Object[])

      @@ -4898,7 +4898,7 @@
      Parameters
      - + @@ -4910,19 +4910,19 @@
      Parameters
      - + - + - + @@ -4939,8 +4939,8 @@
      Returns
      - - + @@ -4950,7 +4950,7 @@
      Returns
      Improve this Doc - View Source + View Source

      OrderBy(IQueryable, ParsingConfig, String, Object[])

      @@ -4972,7 +4972,7 @@
      Parameters
      - + @@ -4984,13 +4984,13 @@
      Parameters
      - + - + @@ -5007,8 +5007,8 @@
      Returns
      - - + @@ -5023,7 +5023,7 @@
      Improve this Doc - View Source + View Source

      OrderBy(IQueryable, String, IComparer, Object[])

      @@ -5045,22 +5045,22 @@
      Parameters
      - + - + - + - + @@ -5076,8 +5076,8 @@
      Returns
      - - + @@ -5087,7 +5087,7 @@
      Returns
      Improve this Doc - View Source + View Source

      OrderBy(IQueryable, String, Object[])

      @@ -5109,17 +5109,17 @@
      Parameters
      - + - + - + @@ -5135,8 +5135,8 @@
      Returns
      - - + @@ -5146,7 +5146,7 @@
      Returns
      Improve this Doc - View Source + View Source

      OrderBy<TSource>(IQueryable<TSource>, ParsingConfig, String, IComparer, Object[])

      @@ -5168,7 +5168,7 @@
      Parameters
      - + @@ -5180,19 +5180,19 @@
      Parameters
      - + - + - + @@ -5209,8 +5209,8 @@
      Returns
      - - + @@ -5236,7 +5236,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      OrderBy<TSource>(IQueryable<TSource>, ParsingConfig, String, Object[])

      @@ -5258,7 +5258,7 @@
      Parameters
      - + @@ -5270,13 +5270,13 @@
      Parameters
      - + - + @@ -5293,8 +5293,8 @@
      Returns
      - - + @@ -5325,7 +5325,7 @@
      Improve this Doc - View Source + View Source

      OrderBy<TSource>(IQueryable<TSource>, String, IComparer, Object[])

      @@ -5347,25 +5347,25 @@
      Parameters
      - + - + - + - + @@ -5382,8 +5382,8 @@
      Returns
      - - + @@ -5409,7 +5409,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      OrderBy<TSource>(IQueryable<TSource>, String, Object[])

      @@ -5431,17 +5431,17 @@
      Parameters
      - + - + - + @@ -5457,8 +5457,8 @@
      Returns
      - - + @@ -5484,7 +5484,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      Page(IQueryable, Int32, Int32)

      @@ -5506,19 +5506,19 @@
      Parameters
      - + - + - + @@ -5535,8 +5535,8 @@
      Returns
      - - + @@ -5546,7 +5546,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Page<TSource>(IQueryable<TSource>, Int32, Int32)

      @@ -5568,19 +5568,19 @@
      Parameters
      - + - + - + @@ -5597,8 +5597,8 @@
      Returns
      - - + @@ -5624,7 +5624,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      PageResult(IQueryable, Int32, Int32, Nullable<Int32>)

      @@ -5646,25 +5646,25 @@
      Parameters
      - + - + - + - + @@ -5692,7 +5692,7 @@
      Returns
      Improve this Doc - View Source + View Source

      PageResult<TSource>(IQueryable<TSource>, Int32, Int32, Nullable<Int32>)

      @@ -5714,25 +5714,25 @@
      Parameters
      - + - + - + - + @@ -5776,7 +5776,7 @@
      Type Parameters
      Improve this Doc - View Source + View Source

      Reverse(IQueryable)

      @@ -5798,7 +5798,7 @@
      Parameters
      - + @@ -5815,8 +5815,8 @@
      Returns
      - - + @@ -5826,7 +5826,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Select(IQueryable, ParsingConfig, String, Object[])

      @@ -5848,7 +5848,7 @@
      Parameters
      - + @@ -5860,13 +5860,13 @@
      Parameters
      - + - + @@ -5883,8 +5883,8 @@
      Returns
      - - + @@ -5921,7 +5921,7 @@
      Parameters
      - + @@ -5933,19 +5933,19 @@
      Parameters
      - + - + - + @@ -5962,8 +5962,8 @@
      Returns
      - - + @@ -5976,7 +5976,7 @@
      Improve this Doc - View Source + View Source

      Select(IQueryable, String, Object[])

      @@ -5998,17 +5998,17 @@
      Parameters
      - + - + - + @@ -6024,8 +6024,8 @@
      Returns
      - - + @@ -6058,22 +6058,22 @@
      Parameters
      - + - + - + - + @@ -6089,8 +6089,8 @@
      Returns
      - - + @@ -6100,7 +6100,7 @@
      Returns
      Improve this Doc - View Source + View Source

      Select<TResult>(IQueryable, ParsingConfig, String, Object[])

      @@ -6123,7 +6123,7 @@
      Parameters
      - + @@ -6135,13 +6135,13 @@
      Parameters
      - + - + @@ -6158,8 +6158,8 @@
      Returns
      - - + @@ -6211,17 +6211,17 @@
      Parameters
      - + - + - + @@ -6237,8 +6237,8 @@
      Returns
      - - + @@ -6268,7 +6268,7 @@
      Type Parameters

      SelectMany(IQueryable, ParsingConfig, String, Object[])

      -

      Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence.

      Declaration
      @@ -6286,7 +6286,7 @@
      Parameters
      - + @@ -6298,13 +6298,13 @@
      Parameters
      - + - + @@ -6321,8 +6321,8 @@
      Returns
      - - + @@ -6339,7 +6339,7 @@

      SelectMany(IQueryable, ParsingConfig, String, String, Object[], Object[])

      -

      Projects each element of a sequence to an IQueryable +

      Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned.

      @@ -6360,7 +6360,7 @@
      Parameters
      - + @@ -6372,25 +6372,25 @@
      Parameters
      - + - + - + - + @@ -6407,8 +6407,8 @@
      Returns
      - - + @@ -6427,7 +6427,7 @@

      SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object[], Object[])

      -

      Projects each element of a sequence to an IQueryable +

      Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned.

      @@ -6448,7 +6448,7 @@
      Parameters
      - + @@ -6460,37 +6460,37 @@
      Parameters
      - + - + - + - + - + - + @@ -6507,8 +6507,8 @@
      Returns
      - - + @@ -6527,7 +6527,7 @@

      SelectMany(IQueryable, ParsingConfig, Type, String, Object[])

      -

      Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence.

      Declaration
      @@ -6545,7 +6545,7 @@
      Parameters
      - + @@ -6557,19 +6557,19 @@
      Parameters
      - + - + - + @@ -6586,8 +6586,8 @@
      Returns
      - - + @@ -6604,7 +6604,7 @@

      SelectMany(IQueryable, String, Object[])

      -

      Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence.

      Declaration
      @@ -6622,17 +6622,17 @@
      Parameters
      - + - + - + @@ -6648,8 +6648,8 @@
      Returns
      - - + @@ -6663,7 +6663,7 @@
      Returns

      SelectMany(IQueryable, String, String, Object[], Object[])

      -

      Projects each element of a sequence to an IQueryable +

      Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned.

      @@ -6684,27 +6684,27 @@
      Parameters
      - + - + - + - + - + @@ -6720,8 +6720,8 @@
      Returns
      - - + @@ -6737,7 +6737,7 @@
      Returns

      SelectMany(IQueryable, String, String, String, String, Object[], Object[])

      -

      Projects each element of a sequence to an IQueryable +

      Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned.

      @@ -6758,37 +6758,37 @@
      Parameters
      - + - + - + - + - + - + - + @@ -6804,8 +6804,8 @@
      Returns
      - - + @@ -6821,7 +6821,7 @@
      Returns

      SelectMany(IQueryable, Type, String, Object[])

      -

      Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence.

      Declaration
      @@ -6839,22 +6839,22 @@
      Parameters
      - + - + - + - + @@ -6870,8 +6870,8 @@
      Returns
      - - + @@ -6885,7 +6885,7 @@
      Returns

      SelectMany<TResult>(IQueryable, ParsingConfig, String, Object[])

      -

      Projects each element of a sequence to an IQueryable<T> and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable<T> and combines the resulting sequences into one sequence.

      Declaration
      @@ -6903,7 +6903,7 @@
      Parameters
      - + @@ -6915,13 +6915,13 @@
      Parameters
      - + - + @@ -6938,8 +6938,8 @@
      Returns
      - - + @@ -6972,7 +6972,7 @@

      SelectMany<TResult>(IQueryable, String, Object[])

      -

      Projects each element of a sequence to an IQueryable<T> and combines the resulting sequences into one sequence.

      +

      Projects each element of a sequence to an System.Linq.IQueryable<T> and combines the resulting sequences into one sequence.

      Declaration
      @@ -6990,17 +6990,17 @@
      Parameters
      - + - + - + @@ -7016,8 +7016,8 @@
      Returns
      - - + @@ -7066,9 +7066,9 @@
      Parameters
      - + - @@ -7083,7 +7083,7 @@
      Returns
      - + @@ -7117,9 +7117,9 @@
      Parameters
      - + - @@ -7129,13 +7129,13 @@
      Parameters
      - + - + @@ -7152,7 +7152,7 @@
      Returns
      - + @@ -7186,13 +7186,13 @@
      Parameters
      - + - - + @@ -7209,7 +7209,7 @@
      Returns
      - + @@ -7243,17 +7243,17 @@
      Parameters
      - + - + - + @@ -7269,7 +7269,7 @@
      Returns
      - + @@ -7304,9 +7304,9 @@
      Parameters
      - + - @@ -7321,7 +7321,7 @@
      Returns
      - + @@ -7355,9 +7355,9 @@
      Parameters
      - + - @@ -7367,13 +7367,13 @@
      Parameters
      - + - + @@ -7390,7 +7390,7 @@
      Returns
      - + @@ -7424,13 +7424,13 @@
      Parameters
      - + - - + @@ -7447,7 +7447,7 @@
      Returns
      - + @@ -7481,17 +7481,17 @@
      Parameters
      - + - + - + @@ -7507,7 +7507,7 @@
      Returns
      - + @@ -7540,13 +7540,13 @@
      Parameters
      - + - - + @@ -7563,8 +7563,8 @@
      Returns
      - - + @@ -7596,7 +7596,7 @@
      Parameters
      - + @@ -7608,13 +7608,13 @@
      Parameters
      - + - + @@ -7631,8 +7631,8 @@
      Returns
      - - + @@ -7669,17 +7669,17 @@
      Parameters
      - + - + - + @@ -7695,8 +7695,8 @@
      Returns
      - - + @@ -7729,7 +7729,7 @@
      Parameters
      - + @@ -7746,7 +7746,7 @@
      Returns
      - + @@ -7785,7 +7785,7 @@
      Parameters
      - + @@ -7797,13 +7797,13 @@
      Parameters
      - + - + @@ -7820,7 +7820,7 @@
      Returns
      - + @@ -7858,13 +7858,13 @@
      Parameters
      - + - + @@ -7881,7 +7881,7 @@
      Returns
      - + @@ -7915,17 +7915,17 @@
      Parameters
      - + - + - + @@ -7941,7 +7941,7 @@
      Returns
      - + @@ -7974,13 +7974,13 @@
      Parameters
      - + - + @@ -7997,8 +7997,8 @@
      Returns
      - - + @@ -8030,7 +8030,7 @@
      Parameters
      - + @@ -8042,13 +8042,13 @@
      Parameters
      - + - + @@ -8065,8 +8065,8 @@
      Returns
      - - + @@ -8103,17 +8103,17 @@
      Parameters
      - + - + - + @@ -8129,8 +8129,8 @@
      Returns
      - - + @@ -8162,7 +8162,7 @@
      Parameters
      - + @@ -8174,19 +8174,19 @@
      Parameters
      - + - + - + @@ -8203,8 +8203,8 @@
      Returns
      - - + @@ -8236,7 +8236,7 @@
      Parameters
      - + @@ -8248,13 +8248,13 @@
      Parameters
      - + - + @@ -8271,8 +8271,8 @@
      Returns
      - - + @@ -8310,22 +8310,22 @@
      Parameters
      - + - + - + - + @@ -8341,8 +8341,8 @@
      Returns
      - - + @@ -8374,17 +8374,17 @@
      Parameters
      - + - + - + @@ -8400,8 +8400,8 @@
      Returns
      - - + @@ -8433,7 +8433,7 @@
      Parameters
      - + @@ -8445,19 +8445,19 @@
      Parameters
      - + - + - + @@ -8474,8 +8474,8 @@
      Returns
      - - + @@ -8523,7 +8523,7 @@
      Parameters
      - + @@ -8535,13 +8535,13 @@
      Parameters
      - + - + @@ -8558,8 +8558,8 @@
      Returns
      - - + @@ -8613,25 +8613,25 @@
      Parameters
      - + - + - + - + @@ -8648,8 +8648,8 @@
      Returns
      - - + @@ -8697,17 +8697,17 @@
      Parameters
      - + - + - + @@ -8723,8 +8723,8 @@
      Returns
      - - + @@ -8772,9 +8772,9 @@
      Parameters
      - + - @@ -8784,13 +8784,13 @@
      Parameters
      - + - + @@ -8807,8 +8807,8 @@
      Returns
      - - + @@ -8847,13 +8847,13 @@
      Parameters
      - + - - + @@ -8870,8 +8870,8 @@
      Returns
      - - + @@ -8903,17 +8903,17 @@
      Parameters
      - + - + - + @@ -8929,8 +8929,8 @@
      Returns
      - - + @@ -8962,9 +8962,9 @@
      Parameters
      - + - @@ -8974,13 +8974,13 @@
      Parameters
      - + - + @@ -8997,8 +8997,8 @@
      Returns
      - - + @@ -9053,12 +9053,12 @@
      Parameters
      - + - + @@ -9075,8 +9075,8 @@
      Returns
      - - + @@ -9123,17 +9123,17 @@
      Parameters
      - + - + - + @@ -9149,8 +9149,8 @@
      Returns
      - - + @@ -9182,7 +9182,7 @@
      Type Parameters
      Improve this Doc
    • - View Source + View Source
    • diff --git a/docs/api/System.Linq.Dynamic.Core.Exceptions.ParseException.html b/docs/api/System.Linq.Dynamic.Core.Exceptions.ParseException.html index f0d5a42d..9b5d056c 100644 --- a/docs/api/System.Linq.Dynamic.Core.Exceptions.ParseException.html +++ b/docs/api/System.Linq.Dynamic.Core.Exceptions.ParseException.html @@ -88,61 +88,61 @@

      Inheritance
      - - +
      System.Object
      +
      System.Exception
      ParseException
      Implements
      -
      ISerializable
      -
      _Exception
      +
      System.Runtime.Serialization.ISerializable
      +
      System.Runtime.InteropServices._Exception
      Inherited Members
      - Exception.GetBaseException() + System.Exception.GetBaseException()
      - Exception.GetType() + System.Exception.GetType()
      - Exception.Message + System.Exception.Message
      - Exception.Data + System.Exception.Data
      - Exception.InnerException + System.Exception.InnerException
      - Exception.TargetSite + System.Exception.TargetSite
      - Exception.StackTrace + System.Exception.StackTrace
      - Exception.HelpLink + System.Exception.HelpLink
      - Exception.Source + System.Exception.Source
      - Exception.HResult + System.Exception.HResult
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.Exceptions
      @@ -156,19 +156,19 @@

      Constructors

      | - Improve this Doc + Improve this Doc - View Source + View Source -

      ParseException(String, Int32)

      +

      ParseException(String, Int32, Exception)

      Initializes a new instance of the ParseException class with a specified error message and position.

      Declaration
      -
      public ParseException(string message, int position)
      +
      public ParseException(string message, int position, Exception innerException = null)
      Parameters
      BooleanParsingConfigconfig

      The parsing configuration.

      +
      System.Boolean cacheCustomTypes

      Defines whether to cache the CustomTypes (including extension methods) which are found in the Application Domain. Default set to 'true'.

      HashSet<Type>

      A HashSet<T> list of custom types.

      +
      System.Collections.Generic.HashSet<System.Type>

      A System.Collections.Generic.HashSet<T> list of custom types.

      Dictionary<Type, List<MethodInfo>>System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.List<System.Reflection.MethodInfo>>

      A list of custom extension methods that System.Linq.Dynamic.Core will understand.

      StringSystem.String typeName

      The typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      StringSystem.String simpleTypeName

      The typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      HashSet<Type>

      A HashSet<T> list of custom types.

      +
      System.Collections.Generic.HashSet<System.Type>

      A System.Collections.Generic.HashSet<T> list of custom types.

      Dictionary<Type, List<MethodInfo>>System.Collections.Generic.Dictionary<System.Type, System.Collections.Generic.List<System.Reflection.MethodInfo>>

      A list of custom extension methods that System.Linq.Dynamic.Core will understand.

      StringSystem.String typeName

      The typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      StringSystem.String simpleTypeName

      The typename to resolve.

      Type

      A resolved Type or null when not found.

      +
      System.Type

      A resolved System.Type or null when not found.

      IQueryableSystem.Linq.IQueryable query

      The query to check.

      IQueryProviderSystem.Linq.IQueryProvider provider

      The provider to check (can be null).

      BooleanSystem.Boolean

      true/false

      StringSystem.String propertyName

      Name of the property.

      ObjectSystem.Object

      value

      StringSystem.String propertyName

      Name of the property.

      StringSystem.String propertyName

      Name of the property.

      ObjectSystem.Object value

      The value.

      StringSystem.String propertyName

      Name of the property.

      TypeSystem.Type comparerGenericType

      The GenericType

      TypeSystem.Type comparerType

      The IComparer instance

      +

      The System.Collections.IComparer instance

      TypeSystem.Type

      Type

      IList<DynamicProperty>System.Collections.Generic.IList<DynamicProperty> properties

      The DynamicProperties

      BooleanSystem.Boolean createParameterCtor

      Create a constructor with parameters. Default set to true. Note that for Linq-to-Database objects, this needs to be set to false.

      TypeSystem.Type

      Type

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      Object[]System.Object[]

      An array that contains the elements from the input sequence.

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      TypeSystem.Type type

      A Type cast to.

      +

      A System.Type cast to.

      Object[]System.Object[]

      An Array that contains the elements from the input sequence.

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      List<Object>System.Collections.Generic.List<System.Object>

      A List that contains the elements from the input sequence.

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      TypeSystem.Type type

      A Type cast to.

      +

      A System.Type cast to.

      List<Object>System.Collections.Generic.List<System.Object>

      A List that contains the elements from the input sequence.

      IEnumerableSystem.Collections.IEnumerable source

      A IEnumerable to create an array from.

      +

      A System.Collections.IEnumerable to create an array from.

      List<T>System.Collections.Generic.List<T>

      A List{T} that contains the elements from the input sequence.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type delegateType

      The delegate type.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      TypeSystem.Type itType

      The main type from the dynamic class expression.

      TypeSystem.Type resultType

      Type of the result. If not specified, it will be generated dynamically.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      LambdaExpression

      The generated LambdaExpression

      +
      System.Linq.Expressions.LambdaExpression

      The generated System.Linq.Expressions.LambdaExpression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<TResult>>

      The generated System.Linq.Expressions.Expression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<TResult>>

      The generated System.Linq.Expressions.Expression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      ParameterExpression[]System.Linq.Expressions.ParameterExpression[] parameters

      A array from ParameterExpressions.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<TResult>>

      The generated System.Linq.Expressions.Expression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<TResult>>

      The generated System.Linq.Expressions.Expression

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<T, TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<T, TResult>>

      The generated System.Linq.Expressions.Expression

      TypeSystem.Type delegateType

      The delegate type.

      BooleanSystem.Boolean createParameterCtor

      if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.

      StringSystem.String expression

      The expression.

      Object[]System.Object[] values

      An object array that contains zero or more objects which are used as replacement values.

      Expression<Func<T, TResult>>

      The generated Expression

      +
      System.Linq.Expressions.Expression<System.Func<T, TResult>>

      The generated System.Linq.Expressions.Expression

      StringSystem.String name

      The name from the property.

      TypeSystem.Type type

      The type from the property.

      StringSystem.String

      The name from the property.

      TypeSystem.Type

      The type from the property.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable data source.

      StringSystem.String function

      The name of the function to run. Can be Sum, Average, Min or Max.

      StringSystem.String member

      The name of the property to aggregate over.

      ObjectSystem.Object

      The value of the aggregate function run over the specified property.

      IQueryableSystem.Linq.IQueryable source

      A sequence whose elements to test for a condition.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      BooleanSystem.Boolean

      true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false.

      IQueryableSystem.Linq.IQueryable source

      A sequence whose elements to test for a condition.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      BooleanSystem.Boolean

      true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false.

      IQueryableSystem.Linq.IQueryable source

      A sequence to check for being empty.

      BooleanSystem.Boolean

      true if the source sequence contains any elements; otherwise, false.

      IQueryableSystem.Linq.IQueryable source

      A sequence to check for being empty.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      BooleanSystem.Boolean

      true if the source sequence contains any elements; otherwise, false.

      IQueryableSystem.Linq.IQueryable source

      A sequence to check for being empty.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      BooleanSystem.Boolean

      true if the source sequence contains any elements; otherwise, false.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      BooleanSystem.Boolean

      true if the source sequence contains any elements; otherwise, false.

      IQueryableSystem.Linq.IQueryable source

      The sequence to type as IEnumerable<T> of Object.

      +

      The sequence to type as System.Collections.Generic.IEnumerable<T> of System.Object.

      IEnumerable<Object>

      The input typed as IEnumerable<T> of Object.

      +
      System.Collections.Generic.IEnumerable<System.Object>

      The input typed as System.Collections.Generic.IEnumerable<T> of System.Object.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the average of.

      DoubleSystem.Double

      The average of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the average of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      DoubleSystem.Double

      The average of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the average of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A Lambda Expression.

      DoubleSystem.Double

      The average of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      DoubleSystem.Double

      The average of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be converted.

      +

      The System.Linq.IQueryable that contains the elements to be converted.

      StringSystem.String typeName

      The type to convert the elements of source to.

      IQueryable

      An IQueryable that contains each element of the source sequence converted to the specified type.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be converted.

      +

      The System.Linq.IQueryable that contains the elements to be converted.

      StringSystem.String typeName

      The type to convert the elements of source to.

      IQueryable

      An IQueryable that contains each element of the source sequence converted to the specified type.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be converted.

      +

      The System.Linq.IQueryable that contains the elements to be converted.

      TypeSystem.Type type

      The type to convert the elements of source to.

      IQueryable

      An IQueryable that contains each element of the source sequence converted to the specified type.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      Int32System.Int32

      The number of elements in the input sequence.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      Int32System.Int32

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      Int32System.Int32

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      Int32System.Int32

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return a default value for if empty.

      +

      The System.Linq.IQueryable to return a default value for if empty.

      IQueryable

      An IQueryable that contains default if source is empty; otherwise, source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains default if source is empty; otherwise, source.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return a default value for if empty.

      +

      The System.Linq.IQueryable to return a default value for if empty.

      ObjectSystem.Object defaultValue

      The value to return if the sequence is empty.

      IQueryable

      An IQueryable that contains defaultValue if source is empty; otherwise, source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains defaultValue if source is empty; otherwise, source.

      IQueryableSystem.Linq.IQueryable source

      The sequence to remove duplicate elements from.

      IQueryable

      An IQueryable that contains distinct elements from the source sequence.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains distinct elements from the source sequence.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      ObjectSystem.Object

      The first element in source.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      ObjectSystem.Object

      default if source is empty; otherwise, the first element in source.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the first element of.

      +

      The System.Linq.IQueryable to return the first element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      StringSystem.String resultSelector

      A string expression to specify a result value from each group.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      StringSystem.String resultSelector

      A string expression to specify a result value from each group.

      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer

      The comparer to use.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      StringSystem.String resultSelector

      A string expression to specify a result value from each group.

      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable whose elements to group.

      +

      A System.Linq.IQueryable whose elements to group.

      StringSystem.String keySelector

      A string expression to specify the key for each element.

      StringSystem.String resultSelector

      A string expression to specify a result value from each group.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer
      Object[]System.Object[] args
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      Object[]System.Object[] args
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      StringSystem.String resultSelector
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      StringSystem.String resultSelector
      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      StringSystem.String resultSelector
      IEqualityComparerSystem.Collections.IEqualityComparer equalityComparer
      Object[]System.Object[] args
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String keySelector
      StringSystem.String resultSelector
      Object[]System.Object[] args
      IQueryable

      A IQueryable where each element represents a projection over a group and its key.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable where each element represents a projection over a group and its key.

      IEnumerable<TElement>System.Collections.Generic.IEnumerable<TElement> source

      A IEnumerable<T> whose elements to group.

      +

      A System.Collections.Generic.IEnumerable<T> whose elements to group.

      Func<TElement, Object>[]System.Func<TElement, System.Object>[] keySelectors

      Lambda expressions to specify the keys for each element.

      IEnumerable<GroupResult>

      A IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      +
      System.Collections.Generic.IEnumerable<GroupResult>

      A System.Collections.Generic.IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      IEnumerable<TElement>System.Collections.Generic.IEnumerable<TElement> source

      A IEnumerable<T> whose elements to group.

      +

      A System.Collections.Generic.IEnumerable<T> whose elements to group.

      String[]System.String[] keySelectors

      String expressions to specify the keys for each element.

      +

      System.String expressions to specify the keys for each element.

      IEnumerable<GroupResult>

      A IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      +
      System.Collections.Generic.IEnumerable<GroupResult>

      A System.Collections.Generic.IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      IEnumerable<TElement>System.Collections.Generic.IEnumerable<TElement> source
      String[]System.String[] keySelectors
      IEnumerable<GroupResult>

      A IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      +
      System.Collections.Generic.IEnumerable<GroupResult>

      A System.Collections.Generic.IEnumerable<T> of type GroupResult where each element represents a projection over a group, its key, and its subgroups.

      IQueryableSystem.Linq.IQueryable outer
      IEnumerableSystem.Collections.IEnumerable inner
      StringSystem.String outerKeySelector
      StringSystem.String innerKeySelector
      StringSystem.String resultSelector
      Object[]System.Object[] args
      IQueryable

      An IQueryable obtained by performing a grouped join on two sequences.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable obtained by performing a grouped join on two sequences.

      IQueryableSystem.Linq.IQueryable outer

      The first sequence to join.

      IEnumerableSystem.Collections.IEnumerable inner

      The sequence to join to the first sequence.

      StringSystem.String outerKeySelector

      A dynamic function to extract the join key from each element of the first sequence.

      StringSystem.String innerKeySelector

      A dynamic function to extract the join key from each element of the second sequence.

      StringSystem.String resultSelector

      A dynamic function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable obtained by performing a grouped join on two sequences.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable obtained by performing a grouped join on two sequences.

      IQueryableSystem.Linq.IQueryable outer
      IEnumerableSystem.Collections.IEnumerable inner
      StringSystem.String outerKeySelector
      StringSystem.String innerKeySelector
      StringSystem.String resultSelector
      Object[]System.Object[] args
      IQueryable

      An IQueryable obtained by performing an inner join on two sequences.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable obtained by performing an inner join on two sequences.

      IQueryableSystem.Linq.IQueryable outer

      The first sequence to join.

      IEnumerableSystem.Collections.IEnumerable inner

      The sequence to join to the first sequence.

      StringSystem.String outerKeySelector

      A dynamic function to extract the join key from each element of the first sequence.

      StringSystem.String innerKeySelector

      A dynamic function to extract the join key from each element of the second sequence.

      StringSystem.String resultSelector

      A dynamic function to create a result element from two matching elements.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable obtained by performing an inner join on two sequences.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable obtained by performing an inner join on two sequences.

      IQueryable<TElement>System.Linq.IQueryable<TElement> outer
      IEnumerable<TElement>System.Collections.Generic.IEnumerable<TElement> inner
      StringSystem.String outerKeySelector
      StringSystem.String innerKeySelector
      StringSystem.String resultSelector
      Object[]System.Object[] args
      IQueryable<TElement>

      An IQueryable<T> that has elements of type TResult obtained by performing an inner join on two sequences.

      +
      System.Linq.IQueryable<TElement>

      An System.Linq.IQueryable<T> that has elements of type TResult obtained by performing an inner join on two sequences.

      IQueryable<TElement>System.Linq.IQueryable<TElement> outer

      The first sequence to join.

      IEnumerable<TElement>System.Collections.Generic.IEnumerable<TElement> inner

      The sequence to join to the first sequence.

      StringSystem.String outerKeySelector

      A dynamic function to extract the join key from each element of the first sequence.

      StringSystem.String innerKeySelector

      A dynamic function to extract the join key from each element of the second sequence.

      StringSystem.String resultSelector

      A dynamic function to create a result element from two matching elements.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings.

      IQueryable<TElement>

      An IQueryable<T> that has elements of type TResult obtained by performing an inner join on two sequences.

      +
      System.Linq.IQueryable<TElement>

      An System.Linq.IQueryable<T> that has elements of type TResult obtained by performing an inner join on two sequences.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      ObjectSystem.Object

      The last element in source.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      ObjectSystem.Object

      default if source is empty; otherwise, the last element in source.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      Int64System.Int64

      The number of elements in the input sequence.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      Int64System.Int64

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable that contains the elements to be counted.

      +

      The System.Linq.IQueryable that contains the elements to be counted.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      Int64System.Int64

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      Int64System.Int64

      The number of elements in the specified sequence that satisfies a condition.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the max for.

      ObjectSystem.Object

      The max element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the max for.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The max element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the max for.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A Lambda Expression.

      ObjectSystem.Object

      The max element in the sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The max element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the min for.

      ObjectSystem.Object

      The min element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the min for.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The min element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to calculate find the min for.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A Lambda Expression.

      ObjectSystem.Object

      The min element in the sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The min element in the sequence.

      IQueryableSystem.Linq.IQueryable source

      An IQueryable whose elements to filter.

      +

      An System.Linq.IQueryable whose elements to filter.

      StringSystem.String typeName

      The type to filter the elements of the sequence on.

      IQueryableSystem.Linq.IQueryable

      A collection that contains the elements from source that have the type.

      IQueryableSystem.Linq.IQueryable source

      An IQueryable whose elements to filter.

      +

      An System.Linq.IQueryable whose elements to filter.

      StringSystem.String typeName

      The type to filter the elements of the sequence on.

      IQueryableSystem.Linq.IQueryable

      A collection that contains the elements from source that have the type.

      IQueryableSystem.Linq.IQueryable source

      An IQueryable whose elements to filter.

      +

      An System.Linq.IQueryable whose elements to filter.

      TypeSystem.Type type

      The type to filter the elements of the sequence on.

      IQueryableSystem.Linq.IQueryable

      A collection that contains the elements from source that have the type.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String ordering
      IComparerSystem.Collections.IComparer comparer
      Object[]System.Object[] args
      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String ordering
      Object[]System.Object[] args
      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IQueryable<T> whose elements are sorted according to the specified ordering.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IQueryable<T> whose elements are sorted according to the specified ordering.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IQueryable<T> whose elements are sorted according to the specified ordering.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source
      StringSystem.String ordering
      Object[]System.Object[] args
      IOrderedQueryable<TSource>

      A IQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IQueryable<T> whose elements are sorted according to the specified ordering.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return elements from.

      Int32System.Int32 page

      The page to return.

      Int32System.Int32 pageSize

      The number of elements per page.

      IQueryable

      A IQueryable that contains the paged elements.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains the paged elements.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      The IQueryable to return elements from.

      Int32System.Int32 page

      The page to return.

      Int32System.Int32 pageSize

      The number of elements per page.

      IQueryable<TSource>

      A IQueryable<T> that contains the paged elements.

      +
      System.Linq.IQueryable<TSource>

      A System.Linq.IQueryable<T> that contains the paged elements.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return elements from.

      Int32System.Int32 page

      The page to return.

      Int32System.Int32 pageSize

      The number of elements per page.

      Nullable<Int32>System.Nullable<System.Int32> rowCount

      If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count().

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      The IQueryable to return elements from.

      Int32System.Int32 page

      The page to return.

      Int32System.Int32 pageSize

      The number of elements per page.

      Nullable<Int32>System.Nullable<System.Int32> rowCount

      If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count().

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to reverse.

      IQueryable

      A IQueryable whose elements correspond to those of the input sequence in reverse order.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable whose elements correspond to those of the input sequence in reverse order.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      TypeSystem.Type resultType

      The result type.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters.

      IQueryable

      An IQueryable whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable

      An IQueryable whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source
      TypeSystem.Type resultType
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable

      An IQueryable whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters.

      IQueryable<TResult>

      An IQueryable<T> whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable<TResult>

      An System.Linq.IQueryable<T> whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable<TResult>

      An IQueryable<T> whose elements are the result of invoking a projection string on each element of source.

      +
      System.Linq.IQueryable<TResult>

      An System.Linq.IQueryable<T> whose elements are the result of invoking a projection string on each element of source.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String collectionSelector

      A projection function to apply to each element of the input sequence.

      StringSystem.String resultSelector

      A projection function to apply to each element of each intermediate sequence. Should only use x and y as parameter names.

      Object[]System.Object[] collectionSelectorArgs

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      Object[]System.Object[] resultSelectorArgs

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable whose elements are the result of invoking the one-to-many +

      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String collectionSelector

      A projection function to apply to each element of the input sequence.

      StringSystem.String resultSelector

      A projection function to apply to each element of each intermediate sequence.

      StringSystem.String collectionParameterName

      The name from collectionParameter to use. Default is x.

      StringSystem.String resultParameterName

      The name from resultParameterName to use. Default is y.

      Object[]System.Object[] collectionSelectorArgs

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      Object[]System.Object[] resultSelectorArgs

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable whose elements are the result of invoking the one-to-many +

      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      TypeSystem.Type resultType

      The result type.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable

      An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String collectionSelector
      StringSystem.String resultSelector
      Object[]System.Object[] collectionSelectorArgs
      Object[]System.Object[] resultSelectorArgs
      IQueryable

      An IQueryable whose elements are the result of invoking the one-to-many +

      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String collectionSelector
      StringSystem.String resultSelector
      StringSystem.String collectionParameterName
      StringSystem.String resultParameterName
      Object[]System.Object[] collectionSelectorArgs
      Object[]System.Object[] resultSelectorArgs
      IQueryable

      An IQueryable whose elements are the result of invoking the one-to-many +

      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element.

      IQueryableSystem.Linq.IQueryable source
      TypeSystem.Type resultType
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable

      An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of values to project.

      StringSystem.String selector

      A projection string expression to apply to each element.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable<TResult>

      An IQueryable<T> whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable<TResult>

      An System.Linq.IQueryable<T> whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String selector
      Object[]System.Object[] args
      IQueryable<TResult>

      An IQueryable<T> whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      +
      System.Linq.IQueryable<TResult>

      An System.Linq.IQueryable<T> whose elements are the result of invoking a one-to-many projection function on each element of the input sequence.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable to return the single element of.

      +

      A System.Linq.IQueryable to return the single element of.

      ObjectSystem.Object

      The single element of the input sequence.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable to return the single element of.

      +

      A System.Linq.IQueryable to return the single element of.

      ObjectSystem.Object

      The single element of the input sequence, or default if the sequence contains no elements.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      The IQueryable to return the last element of.

      +

      The System.Linq.IQueryable to return the last element of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The first element in source that passes the test in predicate.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable to return elements from.

      +

      A System.Linq.IQueryable to return elements from.

      Int32System.Int32 count

      The number of elements to skip before returning the remaining elements.

      IQueryable

      A IQueryable that contains elements that occur after the specified index in the input sequence.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains elements that occur after the specified index in the input sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence to check for being empty.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      IQueryable

      An IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the sum of.

      ObjectSystem.Object

      The sum of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the sum of.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      ObjectSystem.Object

      The sum of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      A sequence of numeric values to calculate the sum of.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A Lambda Expression.

      ObjectSystem.Object

      The sum of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      ObjectSystem.Object

      The sum of the values in the sequence.

      IQueryableSystem.Linq.IQueryable source

      The sequence to return elements from.

      Int32System.Int32 count

      The number of elements to return.

      IQueryable

      A IQueryable that contains the specified number of elements from the start of source.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains the specified number of elements from the start of source.

      IQueryableSystem.Linq.IQueryable source

      A sequence to check for being empty.

      StringSystem.String predicate

      A function to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      An IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      IQueryable

      An IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes.

      +
      System.Linq.IQueryable

      An System.Linq.IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes.

      IOrderedQueryableSystem.Linq.IOrderedQueryable source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IOrderedQueryableSystem.Linq.IOrderedQueryable source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IOrderedQueryableSystem.Linq.IOrderedQueryable source
      StringSystem.String ordering
      IComparerSystem.Collections.IComparer comparer
      Object[]System.Object[] args
      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IOrderedQueryableSystem.Linq.IOrderedQueryable source
      StringSystem.String ordering
      Object[]System.Object[] args
      IOrderedQueryable

      A IQueryable whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable

      A System.Linq.IQueryable whose elements are sorted according to the specified ordering.

      IOrderedQueryable<TSource>System.Linq.IOrderedQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      IOrderedQueryable<TSource>System.Linq.IOrderedQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      IOrderedQueryable<TSource>System.Linq.IOrderedQueryable<TSource> source

      A sequence of values to order.

      StringSystem.String ordering

      An expression string to indicate values to order by.

      IComparerSystem.Collections.IComparer comparer

      The comparer to use.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IOrderedQueryable<TSource>

      A IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      IOrderedQueryable<TSource>System.Linq.IOrderedQueryable<TSource> source
      StringSystem.String ordering
      Object[]System.Object[] args
      IOrderedQueryable<TSource>

      A IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      +
      System.Linq.IOrderedQueryable<TSource>

      A System.Linq.IOrderedQueryable<T> whose elements are sorted according to the specified ordering.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable to filter.

      +

      A System.Linq.IQueryable to filter.

      StringSystem.String predicate

      An expression string to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable

      A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate.

      IQueryableSystem.Linq.IQueryable source

      A IQueryable to filter.

      +

      A System.Linq.IQueryable to filter.

      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      IQueryable

      A IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression.

      IQueryableSystem.Linq.IQueryable source
      StringSystem.String predicate
      Object[]System.Object[] args
      IQueryable

      A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate.

      +
      System.Linq.IQueryable

      A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source

      A IQueryable<T> to filter.

      +

      A System.Linq.IQueryable<T> to filter.

      StringSystem.String predicate

      An expression string to test each element for a condition.

      Object[]System.Object[] args

      An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings.

      IQueryable<TSource>

      A IQueryable<T> that contains elements from the input sequence that satisfy the condition specified by predicate.

      +
      System.Linq.IQueryable<TSource>

      A System.Linq.IQueryable<T> that contains elements from the input sequence that satisfy the condition specified by predicate.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source
      LambdaExpressionSystem.Linq.Expressions.LambdaExpression lambda

      A cached Lambda Expression.

      IQueryable<TSource>

      A IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression.

      +
      System.Linq.IQueryable<TSource>

      A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression.

      IQueryable<TSource>System.Linq.IQueryable<TSource> source
      StringSystem.String predicate
      Object[]System.Object[] args
      IQueryable<TSource>

      A IQueryable<T> that contains elements from the input sequence that satisfy the condition specified by predicate.

      +
      System.Linq.IQueryable<TSource>

      A System.Linq.IQueryable<T> that contains elements from the input sequence that satisfy the condition specified by predicate.

      @@ -181,15 +181,21 @@
      Parameters
      - + - + + + + + + @@ -201,7 +207,7 @@

      Properties Improve this Doc - View Source + View Source

      Position

      @@ -222,7 +228,7 @@
      Property Value
      - + @@ -234,11 +240,11 @@

      Methods Improve this Doc - View Source + View Source

      GetObjectData(SerializationInfo, StreamingContext)

      -

      When overridden in a derived class, sets the SerializationInfo with information about the exception.

      +

      When overridden in a derived class, sets the System.Runtime.Serialization.SerializationInfo with information about the exception.

      Declaration
      @@ -256,21 +262,21 @@
      Parameters
      - + - - + -
      StringSystem.String message

      The message that describes the error.

      Int32System.Int32 position

      The location in the parsed string that produced the ParseException

      +
      System.ExceptioninnerException

      The exception that is the cause of the current exception, or a null reference if no inner exception is specified.

      Int32System.Int32
      SerializationInfoSystem.Runtime.Serialization.SerializationInfo info

      The SerializationInfo that holds the serialized object data about the exception being thrown.

      +

      The System.Runtime.Serialization.SerializationInfo that holds the serialized object data about the exception being thrown.

      StreamingContextSystem.Runtime.Serialization.StreamingContext context

      The StreamingContext that contains contextual information about the source or destination.

      +

      The System.Runtime.Serialization.StreamingContext that contains contextual information about the source or destination.

      Overrides
      -
      Exception.GetObjectData(SerializationInfo, StreamingContext)
      +
      System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)
      | Improve this Doc @@ -297,20 +303,20 @@
      Returns
      - String + System.String

      A string representation of the current exception.

      Overrides
      -
      Exception.ToString()
      +
      System.Exception.ToString()

      Implements

      - System.Runtime.Serialization.ISerializable + System.Runtime.Serialization.ISerializable
      - System.Runtime.InteropServices._Exception + System.Runtime.InteropServices._Exception
      diff --git a/docs/api/System.Linq.Dynamic.Core.ExtensibilityPoint.html b/docs/api/System.Linq.Dynamic.Core.ExtensibilityPoint.html index e76596e5..24c12ff3 100644 --- a/docs/api/System.Linq.Dynamic.Core.ExtensibilityPoint.html +++ b/docs/api/System.Linq.Dynamic.Core.ExtensibilityPoint.html @@ -89,31 +89,31 @@

      Inheritance
      - +
      System.Object
      ExtensibilityPoint
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -150,7 +150,7 @@
      Field Value
      - Func<Expression, Expression> + System.Func<System.Linq.Expressions.Expression, System.Linq.Expressions.Expression> diff --git a/docs/api/System.Linq.Dynamic.Core.GroupResult.html b/docs/api/System.Linq.Dynamic.Core.GroupResult.html index 7f0f20fb..f45e02b3 100644 --- a/docs/api/System.Linq.Dynamic.Core.GroupResult.html +++ b/docs/api/System.Linq.Dynamic.Core.GroupResult.html @@ -88,28 +88,28 @@

      Inheritance
      - +
      System.Object
      GroupResult
      Inherited Members
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -146,7 +146,7 @@
      Property Value
      - Int32 + System.Int32 @@ -177,7 +177,7 @@
      Property Value
      - IEnumerable + System.Collections.IEnumerable @@ -208,7 +208,7 @@
      Property Value
      - Object + System.Object @@ -239,7 +239,7 @@
      Property Value
      - IEnumerable<GroupResult> + System.Collections.Generic.IEnumerable<GroupResult> @@ -255,7 +255,7 @@

      Methods

      ToString()

      -

      Returns a String showing the key of the group and the number of items in the group.

      +

      Returns a System.String showing the key of the group and the number of items in the group.

      Declaration
      @@ -272,14 +272,14 @@
      Returns
      - String -

      A String that represents this instance.

      + System.String +

      A System.String that represents this instance.

      Overrides
      -
      Object.ToString()
      +
      System.Object.ToString()
      diff --git a/docs/api/System.Linq.Dynamic.Core.IAssemblyHelper.html b/docs/api/System.Linq.Dynamic.Core.IAssemblyHelper.html index 63532d00..6671bfd9 100644 --- a/docs/api/System.Linq.Dynamic.Core.IAssemblyHelper.html +++ b/docs/api/System.Linq.Dynamic.Core.IAssemblyHelper.html @@ -120,7 +120,7 @@
      Returns
      - Assembly[] + System.Reflection.Assembly[]

      An array of assemblies in this application domain.

      diff --git a/docs/api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html b/docs/api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html index 9888fb23..f1683381 100644 --- a/docs/api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html +++ b/docs/api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html @@ -121,13 +121,13 @@
      Parameters
      - IQueryable + System.Linq.IQueryable query

      The query to check.

      - IQueryProvider + System.Linq.IQueryProvider provider

      The provider to check (can be null).

      @@ -144,7 +144,7 @@
      Returns
      - Boolean + System.Boolean

      true/false

      diff --git a/docs/api/System.Linq.Dynamic.Core.PagedResult-1.html b/docs/api/System.Linq.Dynamic.Core.PagedResult-1.html index 17a4d6b2..bae6619c 100644 --- a/docs/api/System.Linq.Dynamic.Core.PagedResult-1.html +++ b/docs/api/System.Linq.Dynamic.Core.PagedResult-1.html @@ -88,7 +88,7 @@

      Inheritance
      - +
      System.Object
      PagedResult<TSource>
      @@ -107,25 +107,25 @@

      Inherited Members
      PagedResult.RowCount
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core
      @@ -178,7 +178,7 @@
      Property Value
      - IQueryable<TSource> + System.Linq.IQueryable<TSource>

      The queryable.

      diff --git a/docs/api/System.Linq.Dynamic.Core.PagedResult.html b/docs/api/System.Linq.Dynamic.Core.PagedResult.html index 7f73476b..5beadfa5 100644 --- a/docs/api/System.Linq.Dynamic.Core.PagedResult.html +++ b/docs/api/System.Linq.Dynamic.Core.PagedResult.html @@ -88,32 +88,32 @@

      Inheritance
      - +
      System.Object
      PagedResult
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -150,7 +150,7 @@
      Property Value
      - Int32 + System.Int32

      The current page.

      @@ -182,7 +182,7 @@
      Property Value
      - Int32 + System.Int32

      The page count.

      @@ -214,7 +214,7 @@
      Property Value
      - Int32 + System.Int32

      The size of the page.

      @@ -246,7 +246,7 @@
      Property Value
      - IQueryable + System.Linq.IQueryable

      The queryable.

      @@ -278,7 +278,7 @@
      Property Value
      - Int32 + System.Int32

      The row count.

      diff --git a/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html b/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html index 77dc984b..b242b36f 100644 --- a/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html +++ b/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      ExpressionParser
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.Parser
      @@ -128,7 +128,7 @@

      Constructors Improve this Doc - View Source + View Source

      ExpressionParser(ParameterExpression[], String, Object[], ParsingConfig)

      @@ -150,19 +150,19 @@
      Parameters
      - ParameterExpression[] + System.Linq.Expressions.ParameterExpression[] parameters

      The parameters.

      - String + System.String expression

      The expression.

      - Object[] + System.Object[] values

      The values.

      @@ -182,7 +182,7 @@

      Properties Improve this Doc - View Source + View Source

      ItName

      @@ -203,7 +203,7 @@
      Property Value
      - String + System.String @@ -213,14 +213,13 @@
      Property Value
      Improve this Doc
      - View Source + View Source

      LastLambdaItName

      -

      There was a problem when an expression contained multiple lambdas where -the ItName was not cleared and freed for the next lambda. This variable -stores the ItName of the last parsed lambda. -Not used internally by ExpressionParser, but used to preserve compatiblity of parsingConfig.RenameParameterExpression +

      There was a problem when an expression contained multiple lambdas where the ItName was not cleared and freed for the next lambda. +This variable stores the ItName of the last parsed lambda. +Not used internally by ExpressionParser, but used to preserve compatibility of parsingConfig.RenameParameterExpression which was designed to only work with mono-lambda expressions.

      @@ -238,7 +237,7 @@
      Property Value
      - String + System.String @@ -250,7 +249,7 @@

      Methods Improve this Doc - View Source + View Source

      Parse(Type, Boolean)

      @@ -272,13 +271,13 @@
      Parameters
      - Type + System.Type resultType

      Type of the result.

      - Boolean + System.Boolean createParameterCtor

      if set to true [create parameter ctor].

      @@ -295,7 +294,7 @@
      Returns
      - Expression + System.Linq.Expressions.Expression

      Expression

      @@ -312,7 +311,7 @@
      Returns
      Improve this Doc
    • - View Source + View Source
    • diff --git a/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html b/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html index 327c29fe..ce8bc710 100644 --- a/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html +++ b/docs/api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html @@ -88,7 +88,7 @@

      Inheritance
      - +
      System.Object
      ExpressionPromoter
      @@ -98,25 +98,25 @@
      Implements
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()
      Namespace: System.Linq.Dynamic.Core.Parser
      @@ -132,7 +132,7 @@

      Constructors Improve this Doc - View Source + View Source

      ExpressionPromoter(ParsingConfig)

      @@ -168,7 +168,7 @@

      Methods Improve this Doc - View Source + View Source

      Promote(Expression, Type, Boolean, Boolean)

      @@ -190,25 +190,25 @@
      Parameters
      - Expression + System.Linq.Expressions.Expression expr

      Source expression

      - Type + System.Type type

      Destination data type to promote

      - Boolean + System.Boolean exact

      If the match must be exact

      - Boolean + System.Boolean convertExpr

      Convert expression

      @@ -225,8 +225,8 @@
      Returns
      - Expression -

      The promoted Expression or null.

      + System.Linq.Expressions.Expression +

      The promoted System.Linq.Expressions.Expression or null.

      diff --git a/docs/api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html b/docs/api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html index 0f9adb0f..27a9709a 100644 --- a/docs/api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html +++ b/docs/api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html @@ -123,25 +123,25 @@
      Parameters
      - Expression + System.Linq.Expressions.Expression expr

      Source expression

      - Type + System.Type type

      Destination data type to promote

      - Boolean + System.Boolean exact

      If the match must be exact

      - Boolean + System.Boolean convertExpr

      Convert expression

      @@ -158,8 +158,8 @@
      Returns
      - Expression -

      The promoted Expression or null.

      + System.Linq.Expressions.Expression +

      The promoted System.Linq.Expressions.Expression or null.

      diff --git a/docs/api/System.Linq.Dynamic.Core.Parser.NumberParser.html b/docs/api/System.Linq.Dynamic.Core.Parser.NumberParser.html index b5e86767..35999d05 100644 --- a/docs/api/System.Linq.Dynamic.Core.Parser.NumberParser.html +++ b/docs/api/System.Linq.Dynamic.Core.Parser.NumberParser.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      NumberParser
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.Parser
      @@ -128,7 +128,7 @@

      Constructors Improve this Doc - View Source + View Source

      NumberParser(ParsingConfig)

      @@ -164,7 +164,7 @@

      Methods Improve this Doc - View Source + View Source

      ParseIntegerLiteral(Int32, String)

      @@ -186,13 +186,13 @@
      Parameters
      - Int32 + System.Int32 tokenPosition

      The current token position (needed for error reporting).

      - String + System.String text

      The text.

      @@ -209,7 +209,7 @@
      Returns
      - Expression + System.Linq.Expressions.Expression @@ -219,7 +219,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseNumber(String, Type)

      @@ -241,13 +241,13 @@
      Parameters
      - String + System.String text

      The text.

      - Type + System.Type type

      The type.

      @@ -264,7 +264,7 @@
      Returns
      - Object + System.Object @@ -274,7 +274,7 @@
      Returns
      Improve this Doc - View Source + View Source

      ParseRealLiteral(String, Char, Boolean)

      @@ -296,17 +296,17 @@
      Parameters
      - String + System.String text - Char + System.Char qualifier - Boolean + System.Boolean stripQualifier @@ -322,7 +322,7 @@
      Returns
      - Expression + System.Linq.Expressions.Expression @@ -332,7 +332,7 @@
      Returns
      Improve this Doc - View Source + View Source

      TryParseNumber(String, Type, out Object)

      @@ -354,19 +354,19 @@
      Parameters
      - String + System.String text

      The text.

      - Type + System.Type type

      The type.

      - Object + System.Object result

      The result.

      @@ -383,7 +383,7 @@
      Returns
      - Boolean + System.Boolean diff --git a/docs/api/System.Linq.Dynamic.Core.ParsingConfig.html b/docs/api/System.Linq.Dynamic.Core.ParsingConfig.html index 7f25ff80..a2c29bdf 100644 --- a/docs/api/System.Linq.Dynamic.Core.ParsingConfig.html +++ b/docs/api/System.Linq.Dynamic.Core.ParsingConfig.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      ParsingConfig
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core
      @@ -128,7 +128,7 @@

      Properties Improve this Doc - View Source + View Source

      AllowNewToEvaluateAnyType

      @@ -150,7 +150,7 @@
      Property Value
      - Boolean + System.Boolean @@ -160,7 +160,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      AreContextKeywordsEnabled

      @@ -183,7 +183,91 @@
      Property Value
      - Boolean + System.Boolean + + + + + + | + Improve this Doc + + + View Source + + +

      ConstantExpressionCacheConfig

      +

      Caches constant expressions to enhance performance. Periodic cleanup is performed to manage cache size, governed by this configuration.

      +
      +
      +
      Declaration
      +
      +
      public CacheConfig ConstantExpressionCacheConfig { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + + + + +
      TypeDescription
      CacheConfig
      + + | + Improve this Doc + + + View Source + + +

      ConvertObjectToSupportComparison

      +

      Converts typeof(object) to the correct type to allow comparison (Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan and LessThanEqual).

      +

      Default value is false.

      +

      When set to true, the following code will work correct: +

      +

      class Person
      +{
      +    public string Name { get; set; }
      +    public object Age { get; set; }
      +}
      +
      +var persons = new[]
      +{
      +    new Person { Name = "Foo", Age = 99 },
      +    new Person { Name = "Bar", Age = 33 }
      +}.AsQueryable();
      +
      +var config = new ParsingConfig
      +{
      +    ConvertObjectToSupportComparison = true
      +};
      +
      +var results = persons.Where(config, "Age > 50").ToList();
      + +
      +
      +
      Declaration
      +
      +
      public bool ConvertObjectToSupportComparison { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + @@ -193,7 +277,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      CustomTypeProvider

      @@ -224,11 +308,11 @@
      Property Value
      Improve this Doc - View Source + View Source

      DateTimeIsParsedAsUTC

      -

      By default DateTime (like 'Fri, 10 May 2019 11:03:17 GMT') is parsed as local time. +

      By default, a DateTime (like 'Fri, 10 May 2019 11:03:17 GMT') is parsed as local time. Use this flag to parse all DateTime strings as UTC.

      Default value is false.

      @@ -247,7 +331,7 @@
      Property Value
      - + @@ -257,7 +341,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      Default

      @@ -288,7 +372,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      DefaultCosmosDb

      @@ -319,7 +403,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      DefaultEFCore21

      @@ -350,13 +434,12 @@
      Property Value
      Improve this Doc - View Source + View Source

      DisableMemberAccessToIndexAccessorFallback

      -

      By default when a member is not found in a type and the type has a string based index accessor it will be parsed as an index accessor. Use -this flag to disable this behaviour and have parsing fail when parsing an expression -where a member access on a non existing member happens.

      +

      By default, when a member is not found in a type and the type has a string based index accessor it will be parsed as an index accessor. +Use this flag to disable this behaviour and have parsing fail when parsing an expression where a member access on a non-existing member happens.

      Default value is false.

      @@ -374,7 +457,39 @@
      Property Value
      - + + + + +
      TypeDescription
      System.Boolean
      BooleanSystem.Boolean
      BooleanSystem.Boolean
      + + | + Improve this Doc + + + View Source + + +

      DisallowNewKeyword

      +

      Disallows the New() keyword to be used to construct a class.

      +

      Default value is false.

      +
      +
      +
      Declaration
      +
      +
      public bool DisallowNewKeyword { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + @@ -384,13 +499,13 @@
      Property Value
      Improve this Doc - View Source + View Source

      EvaluateGroupByAtDatabase

      Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database level. -See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation

      -

      Remark: when this setting is set to 'true', make sure to supply this ParsingConfig as first parameter on the extension methods.

      +See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation +Remark: when this setting is set to true, make sure to supply this ParsingConfig as first parameter on the extension methods.

      Default value is false.

      @@ -408,7 +523,7 @@
      Property Value
      - + @@ -418,7 +533,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      ExpressionPromoter

      @@ -449,11 +564,12 @@
      Property Value
      Improve this Doc - View Source + View Source

      IsCaseSensitive

      -

      Gets or sets if parameter, method, and properties resolution should be case sensitive or not (false by default).

      +

      Gets or sets if parameter, method, and properties resolution should be case-sensitive or not.

      +

      Default value is false.

      Declaration
      @@ -470,7 +586,40 @@
      Property Value
      - + + + + +
      TypeDescription
      System.Boolean
      BooleanSystem.Boolean
      BooleanSystem.Boolean
      + + | + Improve this Doc + + + View Source + + +

      LoadAdditionalAssembliesFromCurrentDomainBaseDirectory

      +

      Load additional assemblies from the current domain base directory. +Note: only used when full .NET Framework and .NET Core App 2.x and higher.

      +

      Default value is false.

      +
      +
      +
      Declaration
      +
      +
      public bool LoadAdditionalAssembliesFromCurrentDomainBaseDirectory { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + @@ -480,7 +629,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      NullPropagatingUseDefaultValueForNonNullableValueTypes

      @@ -502,7 +651,7 @@
      Property Value
      - + @@ -512,7 +661,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      NumberParseCulture

      @@ -534,7 +683,7 @@
      Property Value
      - + @@ -544,12 +693,12 @@
      Property Value
      Improve this Doc - View Source + View Source

      PrioritizePropertyOrFieldOverTheType

      -

      When the type and property have the same name the parser takes the property instead of type when this setting is set to true.

      -

      This setting is also used for calling ExtensionMethods.

      +

      When the type and property have the same name the parser takes the property instead of type when this setting is set to true. +This setting is also used for calling ExtensionMethods.

      Default value is true.

      @@ -567,7 +716,7 @@
      Property Value
      - + @@ -577,7 +726,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      QueryableAnalyzer

      @@ -608,7 +757,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      RenameEmptyParameterExpressionNames

      @@ -630,7 +779,7 @@
      Property Value
      - + @@ -640,11 +789,11 @@
      Property Value
      Improve this Doc - View Source + View Source

      RenameParameterExpression

      -

      Renames the (Typed)ParameterExpression empty Name to a the correct supplied name from it.

      +

      Renames the (Typed)ParameterExpression empty Name to the correct supplied name from it.

      Default value is false.

      @@ -662,7 +811,7 @@
      Property Value
      - + @@ -672,11 +821,11 @@
      Property Value
      Improve this Doc - View Source + View Source

      ResolveTypesBySimpleName

      -

      By default finding types by a simple name is not supported. +

      By default, finding types by a simple name is not supported. Use this flag to use the CustomTypeProvider to resolve types by a simple name like "Employee" instead of "MyDatabase.Entities.Employee". Note that a first matching type is returned and this functionality needs to scan all types from all assemblies, so use with caution.

      Default value is false.

      @@ -696,7 +845,39 @@
      Property Value
      - + + + + +
      TypeDescription
      System.Boolean
      BooleanSystem.Boolean
      CultureInfoSystem.Globalization.CultureInfo
      BooleanSystem.Boolean
      BooleanSystem.Boolean
      BooleanSystem.Boolean
      BooleanSystem.Boolean
      + + | + Improve this Doc + + + View Source + + +

      StringLiteralParsing

      +

      Defines the type of string literal parsing that will be performed. +Default value is StringLiteralParsingType.Default.

      +
      +
      +
      Declaration
      +
      +
      public StringLiteralParsingType StringLiteralParsing { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + @@ -706,11 +887,11 @@
      Property Value
      Improve this Doc - View Source + View Source

      SupportCastingToFullyQualifiedTypeAsString

      -

      Support casting to a full qualified type using a string (double quoted value).

      +

      Support casting to a full qualified type using a string (double-quoted value).

      var result = queryable.Select($"\"System.DateTime\"(LastUpdate)");

      Default value is true.

      @@ -729,7 +910,39 @@
      Property Value
      - + + + + +
      TypeDescription
      StringLiteralParsingType
      BooleanSystem.Boolean
      + + | + Improve this Doc + + + View Source + + +

      SupportDotInPropertyNames

      +

      Support a "." in a property-name. Used in the 'new (a.b as a.b)' syntax.

      +

      Default value is false.

      +
      +
      +
      Declaration
      +
      +
      public bool SupportDotInPropertyNames { get; set; }
      +
      +
      Property Value
      + + + + + + + + + + @@ -739,12 +952,12 @@
      Property Value
      Improve this Doc - View Source + View Source

      SupportEnumerationsFromSystemNamespace

      Support enumeration-types from the System namespace in mscorlib. An example could be "StringComparison".

      -

      Default value is true.

      +

      Default value is true.

      Declaration
      @@ -761,7 +974,7 @@
      Property Value
      - + @@ -771,7 +984,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      TypeConverters

      @@ -792,7 +1005,7 @@
      Property Value
      - + @@ -802,7 +1015,7 @@
      Property Value
      Improve this Doc - View Source + View Source

      UseParameterizedNamesInDynamicQuery

      @@ -825,7 +1038,7 @@
      Property Value
      - + @@ -841,7 +1054,7 @@
      Property Value
      Improve this Doc
    • - View Source + View Source
    • diff --git a/docs/api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html b/docs/api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html index c2b1aa4d..c3c09f63 100644 --- a/docs/api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html +++ b/docs/api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html @@ -88,31 +88,31 @@

      Inheritance
      - +
      System.Object
      TextParser
      Inherited Members
      - Object.ToString() + System.Object.ToString()
      - Object.Equals(Object) + System.Object.Equals(System.Object)
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetHashCode() + System.Object.GetHashCode()
      - Object.GetType() + System.Object.GetType()
      - Object.MemberwiseClone() + System.Object.MemberwiseClone()

      Namespace: System.Linq.Dynamic.Core.Tokenizer
      @@ -128,7 +128,7 @@

      Constructors Improve this Doc - View Source + View Source

      TextParser(ParsingConfig, String)

      @@ -155,7 +155,7 @@
      Parameters
      - + @@ -168,7 +168,7 @@

      Fields Improve this Doc - View Source + View Source

      CurrentToken

      The current parsed Token.

      @@ -195,6 +195,38 @@
      Field Value
      TypeDescription
      System.Boolean
      BooleanSystem.Boolean
      IDictionary<Type, TypeConverter>System.Collections.Generic.IDictionary<System.Type, System.ComponentModel.TypeConverter>
      BooleanSystem.Boolean
      StringSystem.String text

      Methods

      + + | + Improve this Doc + + + View Source + + +

      Clone()

      +

      This method is used to clone the current TextParser.

      +
      +
      +
      Declaration
      +
      +
      public TextParser Clone()
      +
      +
      Returns
      + + + + + + + + + + + + + +
      TypeDescription
      TextParser

      Cloned TextParser

      +
      | Improve this Doc @@ -237,7 +269,7 @@
      Returns
      - Char + System.Char

      The next character, or \0 if end of string.

      @@ -248,7 +280,7 @@
      Returns
      Improve this Doc
      - View Source + View Source

      ValidateToken(TokenId, String)

      @@ -276,7 +308,7 @@
      Parameters
      - String + System.String errorMessage

      The (optional) error message.

      diff --git a/docs/api/System.Linq.Dynamic.Core.Tokenizer.Token.html b/docs/api/System.Linq.Dynamic.Core.Tokenizer.Token.html index b81db55b..423b49a8 100644 --- a/docs/api/System.Linq.Dynamic.Core.Tokenizer.Token.html +++ b/docs/api/System.Linq.Dynamic.Core.Tokenizer.Token.html @@ -89,22 +89,22 @@

      Inherited Members
      - ValueType.Equals(Object) + System.ValueType.Equals(System.Object)
      - ValueType.GetHashCode() + System.ValueType.GetHashCode()
      - ValueType.ToString() + System.ValueType.ToString()
      - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
      - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
      - Object.GetType() + System.Object.GetType()
      Namespace: System.Linq.Dynamic.Core.Tokenizer
      @@ -203,7 +203,7 @@
      Property Value
      - Int32 + System.Int32 @@ -234,7 +234,7 @@
      Property Value
      - String + System.String diff --git a/docs/api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html b/docs/api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html new file mode 100644 index 00000000..3542737c --- /dev/null +++ b/docs/api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html @@ -0,0 +1,301 @@ + + + + + + + + Class CacheConfig + + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      + +
      +
      Search Results for
      +
      +

      +
      +
        +
        +
        + + + +
        + + + + + + diff --git a/docs/api/System.Linq.Dynamic.Core.Util.Cache.html b/docs/api/System.Linq.Dynamic.Core.Util.Cache.html new file mode 100644 index 00000000..07c6dbdb --- /dev/null +++ b/docs/api/System.Linq.Dynamic.Core.Util.Cache.html @@ -0,0 +1,129 @@ + + + + + + + + Namespace System.Linq.Dynamic.Core.Util.Cache + + + + + + + + + + + + + + + + +
        +
        + + + + +
        +
        + +
        +
        Search Results for
        +
        +

        +
        +
          +
          +
          + + + +
          + + + + + + diff --git a/docs/api/System.Linq.Dynamic.Core.html b/docs/api/System.Linq.Dynamic.Core.html index 41e2e6f2..319b0e48 100644 --- a/docs/api/System.Linq.Dynamic.Core.html +++ b/docs/api/System.Linq.Dynamic.Core.html @@ -97,7 +97,7 @@

          Dyn

          A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary.

          DynamicEnumerableExtensions

          -

          Define extensions on IEnumerable.

          +

          Define extensions on System.Collections.IEnumerable.

          DynamicExpressionParser

          Helper class to convert an expression into an LambdaExpression

          @@ -106,7 +106,7 @@

          Dynamic

          DynamicProperty

          DynamicQueryableExtensions

          -

          Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement IQueryable. +

          Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement System.Linq.IQueryable. It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by.

          diff --git a/docs/api/System.Tuple-2.html b/docs/api/System.Tuple-2.html index ad26279c..2496bb24 100644 --- a/docs/api/System.Tuple-2.html +++ b/docs/api/System.Tuple-2.html @@ -88,31 +88,31 @@

          Class Tuple
          Inheritance
          - +
          System.Object
          Tuple<T1, T2>
          Inherited Members
          - Object.ToString() + System.Object.ToString()
          - Object.Equals(Object) + System.Object.Equals(System.Object)
          - Object.Equals(Object, Object) + System.Object.Equals(System.Object, System.Object)
          - Object.ReferenceEquals(Object, Object) + System.Object.ReferenceEquals(System.Object, System.Object)
          - Object.GetHashCode() + System.Object.GetHashCode()
          - Object.GetType() + System.Object.GetType()
          - Object.MemberwiseClone() + System.Object.MemberwiseClone()

          Namespace: System
          diff --git a/docs/api/toc.html b/docs/api/toc.html index 4f222bf8..ca7a1c1e 100644 --- a/docs/api/toc.html +++ b/docs/api/toc.html @@ -71,6 +71,16 @@ +
        • + + System.Linq.Dynamic.Core.Config + + +
        • System.Linq.Dynamic.Core.CustomTypeProviders @@ -138,6 +148,16 @@
        • +
        • + + System.Linq.Dynamic.Core.Util.Cache + + +
        • diff --git a/docs/index.json b/docs/index.json index 491bb727..09879019 100644 --- a/docs/index.json +++ b/docs/index.json @@ -4,25 +4,35 @@ "title": "Namespace System", "keywords": "Namespace System Classes Tuple Represents a 2-tuple, or pair." }, + "api/System.Linq.Dynamic.Core.Config.html": { + "href": "api/System.Linq.Dynamic.Core.Config.html", + "title": "Namespace System.Linq.Dynamic.Core.Config", + "keywords": "Namespace System.Linq.Dynamic.Core.Config Enums StringLiteralParsingType Defines the types of string literal parsing that can be performed." + }, + "api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html": { + "href": "api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html", + "title": "Enum StringLiteralParsingType", + "keywords": "Enum StringLiteralParsingType Defines the types of string literal parsing that can be performed. Namespace : System.Linq.Dynamic.Core.Config Assembly : System.Linq.Dynamic.Core.dll Syntax public enum StringLiteralParsingType : byte Fields Name Description Default Represents the default string literal parsing type. Double quotes should be escaped using the default escape character (a ). To check if a Value equals a double quote, use this c# code: var expression = \"Value == \\\"\\\\\\\"\\\"\"; EscapeDoubleQuoteByTwoDoubleQuotes Represents a string literal parsing type where a double quote should be escaped by an extra double quote (\"). To check if a Value equals a double quote, use this c# code: var expression = \"Value == \\\"\\\"\\\"\\\"\";" + }, "api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html", "title": "Class AbstractDynamicLinqCustomTypeProvider", - "keywords": "Class AbstractDynamicLinqCustomTypeProvider The abstract DynamicLinqCustomTypeProvider which is used by the DefaultDynamicLinqCustomTypeProvider and can be used by a custom TypeProvider like in .NET Core. Inheritance Object AbstractDynamicLinqCustomTypeProvider DefaultDynamicLinqCustomTypeProvider Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public abstract class AbstractDynamicLinqCustomTypeProvider Methods | Improve this Doc View Source FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable) Finds the unique types marked with DynamicLinqTypeAttribute. Declaration protected IEnumerable FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable assemblies) Parameters Type Name Description IEnumerable < Assembly > assemblies The assemblies to process. Returns Type Description IEnumerable < Type > IEnumerable | Improve this Doc View Source GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable) Gets the assembly types annotated with DynamicLinqTypeAttribute in an Exception friendly way. Declaration protected IEnumerable GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable assemblies) Parameters Type Name Description IEnumerable < Assembly > assemblies The assemblies to process. Returns Type Description IEnumerable < Type > IEnumerable | Improve this Doc View Source ResolveType(IEnumerable, String) Resolve any type which is registered in the current application domain. Declaration protected Type ResolveType(IEnumerable assemblies, string typeName) Parameters Type Name Description IEnumerable < Assembly > assemblies The assemblies to inspect. String typeName The typename to resolve. Returns Type Description Type A resolved Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(IEnumerable, String) Resolve a type by the simple name which is registered in the current application domain. Declaration protected Type ResolveTypeBySimpleName(IEnumerable assemblies, string simpleTypeName) Parameters Type Name Description IEnumerable < Assembly > assemblies The assemblies to inspect. String simpleTypeName The simple typename to resolve. Returns Type Description Type A resolved Type or null when not found." + "keywords": "Class AbstractDynamicLinqCustomTypeProvider The abstract DynamicLinqCustomTypeProvider which is used by the DefaultDynamicLinqCustomTypeProvider and can be used by a custom TypeProvider like in .NET Core. Inheritance System.Object AbstractDynamicLinqCustomTypeProvider DefaultDynamicLinqCustomTypeProvider Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public abstract class AbstractDynamicLinqCustomTypeProvider Methods | Improve this Doc View Source FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable) Finds the unique types marked with DynamicLinqTypeAttribute. Declaration protected IEnumerable FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable assemblies) Parameters Type Name Description System.Collections.Generic.IEnumerable < System.Reflection.Assembly > assemblies The assemblies to process. Returns Type Description System.Collections.Generic.IEnumerable < System.Type > System.Collections.Generic.IEnumerable | Improve this Doc View Source GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable) Gets the assembly types annotated with DynamicLinqTypeAttribute in an Exception friendly way. Declaration protected Type[] GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable assemblies) Parameters Type Name Description System.Collections.Generic.IEnumerable < System.Reflection.Assembly > assemblies The assemblies to process. Returns Type Description System.Type [] Array of System.Type | Improve this Doc View Source ResolveType(IEnumerable, String) Resolve any type which is registered in the current application domain. Declaration protected Type ResolveType(IEnumerable assemblies, string typeName) Parameters Type Name Description System.Collections.Generic.IEnumerable < System.Reflection.Assembly > assemblies The assemblies to inspect. System.String typeName The typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(IEnumerable, String) Resolve a type by the simple name which is registered in the current application domain. Declaration protected Type ResolveTypeBySimpleName(IEnumerable assemblies, string simpleTypeName) Parameters Type Name Description System.Collections.Generic.IEnumerable < System.Reflection.Assembly > assemblies The assemblies to inspect. System.String simpleTypeName The simple typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found." }, "api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html", "title": "Class DefaultDynamicLinqCustomTypeProvider", - "keywords": "Class DefaultDynamicLinqCustomTypeProvider The default implementation for DefaultDynamicLinqCustomTypeProvider . Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute , and adds them as custom Dynamic Link types. Also provides functionality to resolve a Type in the current Application Domain. This class is used as default for full .NET Framework, so not for .NET Core Inheritance Object AbstractDynamicLinqCustomTypeProvider DefaultDynamicLinqCustomTypeProvider Implements IDynamicLinkCustomTypeProvider IDynamicLinqCustomTypeProvider Inherited Members AbstractDynamicLinqCustomTypeProvider.FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable) AbstractDynamicLinqCustomTypeProvider.ResolveType(IEnumerable, String) AbstractDynamicLinqCustomTypeProvider.ResolveTypeBySimpleName(IEnumerable, String) AbstractDynamicLinqCustomTypeProvider.GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable) Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public class DefaultDynamicLinqCustomTypeProvider : AbstractDynamicLinqCustomTypeProvider, IDynamicLinkCustomTypeProvider, IDynamicLinqCustomTypeProvider Constructors | Improve this Doc View Source DefaultDynamicLinqCustomTypeProvider(Boolean) Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class. Declaration public DefaultDynamicLinqCustomTypeProvider(bool cacheCustomTypes = true) Parameters Type Name Description Boolean cacheCustomTypes Defines whether to cache the CustomTypes (including extension methods) which are found in the Application Domain. Default set to 'true'. Methods | Improve this Doc View Source GetCustomTypes() Returns a list of custom types that System.Linq.Dynamic.Core will understand. Declaration public virtual HashSet GetCustomTypes() Returns Type Description HashSet < Type > A HashSet list of custom types. | Improve this Doc View Source GetExtensionMethods() Returns a list of custom extension methods that System.Linq.Dynamic.Core will understand. Declaration public Dictionary> GetExtensionMethods() Returns Type Description Dictionary < Type , List < MethodInfo >> A list of custom extension methods that System.Linq.Dynamic.Core will understand. | Improve this Doc View Source ResolveType(String) Resolve any type by fullname which is registered in the current application domain. Declaration public Type ResolveType(string typeName) Parameters Type Name Description String typeName The typename to resolve. Returns Type Description Type A resolved Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(String) Resolve any type by the simple name which is registered in the current application domain. Declaration public Type ResolveTypeBySimpleName(string simpleTypeName) Parameters Type Name Description String simpleTypeName The typename to resolve. Returns Type Description Type A resolved Type or null when not found. Implements IDynamicLinkCustomTypeProvider IDynamicLinqCustomTypeProvider" + "keywords": "Class DefaultDynamicLinqCustomTypeProvider The default implementation for DefaultDynamicLinqCustomTypeProvider . Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute , and adds them as custom Dynamic Link types. Also provides functionality to resolve a Type in the current Application Domain. This class is used as default for full .NET Framework and .NET Core App 2.x and higher. Inheritance System.Object AbstractDynamicLinqCustomTypeProvider DefaultDynamicLinqCustomTypeProvider Implements IDynamicLinkCustomTypeProvider IDynamicLinqCustomTypeProvider Inherited Members AbstractDynamicLinqCustomTypeProvider.FindTypesMarkedWithDynamicLinqTypeAttribute(IEnumerable) AbstractDynamicLinqCustomTypeProvider.ResolveType(IEnumerable, String) AbstractDynamicLinqCustomTypeProvider.ResolveTypeBySimpleName(IEnumerable, String) AbstractDynamicLinqCustomTypeProvider.GetAssemblyTypesWithDynamicLinqTypeAttribute(IEnumerable) System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public class DefaultDynamicLinqCustomTypeProvider : AbstractDynamicLinqCustomTypeProvider, IDynamicLinkCustomTypeProvider, IDynamicLinqCustomTypeProvider Constructors | Improve this Doc View Source DefaultDynamicLinqCustomTypeProvider(Boolean) Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class. Backwards compatibility for issue https://github.com/zzzprojects/System.Linq.Dynamic.Core/issues/830 . Declaration [Obsolete(\"Please use the DefaultDynamicLinqCustomTypeProvider(ParsingConfig config, bool cacheCustomTypes = true) constructor.\")] public DefaultDynamicLinqCustomTypeProvider(bool cacheCustomTypes = true) Parameters Type Name Description System.Boolean cacheCustomTypes Defines whether to cache the CustomTypes (including extension methods) which are found in the Application Domain. Default set to 'true'. | Improve this Doc View Source DefaultDynamicLinqCustomTypeProvider(ParsingConfig, Boolean) Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class. Declaration public DefaultDynamicLinqCustomTypeProvider(ParsingConfig config, bool cacheCustomTypes = true) Parameters Type Name Description ParsingConfig config The parsing configuration. System.Boolean cacheCustomTypes Defines whether to cache the CustomTypes (including extension methods) which are found in the Application Domain. Default set to 'true'. Methods | Improve this Doc View Source GetCustomTypes() Returns a list of custom types that System.Linq.Dynamic.Core will understand. Declaration public virtual HashSet GetCustomTypes() Returns Type Description System.Collections.Generic.HashSet < System.Type > A System.Collections.Generic.HashSet list of custom types. | Improve this Doc View Source GetExtensionMethods() Returns a list of custom extension methods that System.Linq.Dynamic.Core will understand. Declaration public Dictionary> GetExtensionMethods() Returns Type Description System.Collections.Generic.Dictionary < System.Type , System.Collections.Generic.List < System.Reflection.MethodInfo >> A list of custom extension methods that System.Linq.Dynamic.Core will understand. | Improve this Doc View Source ResolveType(String) Resolve any type by fullname which is registered in the current application domain. Declaration public Type ResolveType(string typeName) Parameters Type Name Description System.String typeName The typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(String) Resolve any type by the simple name which is registered in the current application domain. Declaration public Type ResolveTypeBySimpleName(string simpleTypeName) Parameters Type Name Description System.String simpleTypeName The typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found. Implements IDynamicLinkCustomTypeProvider IDynamicLinqCustomTypeProvider" }, "api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html", "title": "Class DynamicLinqTypeAttribute", - "keywords": "Class DynamicLinqTypeAttribute Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type. Inheritance Object Attribute DynamicLinqTypeAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, Boolean) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, Boolean) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(ParameterInfo, Boolean) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, Boolean) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, Boolean) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, Boolean) Attribute.GetCustomAttributes(Module, Type, Boolean) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, Boolean) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, Boolean) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, Boolean) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, Boolean) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, Boolean) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, Boolean) Attribute.Equals(Object) Attribute.GetHashCode() Attribute.Match(Object) Attribute.IsDefaultAttribute() Attribute._Attribute.GetTypeInfoCount(UInt32) Attribute._Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) Attribute._Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) Attribute._Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) Attribute.TypeId Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, AllowMultiple = false, Inherited = false)] public sealed class DynamicLinqTypeAttribute : Attribute, _Attribute Implements System.Runtime.InteropServices._Attribute" + "keywords": "Class DynamicLinqTypeAttribute Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type. Inheritance System.Object System.Attribute DynamicLinqTypeAttribute Implements System.Runtime.InteropServices._Attribute Inherited Members System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Type) System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo) System.Attribute.GetCustomAttributes(System.Reflection.MemberInfo, System.Boolean) System.Attribute.IsDefined(System.Reflection.MemberInfo, System.Type) System.Attribute.IsDefined(System.Reflection.MemberInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo, System.Type) System.Attribute.GetCustomAttribute(System.Reflection.MemberInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo) System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Type) System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.ParameterInfo, System.Boolean) System.Attribute.IsDefined(System.Reflection.ParameterInfo, System.Type) System.Attribute.IsDefined(System.Reflection.ParameterInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo, System.Type) System.Attribute.GetCustomAttribute(System.Reflection.ParameterInfo, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Type) System.Attribute.GetCustomAttributes(System.Reflection.Module) System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.Module, System.Type, System.Boolean) System.Attribute.IsDefined(System.Reflection.Module, System.Type) System.Attribute.IsDefined(System.Reflection.Module, System.Type, System.Boolean) System.Attribute.GetCustomAttribute(System.Reflection.Module, System.Type) System.Attribute.GetCustomAttribute(System.Reflection.Module, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Type) System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Type, System.Boolean) System.Attribute.GetCustomAttributes(System.Reflection.Assembly) System.Attribute.GetCustomAttributes(System.Reflection.Assembly, System.Boolean) System.Attribute.IsDefined(System.Reflection.Assembly, System.Type) System.Attribute.IsDefined(System.Reflection.Assembly, System.Type, System.Boolean) System.Attribute.GetCustomAttribute(System.Reflection.Assembly, System.Type) System.Attribute.GetCustomAttribute(System.Reflection.Assembly, System.Type, System.Boolean) System.Attribute.Equals(System.Object) System.Attribute.GetHashCode() System.Attribute.Match(System.Object) System.Attribute.IsDefaultAttribute() System.Attribute.System.Runtime.InteropServices._Attribute.GetTypeInfoCount(System.UInt32) System.Attribute.System.Runtime.InteropServices._Attribute.GetTypeInfo(System.UInt32, System.UInt32, System.IntPtr) System.Attribute.System.Runtime.InteropServices._Attribute.GetIDsOfNames(System.Guid, System.IntPtr, System.UInt32, System.UInt32, System.IntPtr) System.Attribute.System.Runtime.InteropServices._Attribute.Invoke(System.UInt32, System.Guid, System.UInt32, System.Int16, System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr) System.Attribute.TypeId System.Object.ToString() System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface, AllowMultiple = false, Inherited = false)] public sealed class DynamicLinqTypeAttribute : Attribute, _Attribute Implements System.Runtime.InteropServices._Attribute" }, "api/System.Linq.Dynamic.Core.CustomTypeProviders.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.html", "title": "Namespace System.Linq.Dynamic.Core.CustomTypeProviders", - "keywords": "Namespace System.Linq.Dynamic.Core.CustomTypeProviders Classes AbstractDynamicLinqCustomTypeProvider The abstract DynamicLinqCustomTypeProvider which is used by the DefaultDynamicLinqCustomTypeProvider and can be used by a custom TypeProvider like in .NET Core. DefaultDynamicLinqCustomTypeProvider The default implementation for DefaultDynamicLinqCustomTypeProvider . Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute , and adds them as custom Dynamic Link types. Also provides functionality to resolve a Type in the current Application Domain. This class is used as default for full .NET Framework, so not for .NET Core DynamicLinqTypeAttribute Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type. Interfaces IDynamicLinkCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type. Note that this interface will be marked obsolete in the next version. Use IDynamicLinqCustomTypeProvider instead. IDynamicLinqCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type." + "keywords": "Namespace System.Linq.Dynamic.Core.CustomTypeProviders Classes AbstractDynamicLinqCustomTypeProvider The abstract DynamicLinqCustomTypeProvider which is used by the DefaultDynamicLinqCustomTypeProvider and can be used by a custom TypeProvider like in .NET Core. DefaultDynamicLinqCustomTypeProvider The default implementation for DefaultDynamicLinqCustomTypeProvider . Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute , and adds them as custom Dynamic Link types. Also provides functionality to resolve a Type in the current Application Domain. This class is used as default for full .NET Framework and .NET Core App 2.x and higher. DynamicLinqTypeAttribute Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type. Interfaces IDynamicLinkCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type. Note that this interface will be marked obsolete in the next version. Use IDynamicLinqCustomTypeProvider instead. IDynamicLinqCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type." }, "api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinkCustomTypeProvider.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinkCustomTypeProvider.html", @@ -32,42 +42,42 @@ "api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html": { "href": "api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html", "title": "Interface IDynamicLinqCustomTypeProvider", - "keywords": "Interface IDynamicLinqCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type. Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IDynamicLinqCustomTypeProvider Methods | Improve this Doc View Source GetCustomTypes() Returns a list of custom types that System.Linq.Dynamic.Core will understand. Declaration HashSet GetCustomTypes() Returns Type Description HashSet < Type > A HashSet list of custom types. | Improve this Doc View Source GetExtensionMethods() Returns a list of custom extension methods that System.Linq.Dynamic.Core will understand. Declaration Dictionary> GetExtensionMethods() Returns Type Description Dictionary < Type , List < MethodInfo >> A list of custom extension methods that System.Linq.Dynamic.Core will understand. | Improve this Doc View Source ResolveType(String) Resolve any type by fullname which is registered in the current application domain. Declaration Type ResolveType(string typeName) Parameters Type Name Description String typeName The typename to resolve. Returns Type Description Type A resolved Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(String) Resolve any type by the simple name which is registered in the current application domain. Declaration Type ResolveTypeBySimpleName(string simpleTypeName) Parameters Type Name Description String simpleTypeName The typename to resolve. Returns Type Description Type A resolved Type or null when not found." + "keywords": "Interface IDynamicLinqCustomTypeProvider Interface for providing functionality to find custom types for or resolve any type. Namespace : System.Linq.Dynamic.Core.CustomTypeProviders Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IDynamicLinqCustomTypeProvider Methods | Improve this Doc View Source GetCustomTypes() Returns a list of custom types that System.Linq.Dynamic.Core will understand. Declaration HashSet GetCustomTypes() Returns Type Description System.Collections.Generic.HashSet < System.Type > A System.Collections.Generic.HashSet list of custom types. | Improve this Doc View Source GetExtensionMethods() Returns a list of custom extension methods that System.Linq.Dynamic.Core will understand. Declaration Dictionary> GetExtensionMethods() Returns Type Description System.Collections.Generic.Dictionary < System.Type , System.Collections.Generic.List < System.Reflection.MethodInfo >> A list of custom extension methods that System.Linq.Dynamic.Core will understand. | Improve this Doc View Source ResolveType(String) Resolve any type by fullname which is registered in the current application domain. Declaration Type ResolveType(string typeName) Parameters Type Name Description System.String typeName The typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found. | Improve this Doc View Source ResolveTypeBySimpleName(String) Resolve any type by the simple name which is registered in the current application domain. Declaration Type ResolveTypeBySimpleName(string simpleTypeName) Parameters Type Name Description System.String simpleTypeName The typename to resolve. Returns Type Description System.Type A resolved System.Type or null when not found." }, "api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html": { "href": "api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html", "title": "Class DefaultQueryableAnalyzer", - "keywords": "Class DefaultQueryableAnalyzer Default implementation. Inheritance Object DefaultQueryableAnalyzer Implements IQueryableAnalyzer Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class DefaultQueryableAnalyzer : IQueryableAnalyzer Methods | Improve this Doc View Source SupportsLinqToObjects(IQueryable, IQueryProvider) Determines whether the specified query (and provider) supports LinqToObjects. Declaration public bool SupportsLinqToObjects(IQueryable query, IQueryProvider provider = null) Parameters Type Name Description IQueryable query The query to check. IQueryProvider provider The provider to check (can be null). Returns Type Description Boolean true/false Implements IQueryableAnalyzer See Also IQueryableAnalyzer" + "keywords": "Class DefaultQueryableAnalyzer Default implementation. Inheritance System.Object DefaultQueryableAnalyzer Implements IQueryableAnalyzer Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class DefaultQueryableAnalyzer : IQueryableAnalyzer Methods | Improve this Doc View Source SupportsLinqToObjects(IQueryable, IQueryProvider) Determines whether the specified query (and provider) supports LinqToObjects. Declaration public bool SupportsLinqToObjects(IQueryable query, IQueryProvider provider = null) Parameters Type Name Description System.Linq.IQueryable query The query to check. System.Linq.IQueryProvider provider The provider to check (can be null). Returns Type Description System.Boolean true/false Implements IQueryableAnalyzer See Also IQueryableAnalyzer" }, "api/System.Linq.Dynamic.Core.DynamicClass.html": { "href": "api/System.Linq.Dynamic.Core.DynamicClass.html", "title": "Class DynamicClass", - "keywords": "Class DynamicClass Provides a base class for dynamic objects for Net 3.5 Inheritance Object DynamicClass Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public abstract class DynamicClass Methods | Improve this Doc View Source GetDynamicPropertyValue(String) Gets the dynamic property value by name. Declaration public object GetDynamicPropertyValue(string propertyName) Parameters Type Name Description String propertyName Name of the property. Returns Type Description Object value | Improve this Doc View Source GetDynamicPropertyValue(String) Gets the dynamic property by name. Declaration public T GetDynamicPropertyValue(string propertyName) Parameters Type Name Description String propertyName Name of the property. Returns Type Description T T Type Parameters Name Description T The type. | Improve this Doc View Source SetDynamicPropertyValue(String, Object) Sets the dynamic property value by name. Declaration public void SetDynamicPropertyValue(string propertyName, object value) Parameters Type Name Description String propertyName Name of the property. Object value The value. | Improve this Doc View Source SetDynamicPropertyValue(String, T) Sets the dynamic property value by name. Declaration public void SetDynamicPropertyValue(string propertyName, T value) Parameters Type Name Description String propertyName Name of the property. T value The value. Type Parameters Name Description T The type." + "keywords": "Class DynamicClass Provides a base class for dynamic objects for Net 3.5 Inheritance System.Object DynamicClass Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public abstract class DynamicClass Methods | Improve this Doc View Source GetDynamicPropertyValue(String) Gets the dynamic property value by name. Declaration public object GetDynamicPropertyValue(string propertyName) Parameters Type Name Description System.String propertyName Name of the property. Returns Type Description System.Object value | Improve this Doc View Source GetDynamicPropertyValue(String) Gets the dynamic property by name. Declaration public T GetDynamicPropertyValue(string propertyName) Parameters Type Name Description System.String propertyName Name of the property. Returns Type Description T T Type Parameters Name Description T The type. | Improve this Doc View Source SetDynamicPropertyValue(String, Object) Sets the dynamic property value by name. Declaration public void SetDynamicPropertyValue(string propertyName, object value) Parameters Type Name Description System.String propertyName Name of the property. System.Object value The value. | Improve this Doc View Source SetDynamicPropertyValue(String, T) Sets the dynamic property value by name. Declaration public void SetDynamicPropertyValue(string propertyName, T value) Parameters Type Name Description System.String propertyName Name of the property. T value The value. Type Parameters Name Description T The type." }, "api/System.Linq.Dynamic.Core.DynamicClassFactory.html": { "href": "api/System.Linq.Dynamic.Core.DynamicClassFactory.html", "title": "Class DynamicClassFactory", - "keywords": "Class DynamicClassFactory A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary . Inheritance Object DynamicClassFactory Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicClassFactory Methods | Improve this Doc View Source CreateGenericComparerType(Type, Type) Create a GenericComparerType based on the GenericType and an instance of a IComparer . Declaration public static Type CreateGenericComparerType(Type comparerGenericType, Type comparerType) Parameters Type Name Description Type comparerGenericType The GenericType Type comparerType The IComparer instance Returns Type Description Type Type | Improve this Doc View Source CreateType(IList, Boolean) The CreateType method creates a new data class with a given set of public properties and returns the System.Type object for the newly created class. If a data class with an identical sequence of properties has already been created, the System.Type object for this class is returned. Data classes implement private instance variables and read/write property accessors for the specified properties.Data classes also override the Equals and GetHashCode members to implement by-value equality. Data classes are created in an in-memory assembly in the current application domain. All data classes inherit from DynamicClass and are given automatically generated names that should be considered private (the names will be unique within the application domain but not across multiple invocations of the application). Note that once created, a data class stays in memory for the lifetime of the current application domain. There is currently no way to unload a dynamically created data class. The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers. This feature in turn is often used with the dynamic Select method to create projections. Declaration public static Type CreateType(IList properties, bool createParameterCtor = true) Parameters Type Name Description IList < DynamicProperty > properties The DynamicProperties Boolean createParameterCtor Create a constructor with parameters. Default set to true. Note that for Linq-to-Database objects, this needs to be set to false. Returns Type Description Type Type Examples DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty(\"Name\", typeof(string)), new DynamicProperty(\"Birthday\", typeof(DateTime)) }; Type type = DynamicClassFactory.CreateType(props); DynamicClass dynamicClass = Activator.CreateInstance(type) as DynamicClass; dynamicClass.SetDynamicProperty(\"Name\", \"Albert\"); dynamicClass.SetDynamicProperty(\"Birthday\", new DateTime(1879, 3, 14)); Console.WriteLine(dynamicClass);" + "keywords": "Class DynamicClassFactory A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary . Inheritance System.Object DynamicClassFactory Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicClassFactory Methods | Improve this Doc View Source CreateGenericComparerType(Type, Type) Create a GenericComparerType based on the GenericType and an instance of a System.Collections.IComparer . Declaration public static Type CreateGenericComparerType(Type comparerGenericType, Type comparerType) Parameters Type Name Description System.Type comparerGenericType The GenericType System.Type comparerType The System.Collections.IComparer instance Returns Type Description System.Type Type | Improve this Doc View Source CreateType(IList, Boolean) The CreateType method creates a new data class with a given set of public properties and returns the System.Type object for the newly created class. If a data class with an identical sequence of properties has already been created, the System.Type object for this class is returned. Data classes implement private instance variables and read/write property accessors for the specified properties.Data classes also override the Equals and GetHashCode members to implement by-value equality. Data classes are created in an in-memory assembly in the current application domain. All data classes inherit from DynamicClass and are given automatically generated names that should be considered private (the names will be unique within the application domain but not across multiple invocations of the application). Note that once created, a data class stays in memory for the lifetime of the current application domain. There is currently no way to unload a dynamically created data class. The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers. This feature in turn is often used with the dynamic Select method to create projections. Declaration public static Type CreateType(IList properties, bool createParameterCtor = true) Parameters Type Name Description System.Collections.Generic.IList < DynamicProperty > properties The DynamicProperties System.Boolean createParameterCtor Create a constructor with parameters. Default set to true. Note that for Linq-to-Database objects, this needs to be set to false. Returns Type Description System.Type Type Examples DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty(\"Name\", typeof(string)), new DynamicProperty(\"Birthday\", typeof(DateTime)) }; Type type = DynamicClassFactory.CreateType(props); DynamicClass dynamicClass = (DynamicClass) Activator.CreateInstance(type)!; dynamicClass.SetDynamicPropertyValue(\"Name\", \"Albert\"); dynamicClass.SetDynamicPropertyValue(\"Birthday\", new DateTime(1879, 3, 14));" }, "api/System.Linq.Dynamic.Core.DynamicEnumerableExtensions.html": { "href": "api/System.Linq.Dynamic.Core.DynamicEnumerableExtensions.html", "title": "Class DynamicEnumerableExtensions", - "keywords": "Class DynamicEnumerableExtensions Define extensions on IEnumerable . Inheritance Object DynamicEnumerableExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicEnumerableExtensions Methods | Improve this Doc View Source ToDynamicArray(IEnumerable) Creates an array of dynamic objects from a IEnumerable . Declaration public static object[] ToDynamicArray(this IEnumerable source) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Returns Type Description Object [] An array that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicArray(IEnumerable, Type) Creates an array of dynamic objects from a IEnumerable . Declaration public static object[] ToDynamicArray(this IEnumerable source, Type type) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Type type A Type cast to. Returns Type Description Object [] An Array that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicArray(IEnumerable) Creates an array of dynamic objects from a IEnumerable . Declaration public static T[] ToDynamicArray(this IEnumerable source) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Returns Type Description T[] An Array{T} that contains the elements from the input sequence. Type Parameters Name Description T The generic type. | Improve this Doc View Source ToDynamicList(IEnumerable) Creates a list of dynamic objects from a IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Returns Type Description List < Object > A List that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicList(IEnumerable, Type) Creates a list of dynamic objects from a IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source, Type type) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Type type A Type cast to. Returns Type Description List < Object > A List that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicList(IEnumerable) Creates a list of dynamic objects from a IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source) Parameters Type Name Description IEnumerable source A IEnumerable to create an array from. Returns Type Description List A List{T} that contains the elements from the input sequence. Type Parameters Name Description T Generic Type" + "keywords": "Class DynamicEnumerableExtensions Define extensions on System.Collections.IEnumerable . Inheritance System.Object DynamicEnumerableExtensions Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicEnumerableExtensions Methods | Improve this Doc View Source ToDynamicArray(IEnumerable) Creates an array of dynamic objects from a System.Collections.IEnumerable . Declaration public static object[] ToDynamicArray(this IEnumerable source) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. Returns Type Description System.Object [] An array that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicArray(IEnumerable, Type) Creates an array of dynamic objects from a System.Collections.IEnumerable . Declaration public static object[] ToDynamicArray(this IEnumerable source, Type type) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. System.Type type A System.Type cast to. Returns Type Description System.Object [] An Array that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicArray(IEnumerable) Creates an array of dynamic objects from a System.Collections.IEnumerable . Declaration public static T[] ToDynamicArray(this IEnumerable source) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. Returns Type Description T[] An Array{T} that contains the elements from the input sequence. Type Parameters Name Description T The generic type. | Improve this Doc View Source ToDynamicList(IEnumerable) Creates a list of dynamic objects from a System.Collections.IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. Returns Type Description System.Collections.Generic.List < System.Object > A List that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicList(IEnumerable, Type) Creates a list of dynamic objects from a System.Collections.IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source, Type type) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. System.Type type A System.Type cast to. Returns Type Description System.Collections.Generic.List < System.Object > A List that contains the elements from the input sequence. | Improve this Doc View Source ToDynamicList(IEnumerable) Creates a list of dynamic objects from a System.Collections.IEnumerable . Declaration public static List ToDynamicList(this IEnumerable source) Parameters Type Name Description System.Collections.IEnumerable source A System.Collections.IEnumerable to create an array from. Returns Type Description System.Collections.Generic.List A List{T} that contains the elements from the input sequence. Type Parameters Name Description T Generic Type" }, "api/System.Linq.Dynamic.Core.DynamicExpressionParser.html": { "href": "api/System.Linq.Dynamic.Core.DynamicExpressionParser.html", "title": "Class DynamicExpressionParser", - "keywords": "Class DynamicExpressionParser Helper class to convert an expression into an LambdaExpression Inheritance Object DynamicExpressionParser Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicExpressionParser Methods | Improve this Doc View Source ParseLambda(Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParameterExpression [] parameters A array from ParameterExpressions. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type resultType, string expression, params object[] values) Parameters Type Name Description Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description Type itType The main type from the dynamic class expression. Type resultType Type of the result. If not specified, it will be generated dynamically. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description LambdaExpression The generated LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, ParameterExpression[], String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. ParameterExpression [] parameters A array from ParameterExpressions. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, ParameterExpression[], String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. ParameterExpression [] parameters A array from ParameterExpressions. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description T The it -Type. TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. String expression The expression. Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description Expression < Func > The generated Expression Type Parameters Name Description T The it -Type. TResult The type of the result." + "keywords": "Class DynamicExpressionParser Helper class to convert an expression into an LambdaExpression Inheritance System.Object DynamicExpressionParser Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicExpressionParser Methods | Improve this Doc View Source ParseLambda(Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParsingConfig parsingConfig, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParsingConfig parsingConfig, Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, ParameterExpression[], Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type delegateType, ParameterExpression[] parameters, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(Type, Type, String, Object[]) Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.) Declaration [PublicAPI] public static LambdaExpression ParseLambda(Type itType, Type resultType, string expression, params object[] values) Parameters Type Name Description System.Type itType The main type from the dynamic class expression. System.Type resultType Type of the result. If not specified, it will be generated dynamically. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.LambdaExpression The generated System.Linq.Expressions.LambdaExpression | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, ParameterExpression[], String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, ParameterExpression[], String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, ParameterExpression[] parameters, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.Linq.Expressions.ParameterExpression [] parameters A array from ParameterExpressions. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source ParseLambda(ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description T The it -Type. TResult The type of the result. | Improve this Doc View Source ParseLambda(Type, ParsingConfig, Boolean, String, Object[]) Parses an expression into a Typed Expression. Declaration [PublicAPI] public static Expression> ParseLambda(Type delegateType, ParsingConfig parsingConfig, bool createParameterCtor, string expression, params object[] values) Parameters Type Name Description System.Type delegateType The delegate type. ParsingConfig parsingConfig The Configuration for the parsing. System.Boolean createParameterCtor if set to true then also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities. System.String expression The expression. System.Object [] values An object array that contains zero or more objects which are used as replacement values. Returns Type Description System.Linq.Expressions.Expression < System.Func > The generated System.Linq.Expressions.Expression Type Parameters Name Description T The it -Type. TResult The type of the result." }, "api/System.Linq.Dynamic.Core.DynamicProperty.html": { "href": "api/System.Linq.Dynamic.Core.DynamicProperty.html", "title": "Class DynamicProperty", - "keywords": "Class DynamicProperty DynamicProperty Inheritance Object DynamicProperty Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class DynamicProperty Constructors | Improve this Doc View Source DynamicProperty(String, Type) Initializes a new instance of the DynamicProperty class. Declaration public DynamicProperty(string name, Type type) Parameters Type Name Description String name The name from the property. Type type The type from the property. Properties | Improve this Doc View Source Name Gets the name from the property. Declaration public string Name { get; } Property Value Type Description String The name from the property. | Improve this Doc View Source Type Gets the type from the property. Declaration public Type Type { get; } Property Value Type Description Type The type from the property." + "keywords": "Class DynamicProperty DynamicProperty Inheritance System.Object DynamicProperty Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class DynamicProperty Constructors | Improve this Doc View Source DynamicProperty(String, Type) Initializes a new instance of the DynamicProperty class. Declaration public DynamicProperty(string name, Type type) Parameters Type Name Description System.String name The name from the property. System.Type type The type from the property. Properties | Improve this Doc View Source Name Gets the name from the property. Declaration public string Name { get; } Property Value Type Description System.String The name from the property. | Improve this Doc View Source Type Gets the type from the property. Declaration public Type Type { get; } Property Value Type Description System.Type The type from the property." }, "api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html": { "href": "api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html", "title": "Class DynamicQueryableExtensions", - "keywords": "Class DynamicQueryableExtensions Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement IQueryable . It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by. Inheritance Object DynamicQueryableExtensions Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicQueryableExtensions Methods | Improve this Doc View Source Aggregate(IQueryable, String, String) Dynamically runs an aggregate function on the IQueryable. Declaration public static object Aggregate(this IQueryable source, string function, string member) Parameters Type Name Description IQueryable source The IQueryable data source. String function The name of the function to run. Can be Sum, Average, Min or Max. String member The name of the property to aggregate over. Returns Type Description Object The value of the aggregate function run over the specified property. | Improve this Doc View Source All(IQueryable, ParsingConfig, String, Object[]) Determines whether all the elements of a sequence satisfy a condition. Declaration [PublicAPI] public static bool All(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence whose elements to test for a condition. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Boolean true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false. | Improve this Doc View Source All(IQueryable, String, Object[]) Determines whether all the elements of a sequence satisfy a condition. Declaration [PublicAPI] public static bool All(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence whose elements to test for a condition. String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Boolean true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false. | Improve this Doc View Source Any(IQueryable) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source) Parameters Type Name Description IQueryable source A sequence to check for being empty. Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Any(); | Improve this Doc View Source Any(IQueryable, ParsingConfig, String, Object[]) Determines whether a sequence contains any elements. Declaration [PublicAPI] public static bool Any(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Any(\"Income > 50\"); var result2 = queryable.Any(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.Any()\"); | Improve this Doc View Source Any(IQueryable, LambdaExpression) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A sequence to check for being empty. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false. | Improve this Doc View Source Any(IQueryable, String, Object[]) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Boolean true if the source sequence contains any elements; otherwise, false. | Improve this Doc View Source AsDynamicEnumerable(IQueryable) Returns the input typed as IEnumerable of Object ./> Declaration public static IEnumerable AsDynamicEnumerable(this IQueryable source) Parameters Type Name Description IQueryable source The sequence to type as IEnumerable of Object . Returns Type Description IEnumerable < Object > The input typed as IEnumerable of Object . | Improve this Doc View Source Average(IQueryable) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the average of. Returns Type Description Double The average of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Average(); var result2 = queryable.Select(\"Roles.Average()\"); | Improve this Doc View Source Average(IQueryable, ParsingConfig, String, Object[]) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the average of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Double The average of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Average(\"Income\"); | Improve this Doc View Source Average(IQueryable, LambdaExpression) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the average of. LambdaExpression lambda A Lambda Expression. Returns Type Description Double The average of the values in the sequence. | Improve this Doc View Source Average(IQueryable, String, Object[]) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Double The average of the values in the sequence. | Improve this Doc View Source Cast(IQueryable, ParsingConfig, String) Converts the elements of an IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, ParsingConfig config, string typeName) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be converted. ParsingConfig config The ParsingConfig . String typeName The type to convert the elements of source to. Returns Type Description IQueryable An IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Cast(IQueryable, String) Converts the elements of an IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, string typeName) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be converted. String typeName The type to convert the elements of source to. Returns Type Description IQueryable An IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Cast(IQueryable, Type) Converts the elements of an IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, Type type) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be converted. Type type The type to convert the elements of source to. Returns Type Description IQueryable An IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Count(IQueryable) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. Returns Type Description Int32 The number of elements in the input sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Count(); | Improve this Doc View Source Count(IQueryable, ParsingConfig, String, Object[]) Returns the number of elements in a sequence. Declaration [PublicAPI] public static int Count(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Int32 The number of elements in the specified sequence that satisfies a condition. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Count(\"Income > 50\"); var result2 = queryable.Count(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.Count()\"); | Improve this Doc View Source Count(IQueryable, LambdaExpression) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Int32 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source Count(IQueryable, String, Object[]) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Int32 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source DefaultIfEmpty(IQueryable) Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. Declaration public static IQueryable DefaultIfEmpty(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable to return a default value for if empty. Returns Type Description IQueryable An IQueryable that contains default if source is empty; otherwise, source. Examples IQueryable queryable = employees.DefaultIfEmpty(); | Improve this Doc View Source DefaultIfEmpty(IQueryable, Object) Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. Declaration public static IQueryable DefaultIfEmpty(this IQueryable source, object defaultValue) Parameters Type Name Description IQueryable source The IQueryable to return a default value for if empty. Object defaultValue The value to return if the sequence is empty. Returns Type Description IQueryable An IQueryable that contains defaultValue if source is empty; otherwise, source. Examples IQueryable queryable = employees.DefaultIfEmpty(new Employee()); | Improve this Doc View Source Distinct(IQueryable) Returns distinct elements from a sequence by using the default equality comparer to compare values. Declaration public static IQueryable Distinct(this IQueryable source) Parameters Type Name Description IQueryable source The sequence to remove duplicate elements from. Returns Type Description IQueryable An IQueryable that contains distinct elements from the source sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Distinct(); var result2 = queryable.Select(\"Roles.Distinct()\"); | Improve this Doc View Source First(IQueryable) Returns the first element of a sequence. Declaration public static object First(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. Returns Type Description Object The first element in source. | Improve this Doc View Source First(IQueryable, ParsingConfig, String, Object[]) Returns the first element of a sequence that satisfies a specified condition. Declaration [PublicAPI] public static object First(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source First(IQueryable, LambdaExpression) Returns the first element of a sequence that satisfies a specified condition. Declaration public static object First(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source First(IQueryable, String, Object[]) Returns the first element of a sequence that satisfies a specified condition. Declaration public static object First(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source FirstOrDefault(IQueryable) Returns the first element of a sequence, or a default value if the sequence contains no elements. Declaration public static object FirstOrDefault(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. Returns Type Description Object default if source is empty; otherwise, the first element in source. | Improve this Doc View Source FirstOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration [PublicAPI] public static object FirstOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source FirstOrDefault(IQueryable, LambdaExpression) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration public static object FirstOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the first element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source FirstOrDefault(IQueryable, String, Object[]) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration public static object FirstOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, IEqualityComparer equalityComparer, params object[] args) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. IEqualityComparer equalityComparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, params object[] args) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\"); | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. String resultSelector A string expression to specify a result value from each group. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\", \"StringProperty\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\", \"new (StringProperty1, StringProperty2)\"); | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, IEqualityComparer equalityComparer) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. String resultSelector A string expression to specify a result value from each group. IEqualityComparer equalityComparer The comparer to use. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, IEqualityComparer equalityComparer, object[] args) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. String resultSelector A string expression to specify a result value from each group. IEqualityComparer equalityComparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, object[] args) Parameters Type Name Description IQueryable source A IQueryable whose elements to group. ParsingConfig config The ParsingConfig . String keySelector A string expression to specify the key for each element. String resultSelector A string expression to specify a result value from each group. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\", \"StringProperty\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\", \"new (StringProperty1, StringProperty2)\"); | Improve this Doc View Source GroupBy(IQueryable, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, IEqualityComparer equalityComparer, params object[] args) Parameters Type Name Description IQueryable source String keySelector IEqualityComparer equalityComparer Object [] args Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, string keySelector, params object[] args) Parameters Type Name Description IQueryable source String keySelector Object [] args Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector) Parameters Type Name Description IQueryable source String keySelector String resultSelector Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, IEqualityComparer) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, IEqualityComparer equalityComparer) Parameters Type Name Description IQueryable source String keySelector String resultSelector IEqualityComparer equalityComparer Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, IEqualityComparer equalityComparer, object[] args) Parameters Type Name Description IQueryable source String keySelector String resultSelector IEqualityComparer equalityComparer Object [] args Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, object[] args) Parameters Type Name Description IQueryable source String keySelector String resultSelector Object [] args Returns Type Description IQueryable A IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupByMany(IEnumerable, Func[]) Groups the elements of a sequence according to multiple specified key functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, params Func[] keySelectors) Parameters Type Name Description IEnumerable source A IEnumerable whose elements to group. Func [] keySelectors Lambda expressions to specify the keys for each element. Returns Type Description IEnumerable < GroupResult > A IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupByMany(IEnumerable, ParsingConfig, String[]) Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, ParsingConfig config, params string[] keySelectors) Parameters Type Name Description IEnumerable source A IEnumerable whose elements to group. ParsingConfig config The ParsingConfig . String [] keySelectors String expressions to specify the keys for each element. Returns Type Description IEnumerable < GroupResult > A IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupByMany(IEnumerable, String[]) Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, params string[] keySelectors) Parameters Type Name Description IEnumerable source String [] keySelectors Returns Type Description IEnumerable < GroupResult > A IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupJoin(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. Declaration public static IQueryable GroupJoin(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer IEnumerable inner String outerKeySelector String innerKeySelector String resultSelector Object [] args Returns Type Description IQueryable An IQueryable obtained by performing a grouped join on two sequences. | Improve this Doc View Source GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. Declaration public static IQueryable GroupJoin(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . IEnumerable inner The sequence to join to the first sequence. String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. String resultSelector A dynamic function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence. Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable obtained by performing a grouped join on two sequences. | Improve this Doc View Source Join(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer IEnumerable inner String outerKeySelector String innerKeySelector String resultSelector Object [] args Returns Type Description IQueryable An IQueryable obtained by performing an inner join on two sequences. | Improve this Doc View Source Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . IEnumerable inner The sequence to join to the first sequence. String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. String resultSelector A dynamic function to create a result element from two matching elements. Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable obtained by performing an inner join on two sequences. | Improve this Doc View Source Join(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer IEnumerable inner String outerKeySelector String innerKeySelector String resultSelector Object [] args Returns Type Description IQueryable An IQueryable that has elements of type TResult obtained by performing an inner join on two sequences. Type Parameters Name Description TElement The type of the elements of both sequences, and the result. Remarks This overload only works on elements where both sequences and the resulting element match. | Improve this Doc View Source Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . IEnumerable inner The sequence to join to the first sequence. String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. String resultSelector A dynamic function to create a result element from two matching elements. Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable that has elements of type TResult obtained by performing an inner join on two sequences. Type Parameters Name Description TElement The type of the elements of both sequences, and the result. Remarks This overload only works on elements where both sequences and the resulting element match. | Improve this Doc View Source Last(IQueryable) Returns the last element of a sequence. Declaration public static object Last(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. Returns Type Description Object The last element in source. | Improve this Doc View Source Last(IQueryable, ParsingConfig, String, Object[]) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source Last(IQueryable, LambdaExpression) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source Last(IQueryable, String, Object[]) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable) Returns the last element of a sequence, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. Returns Type Description Object default if source is empty; otherwise, the last element in source. | Improve this Doc View Source LastOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable, LambdaExpression) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable, String, Object[]) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source LongCount(IQueryable) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. Returns Type Description Int64 The number of elements in the input sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.LongCount(); | Improve this Doc View Source LongCount(IQueryable, ParsingConfig, String, Object[]) Returns the number of elements in a sequence. Declaration [PublicAPI] public static long LongCount(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Int64 The number of elements in the specified sequence that satisfies a condition. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.LongCount(\"Income > 50\"); var result2 = queryable.LongCount(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.LongCount()\"); | Improve this Doc View Source LongCount(IQueryable, LambdaExpression) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable that contains the elements to be counted. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Int64 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source LongCount(IQueryable, String, Object[]) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Int64 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source Max(IQueryable) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source) Parameters Type Name Description IQueryable source A sequence of values to calculate find the max for. Returns Type Description Object The max element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Max(); var result2 = queryable.Select(\"Roles.Max()\"); | Improve this Doc View Source Max(IQueryable, ParsingConfig, String, Object[]) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to calculate find the max for. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The max element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Max(\"Income\"); | Improve this Doc View Source Max(IQueryable, LambdaExpression) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A sequence of values to calculate find the max for. LambdaExpression lambda A Lambda Expression. Returns Type Description Object The max element in the sequence. | Improve this Doc View Source Max(IQueryable, String, Object[]) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The max element in the sequence. | Improve this Doc View Source Min(IQueryable) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source) Parameters Type Name Description IQueryable source A sequence of values to calculate find the min for. Returns Type Description Object The min element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Min(); var result2 = queryable.Select(\"Roles.Min()\"); | Improve this Doc View Source Min(IQueryable, ParsingConfig, String, Object[]) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to calculate find the min for. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The min element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Min(\"Income\"); | Improve this Doc View Source Min(IQueryable, LambdaExpression) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A sequence of values to calculate find the min for. LambdaExpression lambda A Lambda Expression. Returns Type Description Object The min element in the sequence. | Improve this Doc View Source Min(IQueryable, String, Object[]) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The min element in the sequence. | Improve this Doc View Source OfType(IQueryable, ParsingConfig, String) Filters the elements of an IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, ParsingConfig config, string typeName) Parameters Type Name Description IQueryable source An IQueryable whose elements to filter. ParsingConfig config The ParsingConfig . String typeName The type to filter the elements of the sequence on. Returns Type Description IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OfType(IQueryable, String) Filters the elements of an IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, string typeName) Parameters Type Name Description IQueryable source An IQueryable whose elements to filter. String typeName The type to filter the elements of the sequence on. Returns Type Description IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OfType(IQueryable, Type) Filters the elements of an IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, Type type) Parameters Type Name Description IQueryable source An IQueryable whose elements to filter. Type type The type to filter the elements of the sequence on. Returns Type Description IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Examples var resultSingle = queryable.OrderBy(\"NumberProperty\"); var resultSingleDescending = queryable.OrderBy(\"NumberProperty DESC\"); var resultMultiple = queryable.OrderBy(\"NumberProperty, StringProperty DESC\"); | Improve this Doc View Source OrderBy(IQueryable, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IQueryable source String ordering IComparer comparer Object [] args Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, params object[] args) Parameters Type Name Description IQueryable source String ordering Object [] args Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. Examples var resultSingle = queryable.OrderBy(\"NumberProperty\"); var resultSingleDescending = queryable.OrderBy(\"NumberProperty DESC\"); var resultMultiple = queryable.OrderBy(\"NumberProperty, StringProperty\"); | Improve this Doc View Source OrderBy(IQueryable, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to order. String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source OrderBy(IQueryable, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, params object[] args) Parameters Type Name Description IQueryable source String ordering Object [] args Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source Page(IQueryable, Int32, Int32) Returns the elements as paged. Declaration public static IQueryable Page(this IQueryable source, int page, int pageSize) Parameters Type Name Description IQueryable source The IQueryable to return elements from. Int32 page The page to return. Int32 pageSize The number of elements per page. Returns Type Description IQueryable A IQueryable that contains the paged elements. | Improve this Doc View Source Page(IQueryable, Int32, Int32) Returns the elements as paged. Declaration public static IQueryable Page(this IQueryable source, int page, int pageSize) Parameters Type Name Description IQueryable source The IQueryable to return elements from. Int32 page The page to return. Int32 pageSize The number of elements per page. Returns Type Description IQueryable A IQueryable that contains the paged elements. Type Parameters Name Description TSource The type of the source. | Improve this Doc View Source PageResult(IQueryable, Int32, Int32, Nullable) Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount. Declaration public static PagedResult PageResult(this IQueryable source, int page, int pageSize, int? rowCount = null) Parameters Type Name Description IQueryable source The IQueryable to return elements from. Int32 page The page to return. Int32 pageSize The number of elements per page. Nullable < Int32 > rowCount If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count() . Returns Type Description PagedResult PagedResult | Improve this Doc View Source PageResult(IQueryable, Int32, Int32, Nullable) Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount. Declaration public static PagedResult PageResult(this IQueryable source, int page, int pageSize, int? rowCount = null) Parameters Type Name Description IQueryable source The IQueryable to return elements from. Int32 page The page to return. Int32 pageSize The number of elements per page. Nullable < Int32 > rowCount If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count() . Returns Type Description PagedResult PagedResult{TSource} Type Parameters Name Description TSource The type of the source. | Improve this Doc View Source Reverse(IQueryable) Inverts the order of the elements in a sequence. Declaration public static IQueryable Reverse(this IQueryable source) Parameters Type Name Description IQueryable source A sequence of values to reverse. Returns Type Description IQueryable A IQueryable whose elements correspond to those of the input sequence in reverse order. | Improve this Doc View Source Select(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence into a new form. Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. Examples var singleField = queryable.Select(\"StringProperty\"); var dynamicObject = queryable.Select(\"new (StringProperty1, StringProperty2 as OtherStringPropertyName)\"); | Improve this Doc View Source Select(IQueryable, ParsingConfig, Type, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, Type resultType, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . Type resultType The result type. String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. Examples var users = queryable.Select(typeof(User), \"new (Username, Pwd as Password)\"); | Improve this Doc View Source Select(IQueryable, String, Object[]) Projects each element of a sequence into a new form. Declaration public static IQueryable Select(this IQueryable source, string selector, params object[] args) Parameters Type Name Description IQueryable source String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. | Improve this Doc View Source Select(IQueryable, Type, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ Declaration public static IQueryable Select(this IQueryable source, Type resultType, string selector, params object[] args) Parameters Type Name Description IQueryable source Type resultType String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. | Improve this Doc View Source Select(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ . Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. Type Parameters Name Description TResult The type of the result. Examples var users = queryable.Select(\"new (Username, Pwd as Password)\"); | Improve this Doc View Source Select(IQueryable, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ . Declaration public static IQueryable Select(this IQueryable source, string selector, params object[] args) Parameters Type Name Description IQueryable source String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a projection string on each element of source. Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Examples var roles = users.SelectMany(\"Roles\"); | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, String, Object[], Object[]) Projects each element of a sequence to an IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string collectionSelector, string resultSelector, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String collectionSelector A projection function to apply to each element of the input sequence. String resultSelector A projection function to apply to each element of each intermediate sequence. Should only use x and y as parameter names. Object [] collectionSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Object [] resultSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. Examples // TODO | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object[], Object[]) Projects each element of a sequence to an IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string collectionSelector, string resultSelector, string collectionParameterName, string resultParameterName, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String collectionSelector A projection function to apply to each element of the input sequence. String resultSelector A projection function to apply to each element of each intermediate sequence. String collectionParameterName The name from collectionParameter to use. Default is x. String resultParameterName The name from resultParameterName to use. Default is y. Object [] collectionSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Object [] resultSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. Examples // TODO | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, Type, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, Type resultType, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . Type resultType The result type. String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Examples var permissions = users.SelectMany(typeof(Permission), \"Roles.SelectMany(Permissions)\"); | Improve this Doc View Source SelectMany(IQueryable, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, string selector, params object[] args) Parameters Type Name Description IQueryable source String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. | Improve this Doc View Source SelectMany(IQueryable, String, String, Object[], Object[]) Projects each element of a sequence to an IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, string collectionSelector, string resultSelector, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description IQueryable source String collectionSelector String resultSelector Object [] collectionSelectorArgs Object [] resultSelectorArgs Returns Type Description IQueryable An IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. | Improve this Doc View Source SelectMany(IQueryable, String, String, String, String, Object[], Object[]) Projects each element of a sequence to an IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, string collectionSelector, string resultSelector, string collectionParameterName, string resultParameterName, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description IQueryable source String collectionSelector String resultSelector String collectionParameterName String resultParameterName Object [] collectionSelectorArgs Object [] resultSelectorArgs Returns Type Description IQueryable An IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. | Improve this Doc View Source SelectMany(IQueryable, Type, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, Type resultType, string selector, params object[] args) Parameters Type Name Description IQueryable source Type resultType String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . String selector A projection string expression to apply to each element. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Type Parameters Name Description TResult The type of the result. Examples var permissions = users.SelectMany(\"Roles.SelectMany(Permissions)\"); | Improve this Doc View Source SelectMany(IQueryable, String, Object[]) Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, string selector, params object[] args) Parameters Type Name Description IQueryable source String selector Object [] args Returns Type Description IQueryable An IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source Single(IQueryable) Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source) Parameters Type Name Description IQueryable source A IQueryable to return the single element of. Returns Type Description Object The single element of the input sequence. | Improve this Doc View Source Single(IQueryable, ParsingConfig, String, Object[]) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source Single(IQueryable, LambdaExpression) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source Single(IQueryable, String, Object[]) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable) Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source) Parameters Type Name Description IQueryable source A IQueryable to return the single element of. Returns Type Description Object The single element of the input sequence, or default if the sequence contains no elements. | Improve this Doc View Source SingleOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable, LambdaExpression) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source The IQueryable to return the last element of. LambdaExpression lambda A cached Lambda Expression. Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable, String, Object[]) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The first element in source that passes the test in predicate. | Improve this Doc View Source Skip(IQueryable, Int32) Bypasses a specified number of elements in a sequence and then returns the remaining elements. Declaration public static IQueryable Skip(this IQueryable source, int count) Parameters Type Name Description IQueryable source A IQueryable to return elements from. Int32 count The number of elements to skip before returning the remaining elements. Returns Type Description IQueryable A IQueryable that contains elements that occur after the specified index in the input sequence. | Improve this Doc View Source SkipWhile(IQueryable, ParsingConfig, String, Object[]) Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Declaration public static IQueryable SkipWhile(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.SkipWhile(\"Income > 50\"); var result2 = queryable.SkipWhile(\"Income > @0\", 50); | Improve this Doc View Source SkipWhile(IQueryable, String, Object[]) Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Declaration public static IQueryable SkipWhile(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description IQueryable An IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate. | Improve this Doc View Source Sum(IQueryable) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the sum of. Returns Type Description Object The sum of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Sum(); var result2 = queryable.Select(\"Roles.Sum()\"); | Improve this Doc View Source Sum(IQueryable, ParsingConfig, String, Object[]) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the sum of. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description Object The sum of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Sum(\"Income\"); | Improve this Doc View Source Sum(IQueryable, LambdaExpression) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A sequence of numeric values to calculate the sum of. LambdaExpression lambda A Lambda Expression. Returns Type Description Object The sum of the values in the sequence. | Improve this Doc View Source Sum(IQueryable, String, Object[]) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description Object The sum of the values in the sequence. | Improve this Doc View Source Take(IQueryable, Int32) Returns a specified number of contiguous elements from the start of a sequence. Declaration public static IQueryable Take(this IQueryable source, int count) Parameters Type Name Description IQueryable source The sequence to return elements from. Int32 count The number of elements to return. Returns Type Description IQueryable A IQueryable that contains the specified number of elements from the start of source. | Improve this Doc View Source TakeWhile(IQueryable, ParsingConfig, String, Object[]) Returns elements from a sequence as long as a specified condition is true. Declaration public static IQueryable TakeWhile(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . String predicate A function to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable An IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.TakeWhile(\"Income > 50\"); var result2 = queryable.TakeWhile(\"Income > @0\", 50); | Improve this Doc View Source TakeWhile(IQueryable, String, Object[]) Returns elements from a sequence as long as a specified condition is true. Declaration public static IQueryable TakeWhile(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description IQueryable An IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes. | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . Examples var result = queryable.OrderBy(\"LastName\"); var resultSingle = result.OrderBy(\"NumberProperty\"); var resultSingleDescending = result.OrderBy(\"NumberProperty DESC\"); var resultMultiple = result.OrderBy(\"NumberProperty, StringProperty DESC\"); | Improve this Doc View Source ThenBy(IOrderedQueryable, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IOrderedQueryable source String ordering IComparer comparer Object [] args Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, params object[] args) Parameters Type Name Description IOrderedQueryable source String ordering Object [] args Returns Type Description IOrderedQueryable A IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . String ordering An expression string to indicate values to order by. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. Examples var result = queryable.OrderBy(\"LastName\"); var resultSingle = result.ThenBy(\"NumberProperty\"); var resultSingleDescending = result.ThenBy(\"NumberProperty DESC\"); var resultMultiple = result.ThenBy(\"NumberProperty, StringProperty\"); | Improve this Doc View Source ThenBy(IOrderedQueryable, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description IOrderedQueryable source A sequence of values to order. String ordering An expression string to indicate values to order by. IComparer comparer The comparer to use. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IOrderedQueryable A IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source ThenBy(IOrderedQueryable, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, params object[] args) Parameters Type Name Description IOrderedQueryable source String ordering Object [] args Returns Type Description IOrderedQueryable A IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source Where(IQueryable, ParsingConfig, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A IQueryable to filter. ParsingConfig config The ParsingConfig . String predicate An expression string to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Examples var result1 = queryable.Where(\"NumberProperty = 1\"); var result2 = queryable.Where(\"NumberProperty = @0\", 1); var result3 = queryable.Where(\"StringProperty = null\"); var result4 = queryable.Where(\"StringProperty = \\\"abc\\\"\"); var result5 = queryable.Where(\"StringProperty = @0\", \"abc\"); | Improve this Doc View Source Where(IQueryable, LambdaExpression) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source A IQueryable to filter. LambdaExpression lambda A cached Lambda Expression. Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression. | Improve this Doc View Source Where(IQueryable, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. | Improve this Doc View Source Where(IQueryable, ParsingConfig, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description IQueryable source A IQueryable to filter. ParsingConfig config The ParsingConfig . String predicate An expression string to test each element for a condition. Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Type Parameters Name Description TSource The type of the elements of source. Examples var result1 = queryable.Where(\"NumberProperty = 1\"); var result2 = queryable.Where(\"NumberProperty = @0\", 1); var result3 = queryable.Where(\"StringProperty = null\"); var result4 = queryable.Where(\"StringProperty = \\\"abc\\\"\"); var result5 = queryable.Where(\"StringProperty = @0\", \"abc\"); | Improve this Doc View Source Where(IQueryable, LambdaExpression) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description IQueryable source LambdaExpression lambda A cached Lambda Expression. Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression. Type Parameters Name Description TSource | Improve this Doc View Source Where(IQueryable, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description IQueryable source String predicate Object [] args Returns Type Description IQueryable A IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Type Parameters Name Description TSource The type of the elements of source." + "keywords": "Class DynamicQueryableExtensions Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement System.Linq.IQueryable . It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by. Inheritance System.Object DynamicQueryableExtensions Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public static class DynamicQueryableExtensions Methods | Improve this Doc View Source Aggregate(IQueryable, String, String) Dynamically runs an aggregate function on the IQueryable. Declaration public static object Aggregate(this IQueryable source, string function, string member) Parameters Type Name Description System.Linq.IQueryable source The IQueryable data source. System.String function The name of the function to run. Can be Sum, Average, Min or Max. System.String member The name of the property to aggregate over. Returns Type Description System.Object The value of the aggregate function run over the specified property. | Improve this Doc View Source All(IQueryable, ParsingConfig, String, Object[]) Determines whether all the elements of a sequence satisfy a condition. Declaration [PublicAPI] public static bool All(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence whose elements to test for a condition. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Boolean true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false. | Improve this Doc View Source All(IQueryable, String, Object[]) Determines whether all the elements of a sequence satisfy a condition. Declaration [PublicAPI] public static bool All(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence whose elements to test for a condition. System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Boolean true if every element of the source sequence passes the test in the specified predicate, or if the sequence is empty; otherwise, false. | Improve this Doc View Source Any(IQueryable) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence to check for being empty. Returns Type Description System.Boolean true if the source sequence contains any elements; otherwise, false. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Any(); | Improve this Doc View Source Any(IQueryable, ParsingConfig, String, Object[]) Determines whether a sequence contains any elements. Declaration [PublicAPI] public static bool Any(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Boolean true if the source sequence contains any elements; otherwise, false. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Any(\"Income > 50\"); var result2 = queryable.Any(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.Any()\"); | Improve this Doc View Source Any(IQueryable, LambdaExpression) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A sequence to check for being empty. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Boolean true if the source sequence contains any elements; otherwise, false. | Improve this Doc View Source Any(IQueryable, String, Object[]) Determines whether a sequence contains any elements. Declaration public static bool Any(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Boolean true if the source sequence contains any elements; otherwise, false. | Improve this Doc View Source AsDynamicEnumerable(IQueryable) Returns the input typed as System.Collections.Generic.IEnumerable of System.Object ./> Declaration public static IEnumerable AsDynamicEnumerable(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The sequence to type as System.Collections.Generic.IEnumerable of System.Object . Returns Type Description System.Collections.Generic.IEnumerable < System.Object > The input typed as System.Collections.Generic.IEnumerable of System.Object . | Improve this Doc View Source Average(IQueryable) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the average of. Returns Type Description System.Double The average of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Average(); var result2 = queryable.Select(\"Roles.Average()\"); | Improve this Doc View Source Average(IQueryable, ParsingConfig, String, Object[]) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the average of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Double The average of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Average(\"Income\"); | Improve this Doc View Source Average(IQueryable, LambdaExpression) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the average of. System.Linq.Expressions.LambdaExpression lambda A Lambda Expression. Returns Type Description System.Double The average of the values in the sequence. | Improve this Doc View Source Average(IQueryable, String, Object[]) Computes the average of a sequence of numeric values. Declaration [PublicAPI] public static double Average(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Double The average of the values in the sequence. | Improve this Doc View Source Cast(IQueryable, ParsingConfig, String) Converts the elements of an System.Linq.IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, ParsingConfig config, string typeName) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be converted. ParsingConfig config The ParsingConfig . System.String typeName The type to convert the elements of source to. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Cast(IQueryable, String) Converts the elements of an System.Linq.IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, string typeName) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be converted. System.String typeName The type to convert the elements of source to. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Cast(IQueryable, Type) Converts the elements of an System.Linq.IQueryable to the specified type. Declaration public static IQueryable Cast(this IQueryable source, Type type) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be converted. System.Type type The type to convert the elements of source to. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains each element of the source sequence converted to the specified type. | Improve this Doc View Source Count(IQueryable) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. Returns Type Description System.Int32 The number of elements in the input sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Count(); | Improve this Doc View Source Count(IQueryable, ParsingConfig, String, Object[]) Returns the number of elements in a sequence. Declaration [PublicAPI] public static int Count(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Int32 The number of elements in the specified sequence that satisfies a condition. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Count(\"Income > 50\"); var result2 = queryable.Count(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.Count()\"); | Improve this Doc View Source Count(IQueryable, LambdaExpression) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Int32 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source Count(IQueryable, String, Object[]) Returns the number of elements in a sequence. Declaration public static int Count(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Int32 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source DefaultIfEmpty(IQueryable) Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. Declaration public static IQueryable DefaultIfEmpty(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return a default value for if empty. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains default if source is empty; otherwise, source. Examples IQueryable queryable = employees.DefaultIfEmpty(); | Improve this Doc View Source DefaultIfEmpty(IQueryable, Object) Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. Declaration public static IQueryable DefaultIfEmpty(this IQueryable source, object defaultValue) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return a default value for if empty. System.Object defaultValue The value to return if the sequence is empty. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains defaultValue if source is empty; otherwise, source. Examples IQueryable queryable = employees.DefaultIfEmpty(new Employee()); | Improve this Doc View Source Distinct(IQueryable) Returns distinct elements from a sequence by using the default equality comparer to compare values. Declaration public static IQueryable Distinct(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The sequence to remove duplicate elements from. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains distinct elements from the source sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Distinct(); var result2 = queryable.Select(\"Roles.Distinct()\"); | Improve this Doc View Source First(IQueryable) Returns the first element of a sequence. Declaration public static object First(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. Returns Type Description System.Object The first element in source. | Improve this Doc View Source First(IQueryable, ParsingConfig, String, Object[]) Returns the first element of a sequence that satisfies a specified condition. Declaration [PublicAPI] public static object First(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source First(IQueryable, LambdaExpression) Returns the first element of a sequence that satisfies a specified condition. Declaration public static object First(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source First(IQueryable, String, Object[]) Returns the first element of a sequence that satisfies a specified condition. Declaration public static object First(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source FirstOrDefault(IQueryable) Returns the first element of a sequence, or a default value if the sequence contains no elements. Declaration public static object FirstOrDefault(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. Returns Type Description System.Object default if source is empty; otherwise, the first element in source. | Improve this Doc View Source FirstOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration [PublicAPI] public static object FirstOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source FirstOrDefault(IQueryable, LambdaExpression) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration public static object FirstOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the first element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source FirstOrDefault(IQueryable, String, Object[]) Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found. Declaration public static object FirstOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object default if source is empty or if no element passes the test specified by predicate; otherwise, the first element in source that passes the test specified by predicate. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, IEqualityComparer equalityComparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.Collections.IEqualityComparer equalityComparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\"); | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.String resultSelector A string expression to specify a result value from each group. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\", \"StringProperty\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\", \"new (StringProperty1, StringProperty2)\"); | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, IEqualityComparer equalityComparer) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.String resultSelector A string expression to specify a result value from each group. System.Collections.IEqualityComparer equalityComparer The comparer to use. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, IEqualityComparer equalityComparer, object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.String resultSelector A string expression to specify a result value from each group. System.Collections.IEqualityComparer equalityComparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, ParsingConfig, String, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, ParsingConfig config, string keySelector, string resultSelector, object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable whose elements to group. ParsingConfig config The ParsingConfig . System.String keySelector A string expression to specify the key for each element. System.String resultSelector A string expression to specify a result value from each group. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. Examples var groupResult1 = queryable.GroupBy(\"NumberPropertyAsKey\", \"StringProperty\"); var groupResult2 = queryable.GroupBy(\"new (NumberPropertyAsKey, StringPropertyAsKey)\", \"new (StringProperty1, StringProperty2)\"); | Improve this Doc View Source GroupBy(IQueryable, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, IEqualityComparer equalityComparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.Collections.IEqualityComparer equalityComparer System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, string keySelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.String resultSelector Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, IEqualityComparer) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, IEqualityComparer equalityComparer) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.String resultSelector System.Collections.IEqualityComparer equalityComparer Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, IEqualityComparer, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, IEqualityComparer equalityComparer, object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.String resultSelector System.Collections.IEqualityComparer equalityComparer System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupBy(IQueryable, String, String, Object[]) Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. Declaration [PublicAPI] public static IQueryable GroupBy(this IQueryable source, string keySelector, string resultSelector, object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String keySelector System.String resultSelector System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable where each element represents a projection over a group and its key. | Improve this Doc View Source GroupByMany(IEnumerable, Func[]) Groups the elements of a sequence according to multiple specified key functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, params Func[] keySelectors) Parameters Type Name Description System.Collections.Generic.IEnumerable source A System.Collections.Generic.IEnumerable whose elements to group. System.Func [] keySelectors Lambda expressions to specify the keys for each element. Returns Type Description System.Collections.Generic.IEnumerable < GroupResult > A System.Collections.Generic.IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupByMany(IEnumerable, ParsingConfig, String[]) Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, ParsingConfig config, params string[] keySelectors) Parameters Type Name Description System.Collections.Generic.IEnumerable source A System.Collections.Generic.IEnumerable whose elements to group. ParsingConfig config The ParsingConfig . System.String [] keySelectors System.String expressions to specify the keys for each element. Returns Type Description System.Collections.Generic.IEnumerable < GroupResult > A System.Collections.Generic.IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupByMany(IEnumerable, String[]) Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. Declaration public static IEnumerable GroupByMany(this IEnumerable source, params string[] keySelectors) Parameters Type Name Description System.Collections.Generic.IEnumerable source System.String [] keySelectors Returns Type Description System.Collections.Generic.IEnumerable < GroupResult > A System.Collections.Generic.IEnumerable of type GroupResult where each element represents a projection over a group, its key, and its subgroups. Type Parameters Name Description TElement | Improve this Doc View Source GroupJoin(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. Declaration public static IQueryable GroupJoin(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer System.Collections.IEnumerable inner System.String outerKeySelector System.String innerKeySelector System.String resultSelector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable obtained by performing a grouped join on two sequences. | Improve this Doc View Source GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. Declaration public static IQueryable GroupJoin(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . System.Collections.IEnumerable inner The sequence to join to the first sequence. System.String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. System.String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. System.String resultSelector A dynamic function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence. System.Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable obtained by performing a grouped join on two sequences. | Improve this Doc View Source Join(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer System.Collections.IEnumerable inner System.String outerKeySelector System.String innerKeySelector System.String resultSelector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable obtained by performing an inner join on two sequences. | Improve this Doc View Source Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . System.Collections.IEnumerable inner The sequence to join to the first sequence. System.String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. System.String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. System.String resultSelector A dynamic function to create a result element from two matching elements. System.Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable obtained by performing an inner join on two sequences. | Improve this Doc View Source Join(IQueryable, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer System.Collections.Generic.IEnumerable inner System.String outerKeySelector System.String innerKeySelector System.String resultSelector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that has elements of type TResult obtained by performing an inner join on two sequences. Type Parameters Name Description TElement The type of the elements of both sequences, and the result. Remarks This overload only works on elements where both sequences and the resulting element match. | Improve this Doc View Source Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object[]) Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. Declaration public static IQueryable Join(this IQueryable outer, ParsingConfig config, IEnumerable inner, string outerKeySelector, string innerKeySelector, string resultSelector, params object[] args) Parameters Type Name Description System.Linq.IQueryable outer The first sequence to join. ParsingConfig config The ParsingConfig . System.Collections.Generic.IEnumerable inner The sequence to join to the first sequence. System.String outerKeySelector A dynamic function to extract the join key from each element of the first sequence. System.String innerKeySelector A dynamic function to extract the join key from each element of the second sequence. System.String resultSelector A dynamic function to create a result element from two matching elements. System.Object [] args An object array that contains zero or more objects to insert into the predicates as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that has elements of type TResult obtained by performing an inner join on two sequences. Type Parameters Name Description TElement The type of the elements of both sequences, and the result. Remarks This overload only works on elements where both sequences and the resulting element match. | Improve this Doc View Source Last(IQueryable) Returns the last element of a sequence. Declaration public static object Last(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. Returns Type Description System.Object The last element in source. | Improve this Doc View Source Last(IQueryable, ParsingConfig, String, Object[]) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source Last(IQueryable, LambdaExpression) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source Last(IQueryable, String, Object[]) Returns the last element of a sequence that satisfies a specified condition. Declaration public static object Last(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable) Returns the last element of a sequence, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. Returns Type Description System.Object default if source is empty; otherwise, the last element in source. | Improve this Doc View Source LastOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable, LambdaExpression) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source LastOrDefault(IQueryable, String, Object[]) Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements. Declaration public static object LastOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source LongCount(IQueryable) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. Returns Type Description System.Int64 The number of elements in the input sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.LongCount(); | Improve this Doc View Source LongCount(IQueryable, ParsingConfig, String, Object[]) Returns the number of elements in a sequence. Declaration [PublicAPI] public static long LongCount(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Int64 The number of elements in the specified sequence that satisfies a condition. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.LongCount(\"Income > 50\"); var result2 = queryable.LongCount(\"Income > @0\", 50); var result3 = queryable.Select(\"Roles.LongCount()\"); | Improve this Doc View Source LongCount(IQueryable, LambdaExpression) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable that contains the elements to be counted. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Int64 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source LongCount(IQueryable, String, Object[]) Returns the number of elements in a sequence. Declaration public static long LongCount(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Int64 The number of elements in the specified sequence that satisfies a condition. | Improve this Doc View Source Max(IQueryable) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the max for. Returns Type Description System.Object The max element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Max(); var result2 = queryable.Select(\"Roles.Max()\"); | Improve this Doc View Source Max(IQueryable, ParsingConfig, String, Object[]) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the max for. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The max element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Max(\"Income\"); | Improve this Doc View Source Max(IQueryable, LambdaExpression) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the max for. System.Linq.Expressions.LambdaExpression lambda A Lambda Expression. Returns Type Description System.Object The max element in the sequence. | Improve this Doc View Source Max(IQueryable, String, Object[]) Computes the max element of a sequence. Declaration [PublicAPI] public static object Max(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The max element in the sequence. | Improve this Doc View Source Min(IQueryable) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the min for. Returns Type Description System.Object The min element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Min(); var result2 = queryable.Select(\"Roles.Min()\"); | Improve this Doc View Source Min(IQueryable, ParsingConfig, String, Object[]) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the min for. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The min element in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Min(\"Income\"); | Improve this Doc View Source Min(IQueryable, LambdaExpression) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to calculate find the min for. System.Linq.Expressions.LambdaExpression lambda A Lambda Expression. Returns Type Description System.Object The min element in the sequence. | Improve this Doc View Source Min(IQueryable, String, Object[]) Computes the min element of a sequence. Declaration [PublicAPI] public static object Min(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The min element in the sequence. | Improve this Doc View Source OfType(IQueryable, ParsingConfig, String) Filters the elements of an System.Linq.IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, ParsingConfig config, string typeName) Parameters Type Name Description System.Linq.IQueryable source An System.Linq.IQueryable whose elements to filter. ParsingConfig config The ParsingConfig . System.String typeName The type to filter the elements of the sequence on. Returns Type Description System.Linq.IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OfType(IQueryable, String) Filters the elements of an System.Linq.IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, string typeName) Parameters Type Name Description System.Linq.IQueryable source An System.Linq.IQueryable whose elements to filter. System.String typeName The type to filter the elements of the sequence on. Returns Type Description System.Linq.IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OfType(IQueryable, Type) Filters the elements of an System.Linq.IQueryable based on a specified type. Declaration public static IQueryable OfType(this IQueryable source, Type type) Parameters Type Name Description System.Linq.IQueryable source An System.Linq.IQueryable whose elements to filter. System.Type type The type to filter the elements of the sequence on. Returns Type Description System.Linq.IQueryable A collection that contains the elements from source that have the type. | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Examples var resultSingle = queryable.OrderBy(\"NumberProperty\"); var resultSingleDescending = queryable.OrderBy(\"NumberProperty DESC\"); var resultMultiple = queryable.OrderBy(\"NumberProperty, StringProperty DESC\"); | Improve this Doc View Source OrderBy(IQueryable, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String ordering System.Collections.IComparer comparer System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String ordering System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source OrderBy(IQueryable, ParsingConfig, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. Examples var resultSingle = queryable.OrderBy(\"NumberProperty\"); var resultSingleDescending = queryable.OrderBy(\"NumberProperty DESC\"); var resultMultiple = queryable.OrderBy(\"NumberProperty, StringProperty\"); | Improve this Doc View Source OrderBy(IQueryable, String, IComparer, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to order. System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source OrderBy(IQueryable, String, Object[]) Sorts the elements of a sequence in ascending or descending order according to a key. Declaration public static IOrderedQueryable OrderBy(this IQueryable source, string ordering, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String ordering System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source Page(IQueryable, Int32, Int32) Returns the elements as paged. Declaration public static IQueryable Page(this IQueryable source, int page, int pageSize) Parameters Type Name Description System.Linq.IQueryable source The IQueryable to return elements from. System.Int32 page The page to return. System.Int32 pageSize The number of elements per page. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains the paged elements. | Improve this Doc View Source Page(IQueryable, Int32, Int32) Returns the elements as paged. Declaration public static IQueryable Page(this IQueryable source, int page, int pageSize) Parameters Type Name Description System.Linq.IQueryable source The IQueryable to return elements from. System.Int32 page The page to return. System.Int32 pageSize The number of elements per page. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains the paged elements. Type Parameters Name Description TSource The type of the source. | Improve this Doc View Source PageResult(IQueryable, Int32, Int32, Nullable) Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount. Declaration public static PagedResult PageResult(this IQueryable source, int page, int pageSize, int? rowCount = null) Parameters Type Name Description System.Linq.IQueryable source The IQueryable to return elements from. System.Int32 page The page to return. System.Int32 pageSize The number of elements per page. System.Nullable < System.Int32 > rowCount If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count() . Returns Type Description PagedResult PagedResult | Improve this Doc View Source PageResult(IQueryable, Int32, Int32, Nullable) Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount. Declaration public static PagedResult PageResult(this IQueryable source, int page, int pageSize, int? rowCount = null) Parameters Type Name Description System.Linq.IQueryable source The IQueryable to return elements from. System.Int32 page The page to return. System.Int32 pageSize The number of elements per page. System.Nullable < System.Int32 > rowCount If this optional parameter has been defined, this value is used as the RowCount instead of executing a Linq Count() . Returns Type Description PagedResult PagedResult{TSource} Type Parameters Name Description TSource The type of the source. | Improve this Doc View Source Reverse(IQueryable) Inverts the order of the elements in a sequence. Declaration public static IQueryable Reverse(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to reverse. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable whose elements correspond to those of the input sequence in reverse order. | Improve this Doc View Source Select(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence into a new form. Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. Examples var singleField = queryable.Select(\"StringProperty\"); var dynamicObject = queryable.Select(\"new (StringProperty1, StringProperty2 as OtherStringPropertyName)\"); | Improve this Doc View Source Select(IQueryable, ParsingConfig, Type, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, Type resultType, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.Type resultType The result type. System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. Examples var users = queryable.Select(typeof(User), \"new (Username, Pwd as Password)\"); | Improve this Doc View Source Select(IQueryable, String, Object[]) Projects each element of a sequence into a new form. Declaration public static IQueryable Select(this IQueryable source, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. | Improve this Doc View Source Select(IQueryable, Type, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ Declaration public static IQueryable Select(this IQueryable source, Type resultType, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.Type resultType System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. | Improve this Doc View Source Select(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ . Declaration public static IQueryable Select(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. Type Parameters Name Description TResult The type of the result. Examples var users = queryable.Select(\"new (Username, Pwd as Password)\"); | Improve this Doc View Source Select(IQueryable, String, Object[]) Projects each element of a sequence into a new class of type TResult. Details see http://solutionizing.net/category/linq/ . Declaration public static IQueryable Select(this IQueryable source, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a projection string on each element of source. Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Examples var roles = users.SelectMany(\"Roles\"); | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, String, Object[], Object[]) Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string collectionSelector, string resultSelector, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String collectionSelector A projection function to apply to each element of the input sequence. System.String resultSelector A projection function to apply to each element of each intermediate sequence. Should only use x and y as parameter names. System.Object [] collectionSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. System.Object [] resultSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. Examples // TODO | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object[], Object[]) Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string collectionSelector, string resultSelector, string collectionParameterName, string resultParameterName, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String collectionSelector A projection function to apply to each element of the input sequence. System.String resultSelector A projection function to apply to each element of each intermediate sequence. System.String collectionParameterName The name from collectionParameter to use. Default is x. System.String resultParameterName The name from resultParameterName to use. Default is y. System.Object [] collectionSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. System.Object [] resultSelectorArgs An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. Examples // TODO | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, Type, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, Type resultType, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.Type resultType The result type. System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Examples var permissions = users.SelectMany(typeof(Permission), \"Roles.SelectMany(Permissions)\"); | Improve this Doc View Source SelectMany(IQueryable, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. | Improve this Doc View Source SelectMany(IQueryable, String, String, Object[], Object[]) Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, string collectionSelector, string resultSelector, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description System.Linq.IQueryable source System.String collectionSelector System.String resultSelector System.Object [] collectionSelectorArgs System.Object [] resultSelectorArgs Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. | Improve this Doc View Source SelectMany(IQueryable, String, String, String, String, Object[], Object[]) Projects each element of a sequence to an System.Linq.IQueryable and invokes a result selector function on each element therein. The resulting values from each intermediate sequence are combined into a single, one-dimensional sequence and returned. Declaration public static IQueryable SelectMany(this IQueryable source, string collectionSelector, string resultSelector, string collectionParameterName, string resultParameterName, object[] collectionSelectorArgs = null, params object[] resultSelectorArgs) Parameters Type Name Description System.Linq.IQueryable source System.String collectionSelector System.String resultSelector System.String collectionParameterName System.String resultParameterName System.Object [] collectionSelectorArgs System.Object [] resultSelectorArgs Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking the one-to-many projection function collectionSelector on each element of source and then mapping each of those sequence elements and their corresponding source element to a result element. | Improve this Doc View Source SelectMany(IQueryable, Type, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, Type resultType, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.Type resultType System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. | Improve this Doc View Source SelectMany(IQueryable, ParsingConfig, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, ParsingConfig config, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of values to project. ParsingConfig config The ParsingConfig . System.String selector A projection string expression to apply to each element. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Type Parameters Name Description TResult The type of the result. Examples var permissions = users.SelectMany(\"Roles.SelectMany(Permissions)\"); | Improve this Doc View Source SelectMany(IQueryable, String, Object[]) Projects each element of a sequence to an System.Linq.IQueryable and combines the resulting sequences into one sequence. Declaration public static IQueryable SelectMany(this IQueryable source, string selector, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String selector System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. Type Parameters Name Description TResult The type of the result. | Improve this Doc View Source Single(IQueryable) Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to return the single element of. Returns Type Description System.Object The single element of the input sequence. | Improve this Doc View Source Single(IQueryable, ParsingConfig, String, Object[]) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source Single(IQueryable, LambdaExpression) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source Single(IQueryable, String, Object[]) Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there is not exactly one element in the sequence. Declaration public static object Single(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable) Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to return the single element of. Returns Type Description System.Object The single element of the input sequence, or default if the sequence contains no elements. | Improve this Doc View Source SingleOrDefault(IQueryable, ParsingConfig, String, Object[]) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable, LambdaExpression) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source The System.Linq.IQueryable to return the last element of. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source SingleOrDefault(IQueryable, String, Object[]) Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence is empty; and throws an exception if there is not exactly one element in the sequence. Declaration public static object SingleOrDefault(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The first element in source that passes the test in predicate. | Improve this Doc View Source Skip(IQueryable, Int32) Bypasses a specified number of elements in a sequence and then returns the remaining elements. Declaration public static IQueryable Skip(this IQueryable source, int count) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to return elements from. System.Int32 count The number of elements to skip before returning the remaining elements. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements that occur after the specified index in the input sequence. | Improve this Doc View Source SkipWhile(IQueryable, ParsingConfig, String, Object[]) Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Declaration public static IQueryable SkipWhile(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.SkipWhile(\"Income > 50\"); var result2 = queryable.SkipWhile(\"Income > @0\", 50); | Improve this Doc View Source SkipWhile(IQueryable, String, Object[]) Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Declaration public static IQueryable SkipWhile(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains elements from source starting at the first element in the linear series that does not pass the test specified by predicate. | Improve this Doc View Source Sum(IQueryable) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the sum of. Returns Type Description System.Object The sum of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.Sum(); var result2 = queryable.Select(\"Roles.Sum()\"); | Improve this Doc View Source Sum(IQueryable, ParsingConfig, String, Object[]) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the sum of. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Object The sum of the values in the sequence. Examples IQueryable queryable = employees.AsQueryable(); var result = queryable.Sum(\"Income\"); | Improve this Doc View Source Sum(IQueryable, LambdaExpression) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A sequence of numeric values to calculate the sum of. System.Linq.Expressions.LambdaExpression lambda A Lambda Expression. Returns Type Description System.Object The sum of the values in the sequence. | Improve this Doc View Source Sum(IQueryable, String, Object[]) Computes the sum of a sequence of numeric values. Declaration [PublicAPI] public static object Sum(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Object The sum of the values in the sequence. | Improve this Doc View Source Take(IQueryable, Int32) Returns a specified number of contiguous elements from the start of a sequence. Declaration public static IQueryable Take(this IQueryable source, int count) Parameters Type Name Description System.Linq.IQueryable source The sequence to return elements from. System.Int32 count The number of elements to return. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains the specified number of elements from the start of source. | Improve this Doc View Source TakeWhile(IQueryable, ParsingConfig, String, Object[]) Returns elements from a sequence as long as a specified condition is true. Declaration public static IQueryable TakeWhile(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A sequence to check for being empty. ParsingConfig config The ParsingConfig . System.String predicate A function to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes. Examples IQueryable queryable = employees.AsQueryable(); var result1 = queryable.TakeWhile(\"Income > 50\"); var result2 = queryable.TakeWhile(\"Income > @0\", 50); | Improve this Doc View Source TakeWhile(IQueryable, String, Object[]) Returns elements from a sequence as long as a specified condition is true. Declaration public static IQueryable TakeWhile(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Linq.IQueryable An System.Linq.IQueryable that contains elements from the input sequence occurring before the element at which the test specified by predicate no longer passes. | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . Examples var result = queryable.OrderBy(\"LastName\"); var resultSingle = result.OrderBy(\"NumberProperty\"); var resultSingleDescending = result.OrderBy(\"NumberProperty DESC\"); var resultMultiple = result.OrderBy(\"NumberProperty, StringProperty DESC\"); | Improve this Doc View Source ThenBy(IOrderedQueryable, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source System.String ordering System.Collections.IComparer comparer System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source System.String ordering System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IQueryable whose elements are sorted according to the specified ordering . | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source ThenBy(IOrderedQueryable, ParsingConfig, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, ParsingConfig config, string ordering, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source A sequence of values to order. ParsingConfig config The ParsingConfig . System.String ordering An expression string to indicate values to order by. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. Examples var result = queryable.OrderBy(\"LastName\"); var resultSingle = result.ThenBy(\"NumberProperty\"); var resultSingleDescending = result.ThenBy(\"NumberProperty DESC\"); var resultMultiple = result.ThenBy(\"NumberProperty, StringProperty\"); | Improve this Doc View Source ThenBy(IOrderedQueryable, String, IComparer, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, IComparer comparer, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source A sequence of values to order. System.String ordering An expression string to indicate values to order by. System.Collections.IComparer comparer The comparer to use. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source ThenBy(IOrderedQueryable, String, Object[]) Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. Declaration public static IOrderedQueryable ThenBy(this IOrderedQueryable source, string ordering, params object[] args) Parameters Type Name Description System.Linq.IOrderedQueryable source System.String ordering System.Object [] args Returns Type Description System.Linq.IOrderedQueryable A System.Linq.IOrderedQueryable whose elements are sorted according to the specified ordering . Type Parameters Name Description TSource The type of the elements of source. | Improve this Doc View Source Where(IQueryable, ParsingConfig, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to filter. ParsingConfig config The ParsingConfig . System.String predicate An expression string to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Examples var result1 = queryable.Where(\"NumberProperty = 1\"); var result2 = queryable.Where(\"NumberProperty = @0\", 1); var result3 = queryable.Where(\"StringProperty = null\"); var result4 = queryable.Where(\"StringProperty = \\\"abc\\\"\"); var result5 = queryable.Where(\"StringProperty = @0\", \"abc\"); | Improve this Doc View Source Where(IQueryable, LambdaExpression) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to filter. System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression. | Improve this Doc View Source Where(IQueryable, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. | Improve this Doc View Source Where(IQueryable, ParsingConfig, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, ParsingConfig config, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source A System.Linq.IQueryable to filter. ParsingConfig config The ParsingConfig . System.String predicate An expression string to test each element for a condition. System.Object [] args An object array that contains zero or more objects to insert into the predicate as parameters. Similar to the way String.Format formats strings. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Type Parameters Name Description TSource The type of the elements of source. Examples var result1 = queryable.Where(\"NumberProperty = 1\"); var result2 = queryable.Where(\"NumberProperty = @0\", 1); var result3 = queryable.Where(\"StringProperty = null\"); var result4 = queryable.Where(\"StringProperty = \\\"abc\\\"\"); var result5 = queryable.Where(\"StringProperty = @0\", \"abc\"); | Improve this Doc View Source Where(IQueryable, LambdaExpression) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, LambdaExpression lambda) Parameters Type Name Description System.Linq.IQueryable source System.Linq.Expressions.LambdaExpression lambda A cached Lambda Expression. Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by LambdaExpression. Type Parameters Name Description TSource | Improve this Doc View Source Where(IQueryable, String, Object[]) Filters a sequence of values based on a predicate. Declaration public static IQueryable Where(this IQueryable source, string predicate, params object[] args) Parameters Type Name Description System.Linq.IQueryable source System.String predicate System.Object [] args Returns Type Description System.Linq.IQueryable A System.Linq.IQueryable that contains elements from the input sequence that satisfy the condition specified by predicate. Type Parameters Name Description TSource The type of the elements of source." }, "api/System.Linq.Dynamic.Core.Exceptions.html": { "href": "api/System.Linq.Dynamic.Core.Exceptions.html", @@ -77,52 +87,52 @@ "api/System.Linq.Dynamic.Core.Exceptions.ParseException.html": { "href": "api/System.Linq.Dynamic.Core.Exceptions.ParseException.html", "title": "Class ParseException", - "keywords": "Class ParseException Represents errors that occur while parsing dynamic linq string expressions. Inheritance Object Exception ParseException Implements ISerializable _Exception Inherited Members Exception.GetBaseException() Exception.GetType() Exception.Message Exception.Data Exception.InnerException Exception.TargetSite Exception.StackTrace Exception.HelpLink Exception.Source Exception.HResult Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Exceptions Assembly : System.Linq.Dynamic.Core.dll Syntax [Serializable] public sealed class ParseException : Exception, ISerializable, _Exception Constructors | Improve this Doc View Source ParseException(String, Int32) Initializes a new instance of the ParseException class with a specified error message and position. Declaration public ParseException(string message, int position) Parameters Type Name Description String message The message that describes the error. Int32 position The location in the parsed string that produced the ParseException Properties | Improve this Doc View Source Position The location in the parsed string that produced the ParseException . Declaration public int Position { get; } Property Value Type Description Int32 Methods | Improve this Doc View Source GetObjectData(SerializationInfo, StreamingContext) When overridden in a derived class, sets the SerializationInfo with information about the exception. Declaration public override void GetObjectData(SerializationInfo info, StreamingContext context) Parameters Type Name Description SerializationInfo info The SerializationInfo that holds the serialized object data about the exception being thrown. StreamingContext context The StreamingContext that contains contextual information about the source or destination. Overrides Exception.GetObjectData(SerializationInfo, StreamingContext) | Improve this Doc View Source ToString() Creates and returns a string representation of the current exception. Declaration public override string ToString() Returns Type Description String A string representation of the current exception. Overrides Exception.ToString() Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" + "keywords": "Class ParseException Represents errors that occur while parsing dynamic linq string expressions. Inheritance System.Object System.Exception ParseException Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception Inherited Members System.Exception.GetBaseException() System.Exception.GetType() System.Exception.Message System.Exception.Data System.Exception.InnerException System.Exception.TargetSite System.Exception.StackTrace System.Exception.HelpLink System.Exception.Source System.Exception.HResult System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Exceptions Assembly : System.Linq.Dynamic.Core.dll Syntax [Serializable] public sealed class ParseException : Exception, ISerializable, _Exception Constructors | Improve this Doc View Source ParseException(String, Int32, Exception) Initializes a new instance of the ParseException class with a specified error message and position. Declaration public ParseException(string message, int position, Exception innerException = null) Parameters Type Name Description System.String message The message that describes the error. System.Int32 position The location in the parsed string that produced the ParseException System.Exception innerException The exception that is the cause of the current exception, or a null reference if no inner exception is specified. Properties | Improve this Doc View Source Position The location in the parsed string that produced the ParseException . Declaration public int Position { get; } Property Value Type Description System.Int32 Methods | Improve this Doc View Source GetObjectData(SerializationInfo, StreamingContext) When overridden in a derived class, sets the System.Runtime.Serialization.SerializationInfo with information about the exception. Declaration public override void GetObjectData(SerializationInfo info, StreamingContext context) Parameters Type Name Description System.Runtime.Serialization.SerializationInfo info The System.Runtime.Serialization.SerializationInfo that holds the serialized object data about the exception being thrown. System.Runtime.Serialization.StreamingContext context The System.Runtime.Serialization.StreamingContext that contains contextual information about the source or destination. Overrides System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) | Improve this Doc View Source ToString() Creates and returns a string representation of the current exception. Declaration public override string ToString() Returns Type Description System.String A string representation of the current exception. Overrides System.Exception.ToString() Implements System.Runtime.Serialization.ISerializable System.Runtime.InteropServices._Exception" }, "api/System.Linq.Dynamic.Core.ExtensibilityPoint.html": { "href": "api/System.Linq.Dynamic.Core.ExtensibilityPoint.html", "title": "Class ExtensibilityPoint", - "keywords": "Class ExtensibilityPoint Extensibility point: If you want to modify expanded queries before executing them set your own functionality to override empty QueryOptimizer Inheritance Object ExtensibilityPoint Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExtensibilityPoint Fields | Improve this Doc View Source QueryOptimizer Place to optimize your queries. Example: Add a reference to Nuget package Linq.Expression.Optimizer and in your program initializers set Extensibility.QueryOptimizer = ExpressionOptimizer.visit; Declaration public static Func QueryOptimizer Field Value Type Description Func < Expression , Expression >" + "keywords": "Class ExtensibilityPoint Extensibility point: If you want to modify expanded queries before executing them set your own functionality to override empty QueryOptimizer Inheritance System.Object ExtensibilityPoint Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExtensibilityPoint Fields | Improve this Doc View Source QueryOptimizer Place to optimize your queries. Example: Add a reference to Nuget package Linq.Expression.Optimizer and in your program initializers set Extensibility.QueryOptimizer = ExpressionOptimizer.visit; Declaration public static Func QueryOptimizer Field Value Type Description System.Func < System.Linq.Expressions.Expression , System.Linq.Expressions.Expression >" }, "api/System.Linq.Dynamic.Core.GroupResult.html": { "href": "api/System.Linq.Dynamic.Core.GroupResult.html", "title": "Class GroupResult", - "keywords": "Class GroupResult The result of a call to a DynamicQueryableExtensions .GroupByMany() overload. Inheritance Object GroupResult Inherited Members Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class GroupResult Properties | Improve this Doc View Source Count The number of resulting elements in the group. Declaration public int Count { get; } Property Value Type Description Int32 | Improve this Doc View Source Items The resulting elements in the group. Declaration public IEnumerable Items { get; } Property Value Type Description IEnumerable | Improve this Doc View Source Key The key value of the group. Declaration public object Key { get; } Property Value Type Description Object | Improve this Doc View Source Subgroups The resulting subgroups in the group. Declaration public IEnumerable Subgroups { get; } Property Value Type Description IEnumerable < GroupResult > Methods | Improve this Doc View Source ToString() Returns a String showing the key of the group and the number of items in the group. Declaration public override string ToString() Returns Type Description String A String that represents this instance. Overrides Object.ToString()" + "keywords": "Class GroupResult The result of a call to a DynamicQueryableExtensions .GroupByMany() overload. Inheritance System.Object GroupResult Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class GroupResult Properties | Improve this Doc View Source Count The number of resulting elements in the group. Declaration public int Count { get; } Property Value Type Description System.Int32 | Improve this Doc View Source Items The resulting elements in the group. Declaration public IEnumerable Items { get; } Property Value Type Description System.Collections.IEnumerable | Improve this Doc View Source Key The key value of the group. Declaration public object Key { get; } Property Value Type Description System.Object | Improve this Doc View Source Subgroups The resulting subgroups in the group. Declaration public IEnumerable Subgroups { get; } Property Value Type Description System.Collections.Generic.IEnumerable < GroupResult > Methods | Improve this Doc View Source ToString() Returns a System.String showing the key of the group and the number of items in the group. Declaration public override string ToString() Returns Type Description System.String A System.String that represents this instance. Overrides System.Object.ToString()" }, "api/System.Linq.Dynamic.Core.html": { "href": "api/System.Linq.Dynamic.Core.html", "title": "Namespace System.Linq.Dynamic.Core", - "keywords": "Namespace System.Linq.Dynamic.Core Classes DefaultQueryableAnalyzer Default implementation. DynamicClass Provides a base class for dynamic objects for Net 3.5 DynamicClassFactory A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary . DynamicEnumerableExtensions Define extensions on IEnumerable . DynamicExpressionParser Helper class to convert an expression into an LambdaExpression DynamicProperty DynamicProperty DynamicQueryableExtensions Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement IQueryable . It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by. ExtensibilityPoint Extensibility point: If you want to modify expanded queries before executing them set your own functionality to override empty QueryOptimizer GroupResult The result of a call to a DynamicQueryableExtensions .GroupByMany() overload. PagedResult PagedResult PagedResult PagedResult{TSource} ParsingConfig Configuration class for System.Linq.Dynamic.Core. Interfaces IAssemblyHelper IAssemblyHelper interface which is used to retrieve assemblies that have been loaded into the execution context of this application domain. IQueryableAnalyzer Interface for QueryableAnalyzer." + "keywords": "Namespace System.Linq.Dynamic.Core Classes DefaultQueryableAnalyzer Default implementation. DynamicClass Provides a base class for dynamic objects for Net 3.5 DynamicClassFactory A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary . DynamicEnumerableExtensions Define extensions on System.Collections.IEnumerable . DynamicExpressionParser Helper class to convert an expression into an LambdaExpression DynamicProperty DynamicProperty DynamicQueryableExtensions Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement System.Linq.IQueryable . It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by. ExtensibilityPoint Extensibility point: If you want to modify expanded queries before executing them set your own functionality to override empty QueryOptimizer GroupResult The result of a call to a DynamicQueryableExtensions .GroupByMany() overload. PagedResult PagedResult PagedResult PagedResult{TSource} ParsingConfig Configuration class for System.Linq.Dynamic.Core. Interfaces IAssemblyHelper IAssemblyHelper interface which is used to retrieve assemblies that have been loaded into the execution context of this application domain. IQueryableAnalyzer Interface for QueryableAnalyzer." }, "api/System.Linq.Dynamic.Core.IAssemblyHelper.html": { "href": "api/System.Linq.Dynamic.Core.IAssemblyHelper.html", "title": "Interface IAssemblyHelper", - "keywords": "Interface IAssemblyHelper IAssemblyHelper interface which is used to retrieve assemblies that have been loaded into the execution context of this application domain. Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IAssemblyHelper Methods | Improve this Doc View Source GetAssemblies() Gets the assemblies that have been loaded into the execution context of this application domain. Declaration Assembly[] GetAssemblies() Returns Type Description Assembly [] An array of assemblies in this application domain." + "keywords": "Interface IAssemblyHelper IAssemblyHelper interface which is used to retrieve assemblies that have been loaded into the execution context of this application domain. Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IAssemblyHelper Methods | Improve this Doc View Source GetAssemblies() Gets the assemblies that have been loaded into the execution context of this application domain. Declaration Assembly[] GetAssemblies() Returns Type Description System.Reflection.Assembly [] An array of assemblies in this application domain." }, "api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html": { "href": "api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html", "title": "Interface IQueryableAnalyzer", - "keywords": "Interface IQueryableAnalyzer Interface for QueryableAnalyzer. Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IQueryableAnalyzer Methods | Improve this Doc View Source SupportsLinqToObjects(IQueryable, IQueryProvider) Determines whether the specified query (and provider) supports LinqToObjects. Declaration bool SupportsLinqToObjects(IQueryable query, IQueryProvider provider = null) Parameters Type Name Description IQueryable query The query to check. IQueryProvider provider The provider to check (can be null). Returns Type Description Boolean true/false" + "keywords": "Interface IQueryableAnalyzer Interface for QueryableAnalyzer. Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IQueryableAnalyzer Methods | Improve this Doc View Source SupportsLinqToObjects(IQueryable, IQueryProvider) Determines whether the specified query (and provider) supports LinqToObjects. Declaration bool SupportsLinqToObjects(IQueryable query, IQueryProvider provider = null) Parameters Type Name Description System.Linq.IQueryable query The query to check. System.Linq.IQueryProvider provider The provider to check (can be null). Returns Type Description System.Boolean true/false" }, "api/System.Linq.Dynamic.Core.PagedResult.html": { "href": "api/System.Linq.Dynamic.Core.PagedResult.html", "title": "Class PagedResult", - "keywords": "Class PagedResult PagedResult Inheritance Object PagedResult PagedResult Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class PagedResult Properties | Improve this Doc View Source CurrentPage Gets or sets the current page. Declaration public int CurrentPage { get; set; } Property Value Type Description Int32 The current page. | Improve this Doc View Source PageCount Gets or sets the page count. Declaration public int PageCount { get; set; } Property Value Type Description Int32 The page count. | Improve this Doc View Source PageSize Gets or sets the size of the page. Declaration public int PageSize { get; set; } Property Value Type Description Int32 The size of the page. | Improve this Doc View Source Queryable Gets or sets the queryable. Declaration public IQueryable Queryable { get; set; } Property Value Type Description IQueryable The queryable. | Improve this Doc View Source RowCount Gets or sets the row count. Declaration public int RowCount { get; set; } Property Value Type Description Int32 The row count." + "keywords": "Class PagedResult PagedResult Inheritance System.Object PagedResult PagedResult Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class PagedResult Properties | Improve this Doc View Source CurrentPage Gets or sets the current page. Declaration public int CurrentPage { get; set; } Property Value Type Description System.Int32 The current page. | Improve this Doc View Source PageCount Gets or sets the page count. Declaration public int PageCount { get; set; } Property Value Type Description System.Int32 The page count. | Improve this Doc View Source PageSize Gets or sets the size of the page. Declaration public int PageSize { get; set; } Property Value Type Description System.Int32 The size of the page. | Improve this Doc View Source Queryable Gets or sets the queryable. Declaration public IQueryable Queryable { get; set; } Property Value Type Description System.Linq.IQueryable The queryable. | Improve this Doc View Source RowCount Gets or sets the row count. Declaration public int RowCount { get; set; } Property Value Type Description System.Int32 The row count." }, "api/System.Linq.Dynamic.Core.PagedResult-1.html": { "href": "api/System.Linq.Dynamic.Core.PagedResult-1.html", "title": "Class PagedResult", - "keywords": "Class PagedResult PagedResult{TSource} Inheritance Object PagedResult PagedResult Inherited Members PagedResult.CurrentPage PagedResult.PageCount PagedResult.PageSize PagedResult.RowCount Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class PagedResult : PagedResult Type Parameters Name Description TSource The type of the source. Properties | Improve this Doc View Source Queryable Gets or sets the queryable. Declaration public IQueryable Queryable { get; set; } Property Value Type Description IQueryable The queryable." + "keywords": "Class PagedResult PagedResult{TSource} Inheritance System.Object PagedResult PagedResult Inherited Members PagedResult.CurrentPage PagedResult.PageCount PagedResult.PageSize PagedResult.RowCount System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class PagedResult : PagedResult Type Parameters Name Description TSource The type of the source. Properties | Improve this Doc View Source Queryable Gets or sets the queryable. Declaration public IQueryable Queryable { get; set; } Property Value Type Description System.Linq.IQueryable The queryable." }, "api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html": { "href": "api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html", "title": "Class ExpressionParser", - "keywords": "Class ExpressionParser ExpressionParser Inheritance Object ExpressionParser Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExpressionParser Constructors | Improve this Doc View Source ExpressionParser(ParameterExpression[], String, Object[], ParsingConfig) Initializes a new instance of the ExpressionParser class. Declaration public ExpressionParser(ParameterExpression[] parameters, string expression, object[] values, ParsingConfig parsingConfig) Parameters Type Name Description ParameterExpression [] parameters The parameters. String expression The expression. Object [] values The values. ParsingConfig parsingConfig The parsing configuration. Properties | Improve this Doc View Source ItName Gets name for the it field. By default this is set to the KeyWord value \"it\". Declaration public string ItName { get; } Property Value Type Description String | Improve this Doc View Source LastLambdaItName There was a problem when an expression contained multiple lambdas where the ItName was not cleared and freed for the next lambda. This variable stores the ItName of the last parsed lambda. Not used internally by ExpressionParser, but used to preserve compatiblity of parsingConfig.RenameParameterExpression which was designed to only work with mono-lambda expressions. Declaration public string LastLambdaItName { get; } Property Value Type Description String Methods | Improve this Doc View Source Parse(Type, Boolean) Uses the TextParser to parse the string into the specified result type. Declaration public Expression Parse(Type resultType, bool createParameterCtor = true) Parameters Type Name Description Type resultType Type of the result. Boolean createParameterCtor if set to true [create parameter ctor]. Returns Type Description Expression Expression" + "keywords": "Class ExpressionParser ExpressionParser Inheritance System.Object ExpressionParser Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExpressionParser Constructors | Improve this Doc View Source ExpressionParser(ParameterExpression[], String, Object[], ParsingConfig) Initializes a new instance of the ExpressionParser class. Declaration public ExpressionParser(ParameterExpression[] parameters, string expression, object[] values, ParsingConfig parsingConfig) Parameters Type Name Description System.Linq.Expressions.ParameterExpression [] parameters The parameters. System.String expression The expression. System.Object [] values The values. ParsingConfig parsingConfig The parsing configuration. Properties | Improve this Doc View Source ItName Gets name for the it field. By default this is set to the KeyWord value \"it\". Declaration public string ItName { get; } Property Value Type Description System.String | Improve this Doc View Source LastLambdaItName There was a problem when an expression contained multiple lambdas where the ItName was not cleared and freed for the next lambda. This variable stores the ItName of the last parsed lambda. Not used internally by ExpressionParser, but used to preserve compatibility of parsingConfig.RenameParameterExpression which was designed to only work with mono-lambda expressions. Declaration public string LastLambdaItName { get; } Property Value Type Description System.String Methods | Improve this Doc View Source Parse(Type, Boolean) Uses the TextParser to parse the string into the specified result type. Declaration public Expression Parse(Type resultType, bool createParameterCtor = true) Parameters Type Name Description System.Type resultType Type of the result. System.Boolean createParameterCtor if set to true [create parameter ctor]. Returns Type Description System.Linq.Expressions.Expression Expression" }, "api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html": { "href": "api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html", "title": "Class ExpressionPromoter", - "keywords": "Class ExpressionPromoter ExpressionPromoter Inheritance Object ExpressionPromoter Implements IExpressionPromoter Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExpressionPromoter : IExpressionPromoter Constructors | Improve this Doc View Source ExpressionPromoter(ParsingConfig) Initializes a new instance of the ExpressionPromoter class. Declaration public ExpressionPromoter(ParsingConfig config) Parameters Type Name Description ParsingConfig config The ParsingConfig. Methods | Improve this Doc View Source Promote(Expression, Type, Boolean, Boolean) Promote an expression Declaration public virtual Expression Promote(Expression expr, Type type, bool exact, bool convertExpr) Parameters Type Name Description Expression expr Source expression Type type Destination data type to promote Boolean exact If the match must be exact Boolean convertExpr Convert expression Returns Type Description Expression The promoted Expression or null. Implements IExpressionPromoter" + "keywords": "Class ExpressionPromoter ExpressionPromoter Inheritance System.Object ExpressionPromoter Implements IExpressionPromoter Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class ExpressionPromoter : IExpressionPromoter Constructors | Improve this Doc View Source ExpressionPromoter(ParsingConfig) Initializes a new instance of the ExpressionPromoter class. Declaration public ExpressionPromoter(ParsingConfig config) Parameters Type Name Description ParsingConfig config The ParsingConfig. Methods | Improve this Doc View Source Promote(Expression, Type, Boolean, Boolean) Promote an expression Declaration public virtual Expression Promote(Expression expr, Type type, bool exact, bool convertExpr) Parameters Type Name Description System.Linq.Expressions.Expression expr Source expression System.Type type Destination data type to promote System.Boolean exact If the match must be exact System.Boolean convertExpr Convert expression Returns Type Description System.Linq.Expressions.Expression The promoted System.Linq.Expressions.Expression or null. Implements IExpressionPromoter" }, "api/System.Linq.Dynamic.Core.Parser.html": { "href": "api/System.Linq.Dynamic.Core.Parser.html", @@ -132,17 +142,17 @@ "api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html": { "href": "api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html", "title": "Interface IExpressionPromoter", - "keywords": "Interface IExpressionPromoter Expression promoter is used to promote object or value types to their destination type when an automatic promotion is available such as: int to int? Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IExpressionPromoter Methods | Improve this Doc View Source Promote(Expression, Type, Boolean, Boolean) Promote an expression Declaration Expression Promote(Expression expr, Type type, bool exact, bool convertExpr) Parameters Type Name Description Expression expr Source expression Type type Destination data type to promote Boolean exact If the match must be exact Boolean convertExpr Convert expression Returns Type Description Expression The promoted Expression or null." + "keywords": "Interface IExpressionPromoter Expression promoter is used to promote object or value types to their destination type when an automatic promotion is available such as: int to int? Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public interface IExpressionPromoter Methods | Improve this Doc View Source Promote(Expression, Type, Boolean, Boolean) Promote an expression Declaration Expression Promote(Expression expr, Type type, bool exact, bool convertExpr) Parameters Type Name Description System.Linq.Expressions.Expression expr Source expression System.Type type Destination data type to promote System.Boolean exact If the match must be exact System.Boolean convertExpr Convert expression Returns Type Description System.Linq.Expressions.Expression The promoted System.Linq.Expressions.Expression or null." }, "api/System.Linq.Dynamic.Core.Parser.NumberParser.html": { "href": "api/System.Linq.Dynamic.Core.Parser.NumberParser.html", "title": "Class NumberParser", - "keywords": "Class NumberParser NumberParser Inheritance Object NumberParser Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class NumberParser Constructors | Improve this Doc View Source NumberParser(ParsingConfig) Initializes a new instance of the NumberParser class. Declaration public NumberParser(ParsingConfig config) Parameters Type Name Description ParsingConfig config The ParsingConfig. Methods | Improve this Doc View Source ParseIntegerLiteral(Int32, String) Tries to parse the text into a IntegerLiteral ConstantExpression. Declaration public Expression ParseIntegerLiteral(int tokenPosition, string text) Parameters Type Name Description Int32 tokenPosition The current token position (needed for error reporting). String text The text. Returns Type Description Expression | Improve this Doc View Source ParseNumber(String, Type) Parses the number (text) into the specified type. Declaration public object ParseNumber(string text, Type type) Parameters Type Name Description String text The text. Type type The type. Returns Type Description Object | Improve this Doc View Source ParseRealLiteral(String, Char, Boolean) Parse the text into a Real ConstantExpression. Declaration public Expression ParseRealLiteral(string text, char qualifier, bool stripQualifier) Parameters Type Name Description String text Char qualifier Boolean stripQualifier Returns Type Description Expression | Improve this Doc View Source TryParseNumber(String, Type, out Object) Tries to parse the number (text) into the specified type. Declaration public bool TryParseNumber(string text, Type type, out object result) Parameters Type Name Description String text The text. Type type The type. Object result The result. Returns Type Description Boolean" + "keywords": "Class NumberParser NumberParser Inheritance System.Object NumberParser Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Parser Assembly : System.Linq.Dynamic.Core.dll Syntax public class NumberParser Constructors | Improve this Doc View Source NumberParser(ParsingConfig) Initializes a new instance of the NumberParser class. Declaration public NumberParser(ParsingConfig config) Parameters Type Name Description ParsingConfig config The ParsingConfig. Methods | Improve this Doc View Source ParseIntegerLiteral(Int32, String) Tries to parse the text into a IntegerLiteral ConstantExpression. Declaration public Expression ParseIntegerLiteral(int tokenPosition, string text) Parameters Type Name Description System.Int32 tokenPosition The current token position (needed for error reporting). System.String text The text. Returns Type Description System.Linq.Expressions.Expression | Improve this Doc View Source ParseNumber(String, Type) Parses the number (text) into the specified type. Declaration public object ParseNumber(string text, Type type) Parameters Type Name Description System.String text The text. System.Type type The type. Returns Type Description System.Object | Improve this Doc View Source ParseRealLiteral(String, Char, Boolean) Parse the text into a Real ConstantExpression. Declaration public Expression ParseRealLiteral(string text, char qualifier, bool stripQualifier) Parameters Type Name Description System.String text System.Char qualifier System.Boolean stripQualifier Returns Type Description System.Linq.Expressions.Expression | Improve this Doc View Source TryParseNumber(String, Type, out Object) Tries to parse the number (text) into the specified type. Declaration public bool TryParseNumber(string text, Type type, out object result) Parameters Type Name Description System.String text The text. System.Type type The type. System.Object result The result. Returns Type Description System.Boolean" }, "api/System.Linq.Dynamic.Core.ParsingConfig.html": { "href": "api/System.Linq.Dynamic.Core.ParsingConfig.html", "title": "Class ParsingConfig", - "keywords": "Class ParsingConfig Configuration class for System.Linq.Dynamic.Core. Inheritance Object ParsingConfig Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class ParsingConfig Properties | Improve this Doc View Source AllowNewToEvaluateAnyType Allows the New() keyword to evaluate any available Type. Default value is false . Declaration public bool AllowNewToEvaluateAnyType { get; set; } Property Value Type Description Boolean | Improve this Doc View Source AreContextKeywordsEnabled Determines if the context keywords (it, parent, and root) are valid and usable inside a Dynamic Linq string expression. Does not affect the usability of the equivalent context symbols ($, ^ and ~). Default value is false . Declaration public bool AreContextKeywordsEnabled { get; set; } Property Value Type Description Boolean | Improve this Doc View Source CustomTypeProvider Gets or sets the IDynamicLinkCustomTypeProvider . Declaration public IDynamicLinkCustomTypeProvider CustomTypeProvider { get; set; } Property Value Type Description IDynamicLinkCustomTypeProvider | Improve this Doc View Source DateTimeIsParsedAsUTC By default DateTime (like 'Fri, 10 May 2019 11:03:17 GMT') is parsed as local time. Use this flag to parse all DateTime strings as UTC. Default value is false . Declaration public bool DateTimeIsParsedAsUTC { get; set; } Property Value Type Description Boolean | Improve this Doc View Source Default Default ParsingConfig Declaration public static ParsingConfig Default { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DefaultCosmosDb Default ParsingConfig for CosmosDb Declaration public static ParsingConfig DefaultCosmosDb { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DefaultEFCore21 Default ParsingConfig for EntityFramework Core 2.1 and higher Declaration public static ParsingConfig DefaultEFCore21 { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DisableMemberAccessToIndexAccessorFallback By default when a member is not found in a type and the type has a string based index accessor it will be parsed as an index accessor. Use this flag to disable this behaviour and have parsing fail when parsing an expression where a member access on a non existing member happens. Default value is false . Declaration public bool DisableMemberAccessToIndexAccessorFallback { get; set; } Property Value Type Description Boolean | Improve this Doc View Source EvaluateGroupByAtDatabase Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database level. See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation Remark: when this setting is set to 'true', make sure to supply this ParsingConfig as first parameter on the extension methods. Default value is false . Declaration public bool EvaluateGroupByAtDatabase { get; set; } Property Value Type Description Boolean | Improve this Doc View Source ExpressionPromoter Gets or sets the IExpressionPromoter . Declaration public IExpressionPromoter ExpressionPromoter { get; set; } Property Value Type Description IExpressionPromoter | Improve this Doc View Source IsCaseSensitive Gets or sets if parameter, method, and properties resolution should be case sensitive or not (false by default). Declaration public bool IsCaseSensitive { get; set; } Property Value Type Description Boolean | Improve this Doc View Source NullPropagatingUseDefaultValueForNonNullableValueTypes When using the NullPropagating function np(...), use a \"default value\" for non-nullable value types instead of \"null value\". Default value is false . Declaration public bool NullPropagatingUseDefaultValueForNonNullableValueTypes { get; set; } Property Value Type Description Boolean | Improve this Doc View Source NumberParseCulture The number parsing culture. Default value is CultureInfo.InvariantCulture Declaration public CultureInfo NumberParseCulture { get; set; } Property Value Type Description CultureInfo | Improve this Doc View Source PrioritizePropertyOrFieldOverTheType When the type and property have the same name the parser takes the property instead of type when this setting is set to true . This setting is also used for calling ExtensionMethods. Default value is true . Declaration public bool PrioritizePropertyOrFieldOverTheType { get; set; } Property Value Type Description Boolean | Improve this Doc View Source QueryableAnalyzer Gets or sets the IQueryableAnalyzer . Declaration public IQueryableAnalyzer QueryableAnalyzer { get; set; } Property Value Type Description IQueryableAnalyzer | Improve this Doc View Source RenameEmptyParameterExpressionNames Prevents any System.Linq.Expressions.ParameterExpression.Name value from being empty by substituting a random 16 character word. Default value is false . Declaration public bool RenameEmptyParameterExpressionNames { get; set; } Property Value Type Description Boolean | Improve this Doc View Source RenameParameterExpression Renames the (Typed)ParameterExpression empty Name to a the correct supplied name from it . Default value is false . Declaration public bool RenameParameterExpression { get; set; } Property Value Type Description Boolean | Improve this Doc View Source ResolveTypesBySimpleName By default finding types by a simple name is not supported. Use this flag to use the CustomTypeProvider to resolve types by a simple name like \"Employee\" instead of \"MyDatabase.Entities.Employee\". Note that a first matching type is returned and this functionality needs to scan all types from all assemblies, so use with caution. Default value is false . Declaration public bool ResolveTypesBySimpleName { get; set; } Property Value Type Description Boolean | Improve this Doc View Source SupportCastingToFullyQualifiedTypeAsString Support casting to a full qualified type using a string (double quoted value). var result = queryable.Select($\"\\\"System.DateTime\\\"(LastUpdate)\"); Default value is true . Declaration public bool SupportCastingToFullyQualifiedTypeAsString { get; set; } Property Value Type Description Boolean | Improve this Doc View Source SupportEnumerationsFromSystemNamespace Support enumeration-types from the System namespace in mscorlib. An example could be \"StringComparison\". Default value is true. Declaration public bool SupportEnumerationsFromSystemNamespace { get; set; } Property Value Type Description Boolean | Improve this Doc View Source TypeConverters Additional TypeConverters Declaration public IDictionary TypeConverters { get; set; } Property Value Type Description IDictionary < Type , TypeConverter > | Improve this Doc View Source UseParameterizedNamesInDynamicQuery Use Parameterized Names in generated dynamic SQL query. See https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139_entity-framework-dynamic-queries-and-parameterization.mkd Default value is false . Declaration public bool UseParameterizedNamesInDynamicQuery { get; set; } Property Value Type Description Boolean" + "keywords": "Class ParsingConfig Configuration class for System.Linq.Dynamic.Core. Inheritance System.Object ParsingConfig Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core Assembly : System.Linq.Dynamic.Core.dll Syntax public class ParsingConfig Properties | Improve this Doc View Source AllowNewToEvaluateAnyType Allows the New() keyword to evaluate any available Type. Default value is false . Declaration public bool AllowNewToEvaluateAnyType { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source AreContextKeywordsEnabled Determines if the context keywords (it, parent, and root) are valid and usable inside a Dynamic Linq string expression. Does not affect the usability of the equivalent context symbols ($, ^ and ~). Default value is false . Declaration public bool AreContextKeywordsEnabled { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source ConstantExpressionCacheConfig Caches constant expressions to enhance performance. Periodic cleanup is performed to manage cache size, governed by this configuration. Declaration public CacheConfig ConstantExpressionCacheConfig { get; set; } Property Value Type Description CacheConfig | Improve this Doc View Source ConvertObjectToSupportComparison Converts typeof(object) to the correct type to allow comparison (Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan and LessThanEqual). Default value is false . When set to true , the following code will work correct: class Person { public string Name { get; set; } public object Age { get; set; } } var persons = new[] { new Person { Name = \"Foo\", Age = 99 }, new Person { Name = \"Bar\", Age = 33 } }.AsQueryable(); var config = new ParsingConfig { ConvertObjectToSupportComparison = true }; var results = persons.Where(config, \"Age > 50\").ToList(); Declaration public bool ConvertObjectToSupportComparison { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source CustomTypeProvider Gets or sets the IDynamicLinkCustomTypeProvider . Declaration public IDynamicLinkCustomTypeProvider CustomTypeProvider { get; set; } Property Value Type Description IDynamicLinkCustomTypeProvider | Improve this Doc View Source DateTimeIsParsedAsUTC By default, a DateTime (like 'Fri, 10 May 2019 11:03:17 GMT') is parsed as local time. Use this flag to parse all DateTime strings as UTC. Default value is false . Declaration public bool DateTimeIsParsedAsUTC { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source Default Default ParsingConfig Declaration public static ParsingConfig Default { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DefaultCosmosDb Default ParsingConfig for CosmosDb Declaration public static ParsingConfig DefaultCosmosDb { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DefaultEFCore21 Default ParsingConfig for EntityFramework Core 2.1 and higher Declaration public static ParsingConfig DefaultEFCore21 { get; } Property Value Type Description ParsingConfig | Improve this Doc View Source DisableMemberAccessToIndexAccessorFallback By default, when a member is not found in a type and the type has a string based index accessor it will be parsed as an index accessor. Use this flag to disable this behaviour and have parsing fail when parsing an expression where a member access on a non-existing member happens. Default value is false . Declaration public bool DisableMemberAccessToIndexAccessorFallback { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source DisallowNewKeyword Disallows the New() keyword to be used to construct a class. Default value is false . Declaration public bool DisallowNewKeyword { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source EvaluateGroupByAtDatabase Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database level. See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation Remark: when this setting is set to true , make sure to supply this ParsingConfig as first parameter on the extension methods. Default value is false . Declaration public bool EvaluateGroupByAtDatabase { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source ExpressionPromoter Gets or sets the IExpressionPromoter . Declaration public IExpressionPromoter ExpressionPromoter { get; set; } Property Value Type Description IExpressionPromoter | Improve this Doc View Source IsCaseSensitive Gets or sets if parameter, method, and properties resolution should be case-sensitive or not. Default value is false . Declaration public bool IsCaseSensitive { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source LoadAdditionalAssembliesFromCurrentDomainBaseDirectory Load additional assemblies from the current domain base directory. Note: only used when full .NET Framework and .NET Core App 2.x and higher. Default value is false . Declaration public bool LoadAdditionalAssembliesFromCurrentDomainBaseDirectory { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source NullPropagatingUseDefaultValueForNonNullableValueTypes When using the NullPropagating function np(...), use a \"default value\" for non-nullable value types instead of \"null value\". Default value is false . Declaration public bool NullPropagatingUseDefaultValueForNonNullableValueTypes { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source NumberParseCulture The number parsing culture. Default value is CultureInfo.InvariantCulture Declaration public CultureInfo NumberParseCulture { get; set; } Property Value Type Description System.Globalization.CultureInfo | Improve this Doc View Source PrioritizePropertyOrFieldOverTheType When the type and property have the same name the parser takes the property instead of type when this setting is set to true . This setting is also used for calling ExtensionMethods. Default value is true . Declaration public bool PrioritizePropertyOrFieldOverTheType { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source QueryableAnalyzer Gets or sets the IQueryableAnalyzer . Declaration public IQueryableAnalyzer QueryableAnalyzer { get; set; } Property Value Type Description IQueryableAnalyzer | Improve this Doc View Source RenameEmptyParameterExpressionNames Prevents any System.Linq.Expressions.ParameterExpression.Name value from being empty by substituting a random 16 character word. Default value is false . Declaration public bool RenameEmptyParameterExpressionNames { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source RenameParameterExpression Renames the (Typed)ParameterExpression empty Name to the correct supplied name from it . Default value is false . Declaration public bool RenameParameterExpression { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source ResolveTypesBySimpleName By default, finding types by a simple name is not supported. Use this flag to use the CustomTypeProvider to resolve types by a simple name like \"Employee\" instead of \"MyDatabase.Entities.Employee\". Note that a first matching type is returned and this functionality needs to scan all types from all assemblies, so use with caution. Default value is false . Declaration public bool ResolveTypesBySimpleName { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source StringLiteralParsing Defines the type of string literal parsing that will be performed. Default value is StringLiteralParsingType.Default . Declaration public StringLiteralParsingType StringLiteralParsing { get; set; } Property Value Type Description StringLiteralParsingType | Improve this Doc View Source SupportCastingToFullyQualifiedTypeAsString Support casting to a full qualified type using a string (double-quoted value). var result = queryable.Select($\"\\\"System.DateTime\\\"(LastUpdate)\"); Default value is true . Declaration public bool SupportCastingToFullyQualifiedTypeAsString { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source SupportDotInPropertyNames Support a \".\" in a property-name. Used in the 'new (a.b as a.b)' syntax. Default value is false . Declaration public bool SupportDotInPropertyNames { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source SupportEnumerationsFromSystemNamespace Support enumeration-types from the System namespace in mscorlib. An example could be \"StringComparison\". Default value is true . Declaration public bool SupportEnumerationsFromSystemNamespace { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source TypeConverters Additional TypeConverters Declaration public IDictionary TypeConverters { get; set; } Property Value Type Description System.Collections.Generic.IDictionary < System.Type , System.ComponentModel.TypeConverter > | Improve this Doc View Source UseParameterizedNamesInDynamicQuery Use Parameterized Names in generated dynamic SQL query. See https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139_entity-framework-dynamic-queries-and-parameterization.mkd Default value is false . Declaration public bool UseParameterizedNamesInDynamicQuery { get; set; } Property Value Type Description System.Boolean" }, "api/System.Linq.Dynamic.Core.Tokenizer.html": { "href": "api/System.Linq.Dynamic.Core.Tokenizer.html", @@ -152,22 +162,32 @@ "api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html": { "href": "api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html", "title": "Class TextParser", - "keywords": "Class TextParser TextParser which can be used to parse a text into tokens. Inheritance Object TextParser Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Tokenizer Assembly : System.Linq.Dynamic.Core.dll Syntax public class TextParser Constructors | Improve this Doc View Source TextParser(ParsingConfig, String) Constructor for TextParser Declaration public TextParser(ParsingConfig config, string text) Parameters Type Name Description ParsingConfig config String text Fields | Improve this Doc View Source CurrentToken The current parsed Token . Declaration public Token CurrentToken Field Value Type Description Token Methods | Improve this Doc View Source NextToken() Go to the next token. Declaration public void NextToken() | Improve this Doc View Source PeekNextChar() Peek the next character. Declaration public char PeekNextChar() Returns Type Description Char The next character, or \\0 if end of string. | Improve this Doc View Source ValidateToken(TokenId, String) Check if the current token is the specified TokenId . Declaration public void ValidateToken(TokenId tokenId, string errorMessage = null) Parameters Type Name Description TokenId tokenId The tokenId to check. String errorMessage The (optional) error message." + "keywords": "Class TextParser TextParser which can be used to parse a text into tokens. Inheritance System.Object TextParser Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Tokenizer Assembly : System.Linq.Dynamic.Core.dll Syntax public class TextParser Constructors | Improve this Doc View Source TextParser(ParsingConfig, String) Constructor for TextParser Declaration public TextParser(ParsingConfig config, string text) Parameters Type Name Description ParsingConfig config System.String text Fields | Improve this Doc View Source CurrentToken The current parsed Token . Declaration public Token CurrentToken Field Value Type Description Token Methods | Improve this Doc View Source Clone() This method is used to clone the current TextParser . Declaration public TextParser Clone() Returns Type Description TextParser Cloned TextParser | Improve this Doc View Source NextToken() Go to the next token. Declaration public void NextToken() | Improve this Doc View Source PeekNextChar() Peek the next character. Declaration public char PeekNextChar() Returns Type Description System.Char The next character, or \\0 if end of string. | Improve this Doc View Source ValidateToken(TokenId, String) Check if the current token is the specified TokenId . Declaration public void ValidateToken(TokenId tokenId, string errorMessage = null) Parameters Type Name Description TokenId tokenId The tokenId to check. System.String errorMessage The (optional) error message." }, "api/System.Linq.Dynamic.Core.Tokenizer.Token.html": { "href": "api/System.Linq.Dynamic.Core.Tokenizer.Token.html", "title": "Struct Token", - "keywords": "Struct Token Token Inherited Members ValueType.Equals(Object) ValueType.GetHashCode() ValueType.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Namespace : System.Linq.Dynamic.Core.Tokenizer Assembly : System.Linq.Dynamic.Core.dll Syntax public struct Token Properties | Improve this Doc View Source Id The TokenId. Declaration public TokenId Id { readonly get; set; } Property Value Type Description TokenId | Improve this Doc View Source OriginalId The Original TokenId. Declaration public TokenId OriginalId { readonly get; set; } Property Value Type Description TokenId | Improve this Doc View Source Pos The position. Declaration public int Pos { readonly get; set; } Property Value Type Description Int32 | Improve this Doc View Source Text The text. Declaration public string Text { readonly get; set; } Property Value Type Description String" + "keywords": "Struct Token Token Inherited Members System.ValueType.Equals(System.Object) System.ValueType.GetHashCode() System.ValueType.ToString() System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetType() Namespace : System.Linq.Dynamic.Core.Tokenizer Assembly : System.Linq.Dynamic.Core.dll Syntax public struct Token Properties | Improve this Doc View Source Id The TokenId. Declaration public TokenId Id { readonly get; set; } Property Value Type Description TokenId | Improve this Doc View Source OriginalId The Original TokenId. Declaration public TokenId OriginalId { readonly get; set; } Property Value Type Description TokenId | Improve this Doc View Source Pos The position. Declaration public int Pos { readonly get; set; } Property Value Type Description System.Int32 | Improve this Doc View Source Text The text. Declaration public string Text { readonly get; set; } Property Value Type Description System.String" }, "api/System.Linq.Dynamic.Core.Tokenizer.TokenId.html": { "href": "api/System.Linq.Dynamic.Core.Tokenizer.TokenId.html", "title": "Enum TokenId", "keywords": "Enum TokenId TokenId which defines the text which is parsed. Namespace : System.Linq.Dynamic.Core.Tokenizer Assembly : System.Linq.Dynamic.Core.dll Syntax public enum TokenId Fields Name Description Ampersand Asterisk Bar CloseBracket CloseCurlyParen CloseParen Colon Comma Dot DoubleAmpersand DoubleBar DoubleEqual DoubleGreaterThan DoubleLessThan End Equal Exclamation ExclamationEqual GreaterThan GreaterThanEqual Identifier IntegerLiteral Lambda LessGreater LessThan LessThanEqual Minus NullCoalescing NullPropagation OpenBracket OpenCurlyParen OpenParen Percent Plus Question RealLiteral Slash StringLiteral Unknown" }, + "api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html": { + "href": "api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html", + "title": "Class CacheConfig", + "keywords": "Class CacheConfig Cache Configuration Options Inheritance System.Object CacheConfig Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System.Linq.Dynamic.Core.Util.Cache Assembly : System.Linq.Dynamic.Core.dll Syntax public class CacheConfig Properties | Improve this Doc View Source CleanupFrequency Sets the frequency for running the cleanup process in the Constant Expression cache. By default, cleanup occurs every 10 minutes. Declaration public TimeSpan CleanupFrequency { get; set; } Property Value Type Description System.TimeSpan | Improve this Doc View Source MinItemsTrigger Configures the minimum number of items required in the constant expression cache before triggering cleanup. This prevents frequent cleanups, especially in caches with few items. A default value of null implies that cleanup is always allowed to run, helping in timely removal of unused cache items. Declaration public int? MinItemsTrigger { get; set; } Property Value Type Description System.Nullable < System.Int32 > | Improve this Doc View Source ReturnExpiredItems Enables returning expired cache items in scenarios where cleanup, running on a separate thread, has not yet removed them. This allows for the retrieval of an expired object without needing to clear and recreate it if a request is made concurrently with cleanup. Particularly useful when cached items are deterministic, ensuring consistent results even from expired entries. Default true; Declaration public bool ReturnExpiredItems { get; set; } Property Value Type Description System.Boolean | Improve this Doc View Source TimeToLive Sets a Time-To-Live (TTL) for items in the constant expression cache to prevent uncontrolled growth. Items not accessed within this TTL will be expired, allowing garbage collection to reclaim the memory. Default is 10 minutes. Declaration public TimeSpan TimeToLive { get; set; } Property Value Type Description System.TimeSpan" + }, + "api/System.Linq.Dynamic.Core.Util.Cache.html": { + "href": "api/System.Linq.Dynamic.Core.Util.Cache.html", + "title": "Namespace System.Linq.Dynamic.Core.Util.Cache", + "keywords": "Namespace System.Linq.Dynamic.Core.Util.Cache Classes CacheConfig Cache Configuration Options" + }, "api/System.Tuple-2.html": { "href": "api/System.Tuple-2.html", "title": "Class Tuple", - "keywords": "Class Tuple Represents a 2-tuple, or pair. Inheritance Object Tuple Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : System Assembly : System.Linq.Dynamic.Core.dll Syntax public class Tuple Type Parameters Name Description T1 The type of the tuple's first component. T2 The type of the tuple's second component. Properties | Improve this Doc View Source Item1 The value of the current System.Tuple`2 object's first component. Declaration public T1 Item1 { get; } Property Value Type Description T1 | Improve this Doc View Source Item2 The value of the current System.Tuple`2 object's second component. Declaration public T2 Item2 { get; } Property Value Type Description T2" + "keywords": "Class Tuple Represents a 2-tuple, or pair. Inheritance System.Object Tuple Inherited Members System.Object.ToString() System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.ReferenceEquals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() Namespace : System Assembly : System.Linq.Dynamic.Core.dll Syntax public class Tuple Type Parameters Name Description T1 The type of the tuple's first component. T2 The type of the tuple's second component. Properties | Improve this Doc View Source Item1 The value of the current System.Tuple`2 object's first component. Declaration public T1 Item1 { get; } Property Value Type Description T1 | Improve this Doc View Source Item2 The value of the current System.Tuple`2 object's second component. Declaration public T2 Item2 { get; } Property Value Type Description T2" }, "index.html": { "href": "index.html", diff --git a/docs/manifest.json b/docs/manifest.json index 111ec7e7..0945303d 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -27,13 +27,37 @@ "is_incremental": false, "version": "" }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.yml", + "output": { + ".html": { + "relative_path": "api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html", + "hash": "952dnQSuaC4a0LSojUESYeWrgo2RZRlddYAldO18mzk=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/System.Linq.Dynamic.Core.Config.yml", + "output": { + ".html": { + "relative_path": "api/System.Linq.Dynamic.Core.Config.html", + "hash": "m+gq37RMOnBhHGP3weudNRdVeVdZUBS96ydZTUt7Vh0=" + } + }, + "is_incremental": false, + "version": "" + }, { "type": "ManagedReference", "source_relative_path": "obj/api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.yml", "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider.html", - "hash": "Hw4zaHuWpQD3BQ5RFW8FxSPTPZwDwmTIOp829oJVVgA=" + "hash": "cif6dwbUcegqMceyG8K6dJ34uXcb3hzr8dfh8hZiaj0=" } }, "is_incremental": false, @@ -45,7 +69,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html", - "hash": "tOjhiA9SOysNhX9225GNgSgqw7XHztu3/AWcn55tKyI=" + "hash": "3bDMmTTjwfVaJlFZ9GC80mK2F6b5KjjkfjUI5HhTMzk=" } }, "is_incremental": false, @@ -57,7 +81,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.CustomTypeProviders.DynamicLinqTypeAttribute.html", - "hash": "krSzJhQDPcuUnnL2dcqHg144x18g7BDQ47mukGi5jiY=" + "hash": "ry+EgJ6OlR2cAR+qdhQxMuWhHw3M6qy+fOaZLhuIqQM=" } }, "is_incremental": false, @@ -81,7 +105,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinqCustomTypeProvider.html", - "hash": "8NayIEt7xA6QnbgZOunViYnTqd/K1xE5LOV38KhKd00=" + "hash": "VRNmZD7x6o2gLh/7+qvHlsoqYyb7TTGufGSd3585h48=" } }, "is_incremental": false, @@ -93,7 +117,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.CustomTypeProviders.html", - "hash": "PzsyUBS7aDF/GhmvAHSKEdIFX1uSUL/Gn+WN6PFuzgo=" + "hash": "Sc3EZWh8OM8MTafwZEMJlV1h1qKwQ64+kNNwl0LYJAg=" } }, "is_incremental": false, @@ -105,7 +129,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DefaultQueryableAnalyzer.html", - "hash": "9SP4P0EhLif7BBemSeTWOlA3eJFW67Mzh7grTGWrhdg=" + "hash": "QDQs0gLJcM9qnf0Chgq7kUZcWwoA71pTUkRlVrU9h+E=" } }, "is_incremental": false, @@ -117,7 +141,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicClass.html", - "hash": "dv7dn53UdvS2xxNnXoqwiKEqcN5Vmp5JrWjoMmfGZwg=" + "hash": "zYkrABr9x4LoxikzH/qFfqFRj1E9+GnbcfXIk1yvmcA=" } }, "is_incremental": false, @@ -129,7 +153,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicClassFactory.html", - "hash": "Cpdy7iQz+xFy/UQiAYW+LJoAKTN1G3naQVDnYB1Fa8E=" + "hash": "rAcal4EWIiqTyeCAUJoW0jegRtRwC7gaEfNp6JmIwh4=" } }, "is_incremental": false, @@ -141,7 +165,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicEnumerableExtensions.html", - "hash": "AFND/nPjfatcn6h4XxbRGj2WxMAM7TsPPVFXSb6nMdo=" + "hash": "fqfs2JTxs9L7nf2l8RW/fzTQHg+GZ3dz2kPnH9dva5Y=" } }, "is_incremental": false, @@ -153,7 +177,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicExpressionParser.html", - "hash": "tsWJlTcTZohalud1TpEGshzVQa6W4znROuaoM/r5vW4=" + "hash": "Iwypfm6TMFeP84XwtKqZQ3rTiAE/vTQb9sV3VM96c5o=" } }, "is_incremental": false, @@ -165,7 +189,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicProperty.html", - "hash": "kRcJfsqYptA+g3He8TIKUTxWr6fu4ThncePPqZhMI3U=" + "hash": "8jWcSMtvLhpb0MaZ4sPdp8PVxPfoZU8i5/BrbeI1THg=" } }, "is_incremental": false, @@ -177,7 +201,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.DynamicQueryableExtensions.html", - "hash": "8Scsef33jXhnfUNwgNkLf9pDMpixu4qWOHe3r+SzaDc=" + "hash": "pP1zwXYlw7No5YzML23k45mTFMNtEp07QTuHfqNi/hs=" } }, "is_incremental": false, @@ -189,7 +213,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Exceptions.ParseException.html", - "hash": "JwvstWZuhLt+QjCE3HWqVzd/vZe13sB1aU7gq1tf1YE=" + "hash": "sUaJ2OsYdfeDcvEB/kRMjKwWv2657SogE8+zYeHRe6Y=" } }, "is_incremental": false, @@ -213,7 +237,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.ExtensibilityPoint.html", - "hash": "63G/lgWlz6103fZkAyP1LFejWM02Yg4arDEqkfBgCis=" + "hash": "8rqmaKUbCE6gRFX+sKC9ZWqsQ/O5e1tSD8by194FFKU=" } }, "is_incremental": false, @@ -225,7 +249,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.GroupResult.html", - "hash": "FyTflxv9BjDM5qFUpGj5ofiCtFnPgVt9NLiscACGNLo=" + "hash": "2Ep5fQHdCzYJTtzttfCGmoBpbff4pekjgq4OcEKoj+g=" } }, "is_incremental": false, @@ -237,7 +261,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.IAssemblyHelper.html", - "hash": "0lMGOtbSDLIxq75I0DpK5hVBEmWUrWy33/s2gMh4APE=" + "hash": "Vg1AL5kqOVlbX8cVqF9ap42a/wn09Md/EvavZM61qBk=" } }, "is_incremental": false, @@ -249,7 +273,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.IQueryableAnalyzer.html", - "hash": "PVK2ufWtA8znWYt/j/JEQPDWdhOzPXWj7cX6i2yBpz8=" + "hash": "FA0yTSO4t5X6/HO5oMH6rvQ7MU9LAGm70xWlG4am8IE=" } }, "is_incremental": false, @@ -261,7 +285,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.PagedResult-1.html", - "hash": "vpwnq+ZSNsWsmRm5JEdiWdg0JiA8gwkCjAdGtSVideA=" + "hash": "XWYnZh74rEcuWCawnXSt9pvWuolvGvRaC/lODYEgRX0=" } }, "is_incremental": false, @@ -273,7 +297,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.PagedResult.html", - "hash": "iFARffOWfmiDv6G1QWduT1EdDBVY/AOvIeUBKWnDuiA=" + "hash": "bsbvFf5FM6PHvQOP+Kh3AMQZacFuf0nkEOxZVIyLBfc=" } }, "is_incremental": false, @@ -285,7 +309,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Parser.ExpressionParser.html", - "hash": "E0V6UOejA9k9JpCTVILhcDT3NyJEXW5mPKoNlpIvPqM=" + "hash": "LGwZDQn7Y3ulJnfo1GKtTQ5Eu0bivzLYjIJ8cCM8fRA=" } }, "is_incremental": false, @@ -297,7 +321,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Parser.ExpressionPromoter.html", - "hash": "4M+SGT8CBEEVLMse+NH7XP5SGxOn7bFnyYTUIp7YI1o=" + "hash": "NSBEhZIm2K+syunC7uVCJpPkb8gIFpyPIM0Zgrq3sT0=" } }, "is_incremental": false, @@ -309,7 +333,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Parser.IExpressionPromoter.html", - "hash": "YAr5s5r1GdnKDMDA6eUvLjQQsA/3SWxzdA9KmKGN0ew=" + "hash": "CfPxqcwmtHKbmA4K67VnwaK10vcWCTgrdk5VMW4rpd8=" } }, "is_incremental": false, @@ -321,7 +345,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Parser.NumberParser.html", - "hash": "UCU88Y0WQV7xmdA5pA4fPVNBbD4XNfMpBdSXQ7172Yc=" + "hash": "FWBbHjgj6k4z01SjlhVat4a3QuY7oVtTDNTkVcdKrqU=" } }, "is_incremental": false, @@ -345,7 +369,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.ParsingConfig.html", - "hash": "cfAv4clBBdg+P6NKJaZBzjeNeR3SHHeUUlZbgfC02XM=" + "hash": "8SCuPnkvo6lCYn0Jq9eoEw2P7FF2dyeKaJySoAf8RDU=" } }, "is_incremental": false, @@ -357,7 +381,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html", - "hash": "Cxz2FiBBqCS4FYsKBLKiJwZ/Hbpfdiw+jN3fY2ncrkY=" + "hash": "dKFEyhPuKiOnpLAxQZW2f1ZqNmXlCTOGwmjBEg/uk1U=" } }, "is_incremental": false, @@ -369,7 +393,7 @@ "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.Tokenizer.Token.html", - "hash": "Ky7+SPEfzi85NZPPzdRelr4g85kdizPOYaGQy/3zucg=" + "hash": "OSHyjf47XEKFv3yrAZHE9bahMBJgy9LxptJn89KYg8o=" } }, "is_incremental": false, @@ -399,13 +423,37 @@ "is_incremental": false, "version": "" }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.yml", + "output": { + ".html": { + "relative_path": "api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html", + "hash": "kaI9peqGArfVTsyuSyWlWonksD/RuC643NQ1v5NTzm8=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "obj/api/System.Linq.Dynamic.Core.Util.Cache.yml", + "output": { + ".html": { + "relative_path": "api/System.Linq.Dynamic.Core.Util.Cache.html", + "hash": "xVvp8gYwYJBTa7w1uVq9v37LOD2q+q7LsqFH3WFRRwA=" + } + }, + "is_incremental": false, + "version": "" + }, { "type": "ManagedReference", "source_relative_path": "obj/api/System.Linq.Dynamic.Core.yml", "output": { ".html": { "relative_path": "api/System.Linq.Dynamic.Core.html", - "hash": "BZbu11MilL0q2XoH7x4QiBg0S34mgG3eRGD8YTki218=" + "hash": "BxNIZq2buDiVgEk63QLEq2Nlbfk8To6yikJySUwlKYU=" } }, "is_incremental": false, @@ -417,7 +465,7 @@ "output": { ".html": { "relative_path": "api/System.Tuple-2.html", - "hash": "/bhh59QFEoVJTihGiRaDZx3kjJpY+ON8nVOAlDeESjM=" + "hash": "4DDk3mse/t7CzEiujxaMdVPtqO0Ckt4dPJ0TrWVUTOo=" } }, "is_incremental": false, @@ -441,7 +489,7 @@ "output": { ".html": { "relative_path": "api/toc.html", - "hash": "PUzKU9mY6/vUK2w0WoNh7stbaXsjL5stoxCxUUbR56E=" + "hash": "/DJfJOujhWlEKvxObyQtsx2wXs1i0v1Dp+gPD9dkPgM=" } }, "is_incremental": false, @@ -463,23 +511,25 @@ "incremental_info": [ { "status": { - "can_incremental": true, + "can_incremental": false, + "details": "Cannot build incrementally because last build info is missing.", "incrementalPhase": "build", "total_file_count": 0, - "skipped_file_count": 0 + "skipped_file_count": 0, + "full_build_reason_code": "NoAvailableBuildCache" }, "processors": { "ConceptualDocumentProcessor": { - "can_incremental": true, + "can_incremental": false, "incrementalPhase": "build", "total_file_count": 1, - "skipped_file_count": 1 + "skipped_file_count": 0 }, "ManagedReferenceDocumentProcessor": { - "can_incremental": true, + "can_incremental": false, "incrementalPhase": "build", - "total_file_count": 34, - "skipped_file_count": 34 + "total_file_count": 38, + "skipped_file_count": 0 }, "TocDocumentProcessor": { "can_incremental": false, diff --git a/docs/xrefmap.yml b/docs/xrefmap.yml index ddbbf04a..c0dcd1ae 100644 --- a/docs/xrefmap.yml +++ b/docs/xrefmap.yml @@ -13,6 +13,30 @@ references: commentId: N:System.Linq.Dynamic.Core fullName: System.Linq.Dynamic.Core nameWithType: System.Linq.Dynamic.Core +- uid: System.Linq.Dynamic.Core.Config + name: System.Linq.Dynamic.Core.Config + href: api/System.Linq.Dynamic.Core.Config.html + commentId: N:System.Linq.Dynamic.Core.Config + fullName: System.Linq.Dynamic.Core.Config + nameWithType: System.Linq.Dynamic.Core.Config +- uid: System.Linq.Dynamic.Core.Config.StringLiteralParsingType + name: StringLiteralParsingType + href: api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html + commentId: T:System.Linq.Dynamic.Core.Config.StringLiteralParsingType + fullName: System.Linq.Dynamic.Core.Config.StringLiteralParsingType + nameWithType: StringLiteralParsingType +- uid: System.Linq.Dynamic.Core.Config.StringLiteralParsingType.Default + name: Default + href: api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html#System_Linq_Dynamic_Core_Config_StringLiteralParsingType_Default + commentId: F:System.Linq.Dynamic.Core.Config.StringLiteralParsingType.Default + fullName: System.Linq.Dynamic.Core.Config.StringLiteralParsingType.Default + nameWithType: StringLiteralParsingType.Default +- uid: System.Linq.Dynamic.Core.Config.StringLiteralParsingType.EscapeDoubleQuoteByTwoDoubleQuotes + name: EscapeDoubleQuoteByTwoDoubleQuotes + href: api/System.Linq.Dynamic.Core.Config.StringLiteralParsingType.html#System_Linq_Dynamic_Core_Config_StringLiteralParsingType_EscapeDoubleQuoteByTwoDoubleQuotes + commentId: F:System.Linq.Dynamic.Core.Config.StringLiteralParsingType.EscapeDoubleQuoteByTwoDoubleQuotes + fullName: System.Linq.Dynamic.Core.Config.StringLiteralParsingType.EscapeDoubleQuoteByTwoDoubleQuotes + nameWithType: StringLiteralParsingType.EscapeDoubleQuoteByTwoDoubleQuotes - uid: System.Linq.Dynamic.Core.CustomTypeProviders name: System.Linq.Dynamic.Core.CustomTypeProviders href: api/System.Linq.Dynamic.Core.CustomTypeProviders.html @@ -101,6 +125,12 @@ references: commentId: M:System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.#ctor(System.Boolean) fullName: System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.DefaultDynamicLinqCustomTypeProvider(System.Boolean) nameWithType: DefaultDynamicLinqCustomTypeProvider.DefaultDynamicLinqCustomTypeProvider(Boolean) +- uid: System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.#ctor(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean) + name: DefaultDynamicLinqCustomTypeProvider(ParsingConfig, Boolean) + href: api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html#System_Linq_Dynamic_Core_CustomTypeProviders_DefaultDynamicLinqCustomTypeProvider__ctor_System_Linq_Dynamic_Core_ParsingConfig_System_Boolean_ + commentId: M:System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.#ctor(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean) + fullName: System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.DefaultDynamicLinqCustomTypeProvider(System.Linq.Dynamic.Core.ParsingConfig, System.Boolean) + nameWithType: DefaultDynamicLinqCustomTypeProvider.DefaultDynamicLinqCustomTypeProvider(ParsingConfig, Boolean) - uid: System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.#ctor* name: DefaultDynamicLinqCustomTypeProvider href: api/System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider.html#System_Linq_Dynamic_Core_CustomTypeProviders_DefaultDynamicLinqCustomTypeProvider__ctor_ @@ -2017,12 +2047,12 @@ references: commentId: T:System.Linq.Dynamic.Core.Exceptions.ParseException fullName: System.Linq.Dynamic.Core.Exceptions.ParseException nameWithType: ParseException -- uid: System.Linq.Dynamic.Core.Exceptions.ParseException.#ctor(System.String,System.Int32) - name: ParseException(String, Int32) - href: api/System.Linq.Dynamic.Core.Exceptions.ParseException.html#System_Linq_Dynamic_Core_Exceptions_ParseException__ctor_System_String_System_Int32_ - commentId: M:System.Linq.Dynamic.Core.Exceptions.ParseException.#ctor(System.String,System.Int32) - fullName: System.Linq.Dynamic.Core.Exceptions.ParseException.ParseException(System.String, System.Int32) - nameWithType: ParseException.ParseException(String, Int32) +- uid: System.Linq.Dynamic.Core.Exceptions.ParseException.#ctor(System.String,System.Int32,System.Exception) + name: ParseException(String, Int32, Exception) + href: api/System.Linq.Dynamic.Core.Exceptions.ParseException.html#System_Linq_Dynamic_Core_Exceptions_ParseException__ctor_System_String_System_Int32_System_Exception_ + commentId: M:System.Linq.Dynamic.Core.Exceptions.ParseException.#ctor(System.String,System.Int32,System.Exception) + fullName: System.Linq.Dynamic.Core.Exceptions.ParseException.ParseException(System.String, System.Int32, System.Exception) + nameWithType: ParseException.ParseException(String, Int32, Exception) - uid: System.Linq.Dynamic.Core.Exceptions.ParseException.#ctor* name: ParseException href: api/System.Linq.Dynamic.Core.Exceptions.ParseException.html#System_Linq_Dynamic_Core_Exceptions_ParseException__ctor_ @@ -2511,6 +2541,32 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.ParsingConfig.AreContextKeywordsEnabled nameWithType: ParsingConfig.AreContextKeywordsEnabled +- uid: System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig + name: ConstantExpressionCacheConfig + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_ConstantExpressionCacheConfig + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig + fullName: System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig + nameWithType: ParsingConfig.ConstantExpressionCacheConfig +- uid: System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig* + name: ConstantExpressionCacheConfig + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_ConstantExpressionCacheConfig_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.ConstantExpressionCacheConfig + nameWithType: ParsingConfig.ConstantExpressionCacheConfig +- uid: System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison + name: ConvertObjectToSupportComparison + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_ConvertObjectToSupportComparison + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison + fullName: System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison + nameWithType: ParsingConfig.ConvertObjectToSupportComparison +- uid: System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison* + name: ConvertObjectToSupportComparison + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_ConvertObjectToSupportComparison_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.ConvertObjectToSupportComparison + nameWithType: ParsingConfig.ConvertObjectToSupportComparison - uid: System.Linq.Dynamic.Core.ParsingConfig.CustomTypeProvider name: CustomTypeProvider href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_CustomTypeProvider @@ -2589,6 +2645,19 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.ParsingConfig.DisableMemberAccessToIndexAccessorFallback nameWithType: ParsingConfig.DisableMemberAccessToIndexAccessorFallback +- uid: System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword + name: DisallowNewKeyword + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_DisallowNewKeyword + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword + fullName: System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword + nameWithType: ParsingConfig.DisallowNewKeyword +- uid: System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword* + name: DisallowNewKeyword + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_DisallowNewKeyword_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.DisallowNewKeyword + nameWithType: ParsingConfig.DisallowNewKeyword - uid: System.Linq.Dynamic.Core.ParsingConfig.EvaluateGroupByAtDatabase name: EvaluateGroupByAtDatabase href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_EvaluateGroupByAtDatabase @@ -2628,6 +2697,19 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.ParsingConfig.IsCaseSensitive nameWithType: ParsingConfig.IsCaseSensitive +- uid: System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + name: LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + fullName: System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + nameWithType: ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory +- uid: System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory* + name: LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_LoadAdditionalAssembliesFromCurrentDomainBaseDirectory_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory + nameWithType: ParsingConfig.LoadAdditionalAssembliesFromCurrentDomainBaseDirectory - uid: System.Linq.Dynamic.Core.ParsingConfig.NullPropagatingUseDefaultValueForNonNullableValueTypes name: NullPropagatingUseDefaultValueForNonNullableValueTypes href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_NullPropagatingUseDefaultValueForNonNullableValueTypes @@ -2719,6 +2801,19 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.ParsingConfig.ResolveTypesBySimpleName nameWithType: ParsingConfig.ResolveTypesBySimpleName +- uid: System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing + name: StringLiteralParsing + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_StringLiteralParsing + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing + fullName: System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing + nameWithType: ParsingConfig.StringLiteralParsing +- uid: System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing* + name: StringLiteralParsing + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_StringLiteralParsing_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.StringLiteralParsing + nameWithType: ParsingConfig.StringLiteralParsing - uid: System.Linq.Dynamic.Core.ParsingConfig.SupportCastingToFullyQualifiedTypeAsString name: SupportCastingToFullyQualifiedTypeAsString href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_SupportCastingToFullyQualifiedTypeAsString @@ -2732,6 +2827,19 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.ParsingConfig.SupportCastingToFullyQualifiedTypeAsString nameWithType: ParsingConfig.SupportCastingToFullyQualifiedTypeAsString +- uid: System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames + name: SupportDotInPropertyNames + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_SupportDotInPropertyNames + commentId: P:System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames + fullName: System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames + nameWithType: ParsingConfig.SupportDotInPropertyNames +- uid: System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames* + name: SupportDotInPropertyNames + href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_SupportDotInPropertyNames_ + commentId: Overload:System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames + isSpec: "True" + fullName: System.Linq.Dynamic.Core.ParsingConfig.SupportDotInPropertyNames + nameWithType: ParsingConfig.SupportDotInPropertyNames - uid: System.Linq.Dynamic.Core.ParsingConfig.SupportEnumerationsFromSystemNamespace name: SupportEnumerationsFromSystemNamespace href: api/System.Linq.Dynamic.Core.ParsingConfig.html#System_Linq_Dynamic_Core_ParsingConfig_SupportEnumerationsFromSystemNamespace @@ -2796,6 +2904,19 @@ references: isSpec: "True" fullName: System.Linq.Dynamic.Core.Tokenizer.TextParser.TextParser nameWithType: TextParser.TextParser +- uid: System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone + name: Clone() + href: api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html#System_Linq_Dynamic_Core_Tokenizer_TextParser_Clone + commentId: M:System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone + fullName: System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone() + nameWithType: TextParser.Clone() +- uid: System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone* + name: Clone + href: api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html#System_Linq_Dynamic_Core_Tokenizer_TextParser_Clone_ + commentId: Overload:System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone + isSpec: "True" + fullName: System.Linq.Dynamic.Core.Tokenizer.TextParser.Clone + nameWithType: TextParser.Clone - uid: System.Linq.Dynamic.Core.Tokenizer.TextParser.CurrentToken name: CurrentToken href: api/System.Linq.Dynamic.Core.Tokenizer.TextParser.html#System_Linq_Dynamic_Core_Tokenizer_TextParser_CurrentToken @@ -3139,6 +3260,70 @@ references: commentId: F:System.Linq.Dynamic.Core.Tokenizer.TokenId.Unknown fullName: System.Linq.Dynamic.Core.Tokenizer.TokenId.Unknown nameWithType: TokenId.Unknown +- uid: System.Linq.Dynamic.Core.Util.Cache + name: System.Linq.Dynamic.Core.Util.Cache + href: api/System.Linq.Dynamic.Core.Util.Cache.html + commentId: N:System.Linq.Dynamic.Core.Util.Cache + fullName: System.Linq.Dynamic.Core.Util.Cache + nameWithType: System.Linq.Dynamic.Core.Util.Cache +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig + name: CacheConfig + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html + commentId: T:System.Linq.Dynamic.Core.Util.Cache.CacheConfig + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig + nameWithType: CacheConfig +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency + name: CleanupFrequency + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_CleanupFrequency + commentId: P:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency + nameWithType: CacheConfig.CleanupFrequency +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency* + name: CleanupFrequency + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_CleanupFrequency_ + commentId: Overload:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency + isSpec: "True" + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.CleanupFrequency + nameWithType: CacheConfig.CleanupFrequency +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger + name: MinItemsTrigger + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_MinItemsTrigger + commentId: P:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger + nameWithType: CacheConfig.MinItemsTrigger +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger* + name: MinItemsTrigger + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_MinItemsTrigger_ + commentId: Overload:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger + isSpec: "True" + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.MinItemsTrigger + nameWithType: CacheConfig.MinItemsTrigger +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems + name: ReturnExpiredItems + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_ReturnExpiredItems + commentId: P:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems + nameWithType: CacheConfig.ReturnExpiredItems +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems* + name: ReturnExpiredItems + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_ReturnExpiredItems_ + commentId: Overload:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems + isSpec: "True" + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.ReturnExpiredItems + nameWithType: CacheConfig.ReturnExpiredItems +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive + name: TimeToLive + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_TimeToLive + commentId: P:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive + nameWithType: CacheConfig.TimeToLive +- uid: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive* + name: TimeToLive + href: api/System.Linq.Dynamic.Core.Util.Cache.CacheConfig.html#System_Linq_Dynamic_Core_Util_Cache_CacheConfig_TimeToLive_ + commentId: Overload:System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive + isSpec: "True" + fullName: System.Linq.Dynamic.Core.Util.Cache.CacheConfig.TimeToLive + nameWithType: CacheConfig.TimeToLive - uid: System.Tuple`2 name: Tuple href: api/System.Tuple-2.html diff --git a/report/coverage.opencover.xml b/report/coverage.opencover.xml deleted file mode 100644 index 72041a9e..00000000 --- a/report/coverage.opencover.xml +++ /dev/null @@ -1,14798 +0,0 @@ - - - - - - Microsoft.EntityFrameworkCore.DynamicLinq.dll - 2022-06-26T09:09:17 - Microsoft.EntityFrameworkCore.DynamicLinq - - - - - - - - - - - - - Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AllAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AllAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AnyAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AnyAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AnyAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Double> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AverageAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Double> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AverageAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Double> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::AverageAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int32> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::CountAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int32> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::CountAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int32> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::CountAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::FirstOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LastOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int64> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LongCountAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int64> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LongCountAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int64> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::LongCountAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SingleOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SingleOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SingleOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SumAsync(System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SumAsync(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::SumAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteDynamicAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<TResult> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<TResult> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression,System.Threading.CancellationToken) - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteDynamicAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<TResult> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Reflection.MethodInfo Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::GetMethod(System.String,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>) - - - - - - - - - - - - - - - - - - - System.Reflection.MethodInfo Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::GetMethod(System.String,System.Type,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>) - - - - - - - - - - - - - - - - System.Linq.IQueryable Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::CastSource(System.Linq.IQueryable,System.Reflection.MethodInfo) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<TResult> Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::ExecuteAsync(Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider,System.Linq.Expressions.Expression,System.Threading.CancellationToken) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::OptimizeExpression(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions - - - - - System.String Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::ParseFormattableString(System.FormattableString,System.Object[]&) - - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AllInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AllInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AnyInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Boolean> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AnyInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Double> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AverageInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Double> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::AverageInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int32> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::CountInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int32> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::CountInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::FirstInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::FirstInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::FirstOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::FirstOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LastInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LastInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LastOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LastOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int64> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LongCountInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Int64> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::LongCountInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::SingleOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::SingleOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::SumInterpolatedAsync(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object> Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions::SumInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString) - - - - - - - - - - - - - - - System.Reflection.CustomIntrospectionExtensions - - - - - System.Type[] System.Reflection.CustomIntrospectionExtensions::GetGenericTypeArguments(System.Reflection.TypeInfo) - - - - - - - - - - - - - - System.Reflection.CustomTypeBuilderExtensions - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::CreateType(System.Reflection.Emit.TypeBuilder) - - - - - - - - - - - - - System.Reflection.Emit.PropertyBuilder System.Reflection.CustomTypeBuilderExtensions::DefineProperty(System.Reflection.Emit.TypeBuilder,System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]) - - - - - - - - - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::AsType(System.Reflection.Emit.TypeBuilder) - - - - - - - - - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::AsType(System.Reflection.Emit.GenericTypeParameterBuilder) - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpressionExtensions - - - - - System.Type System.Linq.Expressions.LambdaExpressionExtensions::GetReturnType(System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Validation.Check - - - - - T System.Linq.Dynamic.Core.Validation.Check::Condition(T,System.Predicate`1<T>,System.String) - - - - - - - - - - - - - - - - - - - - - T System.Linq.Dynamic.Core.Validation.Check::NotNull(T,System.String) - - - - - - - - - - - - - - - - - - - - T System.Linq.Dynamic.Core.Validation.Check::NotNull(T,System.String,System.String) - - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.Check::NotEmpty(System.String,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IList`1<T> System.Linq.Dynamic.Core.Validation.Check::HasNoNulls(System.Collections.Generic.IList`1<T>,System.String) - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Validation.CoreStrings - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::ArgumentPropertyNull(System.String,System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::ArgumentIsEmpty(System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::InvalidEntityType(System.Type,System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::CollectionArgumentIsEmpty(System.String) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.dll - 2022-06-26T09:09:17 - System.Linq.Dynamic.Core - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Reflection.CustomIntrospectionExtensions - - - - - System.Type[] System.Reflection.CustomIntrospectionExtensions::GetGenericTypeArguments(System.Reflection.TypeInfo) - - - - - - - - - - - - - - System.Reflection.CustomTypeBuilderExtensions - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::CreateType(System.Reflection.Emit.TypeBuilder) - - - - - - - - - - - - - System.Reflection.Emit.PropertyBuilder System.Reflection.CustomTypeBuilderExtensions::DefineProperty(System.Reflection.Emit.TypeBuilder,System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[]) - - - - - - - - - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::AsType(System.Reflection.Emit.TypeBuilder) - - - - - - - - - - - - - System.Type System.Reflection.CustomTypeBuilderExtensions::AsType(System.Reflection.Emit.GenericTypeParameterBuilder) - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpressionExtensions - - - - - System.Type System.Linq.Expressions.LambdaExpressionExtensions::GetReturnType(System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.AssemblyBuilderFactory - - - - - System.Reflection.Emit.AssemblyBuilder System.Linq.Dynamic.Core.AssemblyBuilderFactory::DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DefaultAssemblyHelper - - - - - System.Reflection.Assembly[] System.Linq.Dynamic.Core.DefaultAssemblyHelper::GetAssemblies() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DefaultQueryableAnalyzer - - - - - System.Boolean System.Linq.Dynamic.Core.DefaultQueryableAnalyzer::SupportsLinqToObjects(System.Linq.IQueryable,System.Linq.IQueryProvider) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicClass - - - - - System.Collections.Generic.Dictionary`2<System.String,System.Object> System.Linq.Dynamic.Core.DynamicClass::get_Properties() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - T System.Linq.Dynamic.Core.DynamicClass::GetDynamicPropertyValue(System.String) - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicClass::GetDynamicPropertyValue(System.String) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicClass::SetDynamicPropertyValue(System.String,T) - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicClass::SetDynamicPropertyValue(System.String,System.Object) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicClass::get_Item(System.String) - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicClass::set_Item(System.String,System.Object) - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.String> System.Linq.Dynamic.Core.DynamicClass::GetDynamicMemberNames() - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicClass::TryGetMember(System.Dynamic.GetMemberBinder,System.Object&) - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicClass::TrySetMember(System.Dynamic.SetMemberBinder,System.Object) - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicClassFactory - - - - - System.Type System.Linq.Dynamic.Core.DynamicClassFactory::CreateGenericComparerType(System.Type,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.DynamicClassFactory::CreateType(System.Collections.Generic.IList`1<System.Linq.Dynamic.Core.DynamicProperty>,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.DynamicClassFactory::GenerateKey(System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.DynamicProperty>,System.Boolean) - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.DynamicClassFactory::Escape(System.String) - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicClassFactory::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions - - - - - System.Threading.Tasks.Task`1<System.Object[]> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicArrayAsync(System.Collections.IEnumerable,System.Type) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Object[]> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicArrayAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<T[]> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicArrayAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<System.Object>> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicListAsync(System.Collections.IEnumerable,System.Type) - - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<System.Object>> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicListAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<T>> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::ToDynamicListAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Threading.Tasks.Task`1<T[]> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::CastToArrayAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<T>> System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions::CastToListAsync(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicEnumerableExtensions - - - - - System.Object[] System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicArray(System.Collections.IEnumerable) - - - - - - - - - - - - - - T[] System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicArray(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Object[] System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicArray(System.Collections.IEnumerable,System.Type) - - - - - - - - - - - - - - - - System.Collections.Generic.List`1<System.Object> System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicList(System.Collections.IEnumerable) - - - - - - - - - - - - - - System.Collections.Generic.List`1<System.Object> System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicList(System.Collections.IEnumerable,System.Type) - - - - - - - - - - - - - - - System.Collections.Generic.List`1<T> System.Linq.Dynamic.Core.DynamicEnumerableExtensions::ToDynamicList(System.Collections.IEnumerable) - - - - - - - - - - - - - - T[] System.Linq.Dynamic.Core.DynamicEnumerableExtensions::CastToArray(System.Collections.IEnumerable) - - - - - - - - - - - - - System.Collections.Generic.List`1<T> System.Linq.Dynamic.Core.DynamicEnumerableExtensions::CastToList(System.Collections.IEnumerable) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicEnumerableExtensions::.cctor() - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicExpressionParser - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`1<TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`1<TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`1<TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`1<TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Boolean,System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`2<T,TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression`1<System.Func`2<T,TResult>> System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Expressions.LambdaExpression System.Linq.Dynamic.Core.DynamicExpressionParser::ParseLambda(System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicGetMemberBinder - - - - - System.Dynamic.DynamicMetaObject System.Linq.Dynamic.Core.DynamicGetMemberBinder::FallbackGetMember(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicGetMemberBinder::GetDynamicMember(System.Object,System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicGetMemberBinder::.ctor(System.String,System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicGetMemberBinder::.cctor() - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicProperty - - - - - System.String System.Linq.Dynamic.Core.DynamicProperty::get_Name() - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.DynamicProperty::get_Type() - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicProperty::.ctor(System.String,System.Type) - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicQueryableExtensions - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.DynamicQueryableExtensions::OptimizeExpression(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Aggregate(System.Linq.IQueryable,System.String,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::All(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::All(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::Any(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::Any(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::Any(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::Any(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableExtensions::Average(System.Linq.IQueryable) - - - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableExtensions::Average(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableExtensions::Average(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableExtensions::Average(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Cast(System.Linq.IQueryable,System.Type) - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Cast(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String) - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Cast(System.Linq.IQueryable,System.String) - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableExtensions::Count(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableExtensions::Count(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableExtensions::Count(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableExtensions::Count(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::DefaultIfEmpty(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::DefaultIfEmpty(System.Linq.IQueryable,System.Object) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Distinct(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::First(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::First(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::First(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::First(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::FirstOrDefault(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::FirstOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::FirstOrDefault(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::FirstOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::InternalGroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.String) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.String,System.Collections.IEqualityComparer) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::InternalGroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupBy(System.Linq.IQueryable,System.String,System.Collections.IEqualityComparer,System.Object[]) - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.GroupResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.Linq.Dynamic.Core.ParsingConfig,System.String[]) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.GroupResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.String[]) - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.GroupResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.Func`2<TElement,System.Object>[]) - - - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.GroupResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupByManyInternal(System.Collections.Generic.IEnumerable`1<TElement>,System.Func`2<TElement,System.Object>[],System.Int32) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupJoin(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::GroupJoin(System.Linq.IQueryable,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Join(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Join(System.Linq.IQueryable,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable`1<TElement> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Join(System.Linq.IQueryable`1<TElement>,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.Generic.IEnumerable`1<TElement>,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable`1<TElement> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Join(System.Linq.IQueryable`1<TElement>,System.Collections.Generic.IEnumerable`1<TElement>,System.String,System.String,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Last(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Last(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Last(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Last(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::LastOrDefault(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::LastOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::LastOrDefault(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::LastOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableExtensions::LongCount(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableExtensions::LongCount(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableExtensions::LongCount(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableExtensions::LongCount(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Max(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Max(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Max(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Max(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Min(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Min(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Min(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Min(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OfType(System.Linq.IQueryable,System.Type) - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OfType(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String) - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OfType(System.Linq.IQueryable,System.String) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable`1<TSource>,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable`1<TSource>,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::InternalOrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::OrderBy(System.Linq.IQueryable,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Page(System.Linq.IQueryable,System.Int32,System.Int32) - - - - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Page(System.Linq.IQueryable`1<TSource>,System.Int32,System.Int32) - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.PagedResult System.Linq.Dynamic.Core.DynamicQueryableExtensions::PageResult(System.Linq.IQueryable,System.Int32,System.Int32,System.Nullable`1<System.Int32>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.PagedResult`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::PageResult(System.Linq.IQueryable`1<TSource>,System.Int32,System.Int32,System.Nullable`1<System.Int32>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Reverse(System.Linq.IQueryable) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Select(System.Linq.IQueryable,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectManyInternal(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Object[],System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.String,System.String,System.Object[],System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.String,System.String,System.Object[],System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SelectMany(System.Linq.IQueryable,System.String,System.String,System.String,System.String,System.Object[],System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Single(System.Linq.IQueryable) - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Single(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Single(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Single(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::SingleOrDefault(System.Linq.IQueryable) - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::SingleOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::SingleOrDefault(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::SingleOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Skip(System.Linq.IQueryable,System.Int32) - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SkipWhile(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::SkipWhile(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Sum(System.Linq.IQueryable) - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Sum(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Sum(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Sum(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Take(System.Linq.IQueryable,System.Int32) - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::TakeWhile(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::TakeWhile(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::InternalThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::ThenBy(System.Linq.IOrderedQueryable,System.String,System.Collections.IComparer,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable`1<TSource>,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[]) - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableExtensions::Where(System.Linq.IQueryable`1<TSource>,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions::SupportsLinqToObjects(System.Linq.Dynamic.Core.ParsingConfig,System.Linq.IQueryable) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicQueryableExtensions::CheckOuterAndInnerTypes(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.String,System.Linq.Expressions.LambdaExpression&,System.Linq.Expressions.LambdaExpression&,System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable) - - - - - - - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableExtensions::CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable) - - - - - - - - - - - - - - - - - - - - - TResult System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable) - - - - - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - TResult System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - TResult System.Linq.Dynamic.Core.DynamicQueryableExtensions::Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicQueryableExtensions::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicQueryableExtensions/<AsEnumerable>d__16 - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableExtensions/<AsEnumerable>d__16::MoveNext() - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::WhereInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::WhereInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::WhereInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::WhereInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString) - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AllInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AllInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AnyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AnyInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AverageInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Double System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::AverageInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SingleInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SingleInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SingleOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SingleOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SkipWhileInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SkipWhileInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::TakeWhileInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::TakeWhileInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SumInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SumInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::CountInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::CountInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::FirstInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::FirstInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::FirstOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::FirstOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LastInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LastInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LastOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LastOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LongCountInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Int64 System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::LongCountInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::MaxInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::MaxInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::MinInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::MinInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.FormattableString) - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString,System.FormattableString) - - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.Type,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IQueryable`1<TResult> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.FormattableString,System.Collections.IComparer) - - - - - - - - - - - - - - System.Linq.IOrderedQueryable`1<TSource> System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.FormattableString) - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::ParseFormattableString(System.FormattableString,System.Object[]&) - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions::.cctor() - - - - - - - - - - - - System.Linq.Dynamic.Core.ExtensibilityPoint - - - - - System.Void System.Linq.Dynamic.Core.ExtensibilityPoint::.cctor() - - - - - - - - - - - - System.Linq.Dynamic.Core.GroupResult - - - - - System.Object System.Linq.Dynamic.Core.GroupResult::get_Key() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.GroupResult::get_Count() - - - - - - - - - - - System.Collections.IEnumerable System.Linq.Dynamic.Core.GroupResult::get_Items() - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Linq.Dynamic.Core.GroupResult> System.Linq.Dynamic.Core.GroupResult::get_Subgroups() - - - - - - - - - - - System.String System.Linq.Dynamic.Core.GroupResult::ToString() - - - - - - - - - - - - - - System.Linq.Dynamic.Core.PagedResult - - - - - System.Linq.IQueryable System.Linq.Dynamic.Core.PagedResult::get_Queryable() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.PagedResult::get_CurrentPage() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.PagedResult::get_PageCount() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.PagedResult::get_PageSize() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.PagedResult::get_RowCount() - - - - - - - - - - - - System.Linq.Dynamic.Core.PagedResult`1 - - - - - System.Linq.IQueryable`1<TSource> System.Linq.Dynamic.Core.PagedResult`1::get_Queryable() - - - - - - - - - - - - System.Linq.Dynamic.Core.ParameterExpressionHelper - - - - - System.Linq.Expressions.ParameterExpression System.Linq.Dynamic.Core.ParameterExpressionHelper::CreateParameterExpression(System.Type,System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParameterExpressionHelper::IsNullOrWhiteSpace(System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.ParameterExpressionHelper::GenerateRandomWord() - - - - - - - - - - - - - - System.Linq.Dynamic.Core.ParsingConfig - - - - - System.Linq.Dynamic.Core.ParsingConfig System.Linq.Dynamic.Core.ParsingConfig::get_Default() - - - - - - - - - - - System.Linq.Dynamic.Core.ParsingConfig System.Linq.Dynamic.Core.ParsingConfig::get_DefaultEFCore21() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_IsCaseSensitive() - - - - - - - - - - - System.Linq.Dynamic.Core.ParsingConfig System.Linq.Dynamic.Core.ParsingConfig::get_DefaultCosmosDb() - - - - - - - - - - - System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinkCustomTypeProvider System.Linq.Dynamic.Core.ParsingConfig::get_CustomTypeProvider() - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.ParsingConfig::set_CustomTypeProvider(System.Linq.Dynamic.Core.CustomTypeProviders.IDynamicLinkCustomTypeProvider) - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.IExpressionPromoter System.Linq.Dynamic.Core.ParsingConfig::get_ExpressionPromoter() - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.ParsingConfig::set_ExpressionPromoter(System.Linq.Dynamic.Core.Parser.IExpressionPromoter) - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.IQueryableAnalyzer System.Linq.Dynamic.Core.ParsingConfig::get_QueryableAnalyzer() - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.ParsingConfig::set_QueryableAnalyzer(System.Linq.Dynamic.Core.IQueryableAnalyzer) - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_AreContextKeywordsEnabled() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_EvaluateGroupByAtDatabase() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_UseParameterizedNamesInDynamicQuery() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_AllowNewToEvaluateAnyType() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_RenameParameterExpression() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_RenameEmptyParameterExpressionNames() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_DisableMemberAccessToIndexAccessorFallback() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_ResolveTypesBySimpleName() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_SupportEnumerationsFromSystemNamespace() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_DateTimeIsParsedAsUTC() - - - - - - - - - - - System.Globalization.CultureInfo System.Linq.Dynamic.Core.ParsingConfig::get_NumberParseCulture() - - - - - - - - - - - System.Collections.Generic.IDictionary`2<System.Type,System.ComponentModel.TypeConverter> System.Linq.Dynamic.Core.ParsingConfig::get_TypeConverters() - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.ParsingConfig::get_NullPropagatingUseDefaultValueForNonNullableValueTypes() - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.ParsingConfig::.cctor() - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Validation.Check - - - - - T System.Linq.Dynamic.Core.Validation.Check::Condition(T,System.Predicate`1<T>,System.String) - - - - - - - - - - - - - - - - - - - - - T System.Linq.Dynamic.Core.Validation.Check::NotNull(T,System.String) - - - - - - - - - - - - - - - - - - - - T System.Linq.Dynamic.Core.Validation.Check::NotNull(T,System.String,System.String) - - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.Check::NotEmpty(System.String,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IList`1<T> System.Linq.Dynamic.Core.Validation.Check::HasNoNulls(System.Collections.Generic.IList`1<T>,System.String) - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Validation.CoreStrings - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::ArgumentPropertyNull(System.String,System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::ArgumentIsEmpty(System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::InvalidEntityType(System.Type,System.String) - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Validation.CoreStrings::CollectionArgumentIsEmpty(System.String) - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer::Rename(System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression&) - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer::VisitParameter(System.Linq.Expressions.ParameterExpression) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer::.ctor(System.String) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer::.ctor(System.String,System.String) - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Util.QueryableMethodFinder - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetGenericMethod(System.String) - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetMethod(System.String,System.Type,System.Type,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>) - - - - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetMethod(System.String,System.Type,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>) - - - - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetMethodWithExpressionParameter(System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetMethodWithIntParameter(System.String) - - - - - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Util.QueryableMethodFinder::GetMethod(System.String,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>) - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Util.RuntimeInformationUtils - - - - - System.Void System.Linq.Dynamic.Core.Util.RuntimeInformationUtils::.cctor() - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter - - - - - System.Object System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter::ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object) - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory - - - - - System.ComponentModel.TypeConverter System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory::GetConverter(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Tokenizer.TextParser - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::SetTextPos(System.Int32) - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::NextChar() - - - - - - - - - - - - - - - - - - - - - - System.Char System.Linq.Dynamic.Core.Tokenizer.TextParser::PeekNextChar() - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::NextToken() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::ValidateToken(System.Linq.Dynamic.Core.Tokenizer.TokenId,System.String) - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::ValidateExpression() - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::ValidateDigit() - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::ValidateHexChar() - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::ValidateBinaryChar() - - - - - - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Tokenizer.TextParser::ParseError(System.String,System.Object[]) - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Tokenizer.TextParser::ParseError(System.Int32,System.String,System.Object[]) - - - - - - - - - - - - - System.Linq.Dynamic.Core.Tokenizer.TokenId System.Linq.Dynamic.Core.Tokenizer.TextParser::GetAliasedTokenId(System.Linq.Dynamic.Core.Tokenizer.TokenId,System.String) - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Tokenizer.TextParser::IsHexChar(System.Char) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Tokenizer.TextParser::IsZeroOrOne(System.Char) - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::.ctor(System.Linq.Dynamic.Core.ParsingConfig,System.String) - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Tokenizer.Token - - - - - System.Linq.Dynamic.Core.Tokenizer.TokenId System.Linq.Dynamic.Core.Tokenizer.Token::get_Id() - - - - - - - - - - - System.Linq.Dynamic.Core.Tokenizer.TokenId System.Linq.Dynamic.Core.Tokenizer.Token::get_OriginalId() - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Tokenizer.Token::get_Text() - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.Tokenizer.Token::get_Pos() - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper::TryGetText(System.Linq.Expressions.Expression,System.String&) - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper::CreateLiteral(System.Object,System.String) - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper::.cctor() - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper - - - - - System.Void System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper::Wrap(System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.MemberExpression System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper::WrappedConstant(TValue) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.Constants - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.Constants::IsNull(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib - - - - - System.Collections.Generic.IEnumerable`1<System.Type> System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib::AddEnumsFromAssembly(System.String) - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib::Add(System.Linq.IGrouping`2<System.String,System.Type>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.ExpressionHelper - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::WrapConstantExpression(System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateAdd(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateStringConcat(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateSubtract(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateNotEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateGreaterThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateGreaterThanEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateLessThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateLessThanEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::OptimizeForEqualityIfPossible(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::OptimizeStringForEqualityIfPossible(System.String,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionHelper::MemberExpressionIsDynamic(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::ConvertToExpandoObjectAndCreateDynamicExpression(System.Linq.Expressions.Expression,System.Type,System.String) - - - - - - - - - - - - - System.Reflection.MethodInfo System.Linq.Dynamic.Core.Parser.ExpressionHelper::GetStaticMethod(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateStaticMethodCall(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::WrapConstantExpressions(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionHelper::TryGenerateAndAlsoNotNullExpression(System.Linq.Expressions.Expression,System.Boolean,System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionHelper::ExpressionQualifiesForNullPropagation(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GenerateDefaultExpression(System.Type) - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GetMemberExpression(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.List`1<System.Linq.Expressions.Expression> System.Linq.Dynamic.Core.Parser.ExpressionHelper::CollectExpressions(System.Boolean,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GetMethodCallExpression(System.Linq.Expressions.MethodCallExpression) - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionHelper::GetUnaryExpression(System.Linq.Expressions.UnaryExpression) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.ExpressionParser - - - - - System.String System.Linq.Dynamic.Core.Parser.ExpressionParser::get_ItName() - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Parser.ExpressionParser::get_LastLambdaItName() - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::ProcessParameters(System.Linq.Expressions.ParameterExpression[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::ProcessValues(System.Object[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::AddSymbol(System.String,System.Object) - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::Parse(System.Type,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IList`1<System.Linq.Dynamic.Core.DynamicOrdering> System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseOrdering(System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseConditionalOperator() - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseNullCoalescingOperator() - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseLambdaOperator() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseOrOperator() - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseAndOperator() - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseIn() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseLogicalAndOrOperator() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseComparisonOperator() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionParser::HasImplicitConversion(System.Type,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.ConstantExpression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseEnumToConstantExpression(System.Int32,System.Type,System.Linq.Expressions.ConstantExpression) - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseConstantExpressionToEnum(System.Int32,System.Type,System.Linq.Expressions.ConstantExpression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseShiftOperator() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseAdditive() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseMultiplicative() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseUnary() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParsePrimary() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParsePrimaryStart() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseStringLiteral() - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseIntegerLiteral() - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseRealLiteral() - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseParenExpression() - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseIdentifier() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseIt() - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseParent() - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseRoot() - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionIsNull() - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionIif() - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionNullPropagation() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionIs() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionAs() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseFunctionCast() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::GenerateConditional(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Int32) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseNew() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::CreateArrayInitializerExpression(System.Collections.Generic.List`1<System.Linq.Expressions.Expression>,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::CreateNewExpression(System.Collections.Generic.List`1<System.Linq.Dynamic.Core.DynamicProperty>,System.Collections.Generic.List`1<System.Linq.Expressions.Expression>,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseLambdaInvocation(System.Linq.Expressions.LambdaExpression) - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseTypeAccess(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionParser::TryGenerateConversion(System.Linq.Expressions.Expression,System.Type,System.Linq.Expressions.Expression&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseMemberAccess(System.Type,System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseAsLambda(System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseAsEnum(System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseEnumerable(System.Linq.Expressions.Expression,System.Type,System.String,System.Int32,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.ExpressionParser::ResolveTypeFromArgumentExpression(System.String,System.Linq.Expressions.Expression,System.Nullable`1<System.Int32>) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.ExpressionParser::ResolveTypeStringFromArgument(System.String,System.String) - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression[] System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseArgumentList() - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression[] System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseArguments() - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseElementAccess(System.Linq.Expressions.Expression) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.ExpressionParser::ToNullableType(System.Type) - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionParser::TryGetMemberName(System.Linq.Expressions.Expression,System.String&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::CheckAndPromoteOperand(System.Type,System.String,System.Linq.Expressions.Expression&,System.Int32) - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Parser.ExpressionParser::GetOverloadedOperationName(System.Linq.Dynamic.Core.Tokenizer.TokenId) - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::CheckAndPromoteOperands(System.Type,System.Linq.Dynamic.Core.Tokenizer.TokenId,System.String,System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&,System.Int32) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Parser.ExpressionParser::IncompatibleOperandError(System.String,System.Linq.Expressions.Expression,System.Int32) - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Parser.ExpressionParser::IncompatibleOperandsError(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Int32) - - - - - - - - - - - - - System.Reflection.MemberInfo System.Linq.Dynamic.Core.Parser.ExpressionParser::FindPropertyOrField(System.Type,System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionParser::TokenIdentifierIs(System.String) - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Parser.ExpressionParser::GetIdentifier() - - - - - - - - - - - - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseError(System.String,System.Object[]) - - - - - - - - - - - - - - - - System.Exception System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseError(System.Int32,System.String,System.Object[]) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::.ctor(System.Linq.Expressions.ParameterExpression[],System.String,System.Object[],System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionParser::.cctor() - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.ExpressionPromoter - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionPromoter::Promote(System.Linq.Expressions.Expression,System.Type,System.Boolean,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.ExpressionPromoter::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.KeywordsHelper - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.KeywordsHelper::TryGetValue(System.String,System.Object&) - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.KeywordsHelper::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.NumberParser - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.NumberParser::ParseIntegerLiteral(System.Int32,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.NumberParser::ParseRealLiteral(System.String,System.Char,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.NumberParser::TryParseNumber(System.String,System.Type,System.Object&) - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.Parser.NumberParser::ParseNumber(System.String,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.NumberParser::ParseAsBinary(System.Int32,System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.NumberParser::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.NumberParser::.cctor() - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper - - - - - System.Void System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper::TryAdd(System.String,System.Int32) - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper::IsPredefinedType(System.Linq.Dynamic.Core.ParsingConfig,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper::.cctor() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.StringParser - - - - - System.String System.Linq.Dynamic.Core.Parser.StringParser::ParseString(System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.TypeFinder - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeFinder::FindTypeByName(System.String,System.Linq.Expressions.ParameterExpression[],System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeFinder::ResolveTypeByUsingCustomTypeProvider(System.String,System.Boolean) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeFinder::TryResolveTypeUsingExpressions(System.String,System.Linq.Expressions.ParameterExpression[],System.Type&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.TypeFinder::.ctor(System.Linq.Dynamic.Core.ParsingConfig,System.Linq.Dynamic.Core.Parser.IKeywordsHelper) - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.TypeHelper - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeHelper::FindGenericType(System.Type,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsCompatibleWith(System.Type,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsClass(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsStruct(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsEnumType(System.Type) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsNumericType(System.Type) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsNullableType(System.Type) - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::TypeCanBeNull(System.Type) - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeHelper::ToNullableType(System.Type) - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsSignedIntegralType(System.Type) - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsUnsignedIntegralType(System.Type) - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.Parser.TypeHelper::GetNumericTypeKind(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Parser.TypeHelper::GetTypeName(System.Type) - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeHelper::GetNonNullableType(System.Type) - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.Parser.TypeHelper::GetUnderlyingType(System.Type) - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Type> System.Linq.Dynamic.Core.Parser.TypeHelper::GetSelfAndBaseTypes(System.Type) - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.TypeHelper::AddInterface(System.Collections.Generic.List`1<System.Type>,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - System.Object System.Linq.Dynamic.Core.Parser.TypeHelper::ParseEnum(System.String,System.Type) - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsDictionary(System.Type) - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.TypeHelper/<GetSelfAndBaseClasses>d__16 - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper/<GetSelfAndBaseClasses>d__16::MoveNext() - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.WrappedValue`1 - - - - - TValue System.Linq.Dynamic.Core.Parser.WrappedValue`1::get_Value() - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.WrappedValue`1::.ctor(TValue) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData - - - - - System.Reflection.MethodBase System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData::get_MethodBase() - - - - - - - - - - - System.Reflection.ParameterInfo[] System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData::get_Parameters() - - - - - - - - - - - System.Linq.Expressions.Expression[] System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData::get_Args() - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::ContainsMethod(System.Type,System.String,System.Boolean,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression[]&) - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::FindMethod(System.Type,System.String,System.Boolean,System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression[]&,System.Reflection.MethodBase&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::FindBestMethodBasedOnArguments(System.Collections.Generic.IEnumerable`1<System.Reflection.MethodBase>,System.Linq.Expressions.Expression[]&,System.Reflection.MethodBase&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Int32 System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::FindIndexer(System.Type,System.Linq.Expressions.Expression[],System.Reflection.MethodBase&) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::IsApplicable(System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData,System.Linq.Expressions.Expression[]) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::FirstIsBetterThanSecond(System.Linq.Expressions.Expression[],System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData,System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.SupportedMethods.CompareConversionType System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::CompareConversions(System.Type,System.Type,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.IEnumerable`1<System.Type> System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::SelfAndBaseTypes(System.Type) - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::AddInterface(System.Collections.Generic.List`1<System.Type>,System.Type) - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::.ctor(System.Linq.Dynamic.Core.ParsingConfig) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder/<SelfAndBaseClasses>d__10 - - - - - System.Boolean System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder/<SelfAndBaseClasses>d__10::MoveNext() - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.Exceptions.ParseException - - - - - System.Int32 System.Linq.Dynamic.Core.Exceptions.ParseException::get_Position() - - - - - - - - - - - System.String System.Linq.Dynamic.Core.Exceptions.ParseException::ToString() - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Exceptions.ParseException::GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Exceptions.ParseException::.ctor(System.String,System.Int32) - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.Exceptions.ParseException::.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider - - - - - System.Collections.Generic.IEnumerable`1<System.Type> System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider::FindTypesMarkedWithDynamicLinqTypeAttribute(System.Collections.Generic.IEnumerable`1<System.Reflection.Assembly>) - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider::ResolveType(System.Collections.Generic.IEnumerable`1<System.Reflection.Assembly>,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider::ResolveTypeBySimpleName(System.Collections.Generic.IEnumerable`1<System.Reflection.Assembly>,System.String) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider/<>c - - - - - System.Boolean System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider/<>c::<GetAssemblyTypesWithDynamicLinqTypeAttribute>b__3_0(System.Reflection.Assembly) - - - - - - - - - - - System.Boolean System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider/<>c::<GetAssemblyTypesWithDynamicLinqTypeAttribute>b__3_1(System.Type) - - - - - - - - - - - - System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider/<GetAssemblyTypesWithDynamicLinqTypeAttribute>d__3 - - - - - System.Boolean System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider/<GetAssemblyTypesWithDynamicLinqTypeAttribute>d__3::MoveNext() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider - - - - - System.Collections.Generic.HashSet`1<System.Type> System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::GetCustomTypes() - - - - - - - - - - - - - - - - - - - - - - - - - System.Collections.Generic.Dictionary`2<System.Type,System.Collections.Generic.List`1<System.Reflection.MethodInfo>> System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::GetExtensionMethods() - - - - - - - - - - - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::ResolveType(System.String) - - - - - - - - - - - - - - - System.Type System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::ResolveTypeBySimpleName(System.String) - - - - - - - - - - - - - - - System.Collections.Generic.HashSet`1<System.Type> System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::GetCustomTypesInternal() - - - - - - - - - - - - - - System.Collections.Generic.Dictionary`2<System.Type,System.Collections.Generic.List`1<System.Reflection.MethodInfo>> System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::GetExtensionMethodsInternal() - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.Void System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider::.ctor(System.Boolean) - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_Check.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_Check.html deleted file mode 100644 index 0ee8515b..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_Check.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Validation.Check - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Validation.Check
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\Check.cs
          Covered lines:11
          Uncovered lines:36
          Coverable lines:47
          Total lines:136
          Line coverage:23.4% (11 of 47)
          Covered branches:4
          Total branches:16
          Branch coverage:25% (4 of 16)
          Covered methods:2
          Total methods:5
          Method coverage:40% (2 of 5)
          -

          Metrics

          - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          Condition(...)0%220%
          NotNull(...)50%2257.14%
          NotNull(...)0%220%
          NotEmpty(...)50%6643.75%
          HasNoNulls(...)0%440%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\Check.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1// Copyright (c) .NET Foundation. All rights reserved.
           2// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
           3
           4using System.Collections.Generic;
           5using System.Diagnostics;
           6using JetBrains.Annotations;
           7// using System.Reflection;
           8
           9// Copied from https://github.com/aspnet/EntityFramework/blob/dev/src/Shared/Check.cs
           10namespace System.Linq.Dynamic.Core.Validation
           11{
           12    [DebuggerStepThrough]
           13    internal static class Check
           14    {
           15        public static T Condition<T>([ValidatedNotNull, NoEnumeration] T value, [ValidatedNotNull, NotNull] Predicate<T>
           016        {
           017            NotNull(condition, nameof(condition));
           18
           019            if (!condition(value))
           020            {
           021                NotEmpty(parameterName, nameof(parameterName));
           22
           023                throw new ArgumentOutOfRangeException(parameterName);
           24            }
           25
           026            return value;
           027        }
           28
           29        [ContractAnnotation("value:null => halt")]
           30        public static T NotNull<T>([ValidatedNotNull, NoEnumeration] T value, [InvokerParameterName, ValidatedNotNull, N
           6431        {
           6432            if (ReferenceEquals(value, null))
           033            {
           034                NotEmpty(parameterName, nameof(parameterName));
           35
           036                throw new ArgumentNullException(parameterName);
           37            }
           38
           6439            return value;
           6440        }
           41
           42        [ContractAnnotation("value:null => halt")]
           43        public static T NotNull<T>(
           44            [NoEnumeration] T value,
           45            [InvokerParameterName, ValidatedNotNull, NotNull] string parameterName,
           46            [ValidatedNotNull, NotNull] string propertyName)
           047        {
           048            if (ReferenceEquals(value, null))
           049            {
           050                NotEmpty(parameterName, nameof(parameterName));
           051                NotEmpty(propertyName, nameof(propertyName));
           52
           053                throw new ArgumentException(CoreStrings.ArgumentPropertyNull(propertyName, parameterName));
           54            }
           55
           056            return value;
           057        }
           58
           59        //[ContractAnnotation("value:null => halt")]
           60        //public static IList<T> NotEmpty<T>(IList<T> value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           61        //{
           62        //    NotNull(value, parameterName);
           63
           64        //    if (value.Count == 0)
           65        //    {
           66        //        NotEmpty(parameterName, nameof(parameterName));
           67
           68        //        throw new ArgumentException(CoreStrings.CollectionArgumentIsEmpty(parameterName));
           69        //    }
           70
           71        //    return value;
           72        //}
           73
           74        [ContractAnnotation("value:null => halt")]
           75        public static string NotEmpty(string value, [InvokerParameterName, ValidatedNotNull, NotNull] string parameterNa
           576        {
           577            Exception e = null;
           578            if (ReferenceEquals(value, null))
           079            {
           080                e = new ArgumentNullException(parameterName);
           081            }
           582            else if (value.Trim().Length == 0)
           083            {
           084                e = new ArgumentException(CoreStrings.ArgumentIsEmpty(parameterName));
           085            }
           86
           587            if (e != null)
           088            {
           089                NotEmpty(parameterName, nameof(parameterName));
           90
           091                throw e;
           92            }
           93
           594            return value;
           595        }
           96
           97        //public static string NullButNotEmpty(string value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           98        //{
           99        //    if (!ReferenceEquals(value, null) && value.Length == 0)
           100        //    {
           101        //        NotEmpty(parameterName, nameof(parameterName));
           102
           103        //        throw new ArgumentException(CoreStrings.ArgumentIsEmpty(parameterName));
           104        //    }
           105
           106        //    return value;
           107        //}
           108
           109        public static IList<T> HasNoNulls<T>(IList<T> value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           110            where T : class
           0111        {
           0112            NotNull(value, parameterName);
           113
           0114            if (value.Any(e => e == null))
           0115            {
           0116                NotEmpty(parameterName, nameof(parameterName));
           117
           0118                throw new ArgumentException(parameterName);
           119            }
           120
           0121            return value;
           0122        }
           123
           124        //public static Type ValidEntityType(Type value, [InvokerParameterName, ValidatedNotNull, NotNull] string parame
           125        //{
           126        //    if (!value.GetTypeInfo().IsClass)
           127        //    {
           128        //        NotEmpty(parameterName, nameof(parameterName));
           129
           130        //        throw new ArgumentException(CoreStrings.InvalidEntityType(value, parameterName));
           131        //    }
           132
           133        //    return value;
           134        //}
           135    }
           136}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CoreStrings.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CoreStrings.html deleted file mode 100644 index 8ccf5f03..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CoreStrings.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Validation.CoreStrings - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Validation.CoreStrings
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\CoreStrings.cs
          Covered lines:0
          Uncovered lines:12
          Coverable lines:12
          Total lines:41
          Line coverage:0% (0 of 12)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:4
          Method coverage:0% (0 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ArgumentPropertyNull(...)100%110%
          ArgumentIsEmpty(...)100%110%
          InvalidEntityType(...)100%110%
          CollectionArgumentIsEmpty(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\CoreStrings.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Globalization;
           2using JetBrains.Annotations;
           3
           4// copied from https://github.com/aspnet/EntityFramework/blob/dev/src/Microsoft.EntityFrameworkCore/Properties/CoreStrin
           5namespace System.Linq.Dynamic.Core.Validation
           6{
           7    internal static class CoreStrings
           8    {
           9        /// <summary>
           10        /// The property '{property}' of the argument '{argument}' cannot be null.
           11        /// </summary>
           12        public static string ArgumentPropertyNull([CanBeNull] string property, [CanBeNull] string argument)
           013        {
           014            return string.Format(CultureInfo.CurrentCulture, "The property '{0}' of the argument '{1}' cannot be null.",
           015        }
           16
           17        /// <summary>
           18        /// The string argument '{argumentName}' cannot be empty.
           19        /// </summary>
           20        public static string ArgumentIsEmpty([CanBeNull] string argumentName)
           021        {
           022            return string.Format(CultureInfo.CurrentCulture, "The string argument '{0}' cannot be empty.", argumentName)
           023        }
           24
           25        /// <summary>
           26        /// The entity type '{type}' provided for the argument '{argumentName}' must be a reference type.
           27        /// </summary>
           28        public static string InvalidEntityType([CanBeNull] Type type, [CanBeNull] string argumentName)
           029        {
           030            return string.Format(CultureInfo.CurrentCulture, "The entity type '{0}' provided for the argument '{1}' must
           031        }
           32
           33        /// <summary>
           34        /// The collection argument '{argumentName}' must contain at least one element.
           35        /// </summary>
           36        public static string CollectionArgumentIsEmpty([CanBeNull] string argumentName)
           037        {
           038            return string.Format(CultureInfo.CurrentCulture, "The collection argument '{0}' must contain at least one el
           039        }
           40    }
           41}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomIntrospectionExtensions.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomIntrospectionExtensions.html deleted file mode 100644 index 6d21a080..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomIntrospectionExtensions.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -System.Reflection.CustomIntrospectionExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Reflection.CustomIntrospectionExtensions
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomIntrospectionExtensions.cs
          Covered lines:0
          Uncovered lines:3
          Coverable lines:3
          Total lines:40
          Line coverage:0% (0 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:1
          Method coverage:0% (0 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetGenericTypeArguments(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomIntrospectionExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq;
           2
           3// ReSharper disable once CheckNamespace
           4namespace System.Reflection
           5{
           6    /// <summary>
           7    /// https://github.com/castleproject/Core/blob/netcore/src/Castle.Core/Compatibility/IntrospectionExtensions.cs
           8    /// </summary>
           9  internal static class CustomIntrospectionExtensions
           10    {
           11#if NET35 || NET40 || PORTABLE || SILVERLIGHT || WPSL
           12        // This allows us to use the new reflection API which separates Type and TypeInfo
           13        // while still supporting .NET 3.5 and 4.0. This class matches the API of the same
           14        // class in .NET 4.5+, and so is only needed on .NET Framework versions before that.
           15        //
           16        // Return the System.Type for now, we will probably need to create a TypeInfo class
           17        // which inherits from Type like .NET 4.5+ and implement the additional methods and
           18        // properties.
           19        public static Type GetTypeInfo(this Type type)
           20        {
           21            return type;
           22        }
           23
           24        public static Type[] GetGenericTypeArguments(this Type type)
           25        {
           26            return type.GetGenericArguments();
           27        }
           28
           29        public static MethodInfo[] GetDeclaredMethods(this Type type, string name)
           30        {
           31            return type.GetMethods().Where(m => m.Name == name).ToArray();
           32        }
           33#else
           34        public static Type[] GetGenericTypeArguments(this TypeInfo typeInfo)
           035        {
           036            return typeInfo.GenericTypeArguments;
           037        }
           38#endif
           39    }
           40}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomTypeBuilderExtensions.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomTypeBuilderExtensions.html deleted file mode 100644 index 9d59cc2c..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_CustomTypeBuilderExtensions.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -System.Reflection.CustomTypeBuilderExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Reflection.CustomTypeBuilderExtensions
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomTypeBuilderExtensions.cs
          Covered lines:0
          Uncovered lines:12
          Coverable lines:12
          Total lines:35
          Line coverage:0% (0 of 12)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:4
          Method coverage:0% (0 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          CreateType(...)100%110%
          DefineProperty(...)100%110%
          AsType(...)100%110%
          AsType(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomTypeBuilderExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Reflection.Emit;
           2
           3// ReSharper disable once CheckNamespace
           4namespace System.Reflection
           5{
           6    internal static class CustomTypeBuilderExtensions
           7    {
           8#if !(NET35 || NET40 || SILVERLIGHT || WPSL || UAP10_0)
           9        public static Type CreateType(this TypeBuilder tb)
           010        {
           011            return tb.CreateTypeInfo().AsType();
           012        }
           13#endif
           14
           15#if NET35 || NET40 || SILVERLIGHT || WPSL || NETCOREAPP || NETSTANDARD2_1
           16        public static PropertyBuilder DefineProperty(this TypeBuilder tb, string name, PropertyAttributes attributes, Ca
           017        {
           018            return tb.DefineProperty(name, attributes, returnType, parameterTypes);
           019        }
           20
           21        // https://github.com/castleproject/Core/blob/netcore/src/Castle.Core/Compatibility/CustomTypeBuilderExtensions.
           22        // TypeBuilder and GenericTypeParameterBuilder no longer inherit from Type but TypeInfo,
           23        // so there is now an AsType method to get the Type which we are providing here to shim to itself.
           24        public static Type AsType(this TypeBuilder builder)
           025        {
           026            return builder;
           027        }
           28
           29        public static Type AsType(this GenericTypeParameterBuilder builder)
           030        {
           031            return builder;
           032        }
           33#endif
           34    }
           35}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EFDynamicQueryableWithFormattableStringExtensions.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EFDynamicQueryableWithFormattableStringExtensions.html deleted file mode 100644 index cec1661a..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EFDynamicQueryableWithFormattableStringExtensions.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - -Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\Microsoft.EntityFrameworkCore.DynamicLinq.EFCore3\EFDynamicQueryableWithFormattableStringExtensions.cs
          Covered lines:14
          Uncovered lines:80
          Coverable lines:94
          Total lines:194
          Line coverage:14.8% (14 of 94)
          Covered branches:0
          Total branches:0
          Covered methods:3
          Total methods:23
          Method coverage:13% (3 of 23)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ParseFormattableString(...)100%11100%
          AllInterpolatedAsync(...)100%11100%
          AllInterpolatedAsync(...)100%110%
          AnyInterpolatedAsync(...)100%110%
          AnyInterpolatedAsync(...)100%110%
          AverageInterpolatedAsync(...)100%110%
          AverageInterpolatedAsync(...)100%110%
          CountInterpolatedAsync(...)100%11100%
          CountInterpolatedAsync(...)100%110%
          FirstInterpolatedAsync(...)100%110%
          FirstInterpolatedAsync(...)100%110%
          FirstOrDefaultInterpolatedAsync(...)100%110%
          FirstOrDefaultInterpolatedAsync(...)100%110%
          LastInterpolatedAsync(...)100%110%
          LastInterpolatedAsync(...)100%110%
          LastOrDefaultInterpolatedAsync(...)100%110%
          LastOrDefaultInterpolatedAsync(...)100%110%
          LongCountInterpolatedAsync(...)100%110%
          LongCountInterpolatedAsync(...)100%110%
          SingleOrDefaultInterpolatedAsync(...)100%110%
          SingleOrDefaultInterpolatedAsync(...)100%110%
          SumInterpolatedAsync(...)100%110%
          SumInterpolatedAsync(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\Microsoft.EntityFrameworkCore.DynamicLinq.EFCore3\EFDynamicQueryableWithFormattableStringExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if EFCORE
           2using Microsoft.EntityFrameworkCore.Query;
           3using Microsoft.EntityFrameworkCore.Query.Internal;
           4#else
           5using System.Data.Entity.Infrastructure;
           6#endif
           7using System;
           8using System.Diagnostics;
           9using System.Linq;
           10using System.Linq.Dynamic.Core;
           11using System.Linq.Dynamic.Core.Validation;
           12using System.Linq.Expressions;
           13using System.Reflection;
           14using System.Threading;
           15using System.Threading.Tasks;
           16using JetBrains.Annotations;
           17using System.Text.RegularExpressions;
           18
           19#if EFCORE
           20namespace Microsoft.EntityFrameworkCore.DynamicLinq
           21#else
           22namespace EntityFramework.DynamicLinq
           23#endif
           24{
           25#if EFCORE || (NET46_OR_GREATER || NET5_0_OR_GREATER || NETCOREAPP2_1_OR_GREATER || NETSTANDARD1_3_OR_GREATER || UAP10_0
           26    public static class EFDynamicQueryableWithFormattableStringExtensions
           27    {
           28
           29        private static string ParseFormattableString(FormattableString predicate, out object[] args)
           230        {
           231            string predicateStr = predicate.Format;
           232            predicateStr = Regex.Replace(predicateStr, @"{(\d+)}", "@$1");//replace {0} with @0
           233            args = predicate.GetArguments();
           234            return predicateStr;
           235        }
           36
           37        [PublicAPI]
           38        public static Task<bool> AllInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString pred
           139        {
           140            string predicateStr = ParseFormattableString(predicate, out object[] args);
           141            return EntityFrameworkDynamicQueryableExtensions.AllAsync(source, predicateStr, args);
           142        }
           43
           44        [PublicAPI]
           45        public static Task<bool> AllInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString pred
           046        {
           047            string predicateStr = ParseFormattableString(predicate, out object[] args);
           048            return EntityFrameworkDynamicQueryableExtensions.AllAsync(source, predicateStr, cancellationToken, args);
           049        }
           50
           51        [PublicAPI]
           52        public static Task<bool> AnyInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString pred
           053        {
           054            string predicateStr = ParseFormattableString(predicate, out object[] args);
           055            return EntityFrameworkDynamicQueryableExtensions.AnyAsync(source, predicateStr, args);
           056        }
           57
           58        [PublicAPI]
           59        public static Task<bool> AnyInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString pred
           060        {
           061            string predicateStr = ParseFormattableString(predicate, out object[] args);
           062            return EntityFrameworkDynamicQueryableExtensions.AnyAsync(source, predicateStr, cancellationToken, args);
           063        }
           64
           65        [PublicAPI]
           66        public static Task<double> AverageInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableStrin
           067        {
           068            string selectorStr = ParseFormattableString(selector, out object[] args);
           069            return EntityFrameworkDynamicQueryableExtensions.AverageAsync(source, selectorStr, args);
           070        }
           71
           72
           73        [PublicAPI]
           74        public static Task<double> AverageInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableStrin
           075        {
           076            string selectorStr = ParseFormattableString(selector, out object[] args);
           077            return EntityFrameworkDynamicQueryableExtensions.AverageAsync(source, selectorStr, cancellationToken, args);
           078        }
           79
           80        [PublicAPI]
           81        public static Task<int> CountInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString pre
           182        {
           183            string predicateStr = ParseFormattableString(predicate, out object[] args);
           184            return EntityFrameworkDynamicQueryableExtensions.CountAsync(source, predicateStr, args);
           185        }
           86
           87        [PublicAPI]
           88        public static Task<int> CountInterpolatedAsync([NotNull] this IQueryable source, CancellationToken cancellationT
           089        {
           090            string predicateStr = ParseFormattableString(predicate, out object[] args);
           091            return EntityFrameworkDynamicQueryableExtensions.CountAsync(source, cancellationToken, predicateStr, args);
           092        }
           93
           94        [PublicAPI]
           95        public static Task<dynamic> FirstInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString
           096        {
           097            string predicateStr = ParseFormattableString(predicate, out object[] args);
           098            return EntityFrameworkDynamicQueryableExtensions.FirstAsync(source, predicateStr, args);
           099        }
           100
           101        [PublicAPI]
           102        public static Task<dynamic> FirstInterpolatedAsync([NotNull] this IQueryable source, CancellationToken cancellat
           0103        {
           0104            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0105            return EntityFrameworkDynamicQueryableExtensions.FirstAsync(source, cancellationToken, predicateStr, args);
           0106        }
           107
           108        [PublicAPI]
           109        public static Task<dynamic> FirstOrDefaultInterpolatedAsync([NotNull] this IQueryable source, [NotNull] Formatta
           0110        {
           0111            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0112            return EntityFrameworkDynamicQueryableExtensions.FirstOrDefaultAsync(source, predicateStr, args);
           0113        }
           114
           115        [PublicAPI]
           116        public static Task<dynamic> FirstOrDefaultInterpolatedAsync([NotNull] this IQueryable source, CancellationToken 
           0117        {
           0118            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0119            return EntityFrameworkDynamicQueryableExtensions.FirstOrDefaultAsync(source, cancellationToken, predicateStr
           0120        }
           121
           122        [PublicAPI]
           123        public static Task<dynamic> LastInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString 
           0124        {
           0125            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0126            return EntityFrameworkDynamicQueryableExtensions.LastAsync(source, predicateStr, args);
           0127        }
           128
           129        [PublicAPI]
           130        public static Task<dynamic> LastInterpolatedAsync([NotNull] this IQueryable source, CancellationToken cancellati
           0131        {
           0132            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0133            return EntityFrameworkDynamicQueryableExtensions.LastAsync(source, cancellationToken, predicateStr, args);
           0134        }
           135
           136        [PublicAPI]
           137        public static Task<dynamic> LastOrDefaultInterpolatedAsync([NotNull] this IQueryable source, [NotNull] Formattab
           0138        {
           0139            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0140            return EntityFrameworkDynamicQueryableExtensions.LastOrDefaultAsync(source, predicateStr, args);
           0141        }
           142
           143        [PublicAPI]
           144        public static Task<dynamic> LastOrDefaultInterpolatedAsync([NotNull] this IQueryable source, CancellationToken c
           0145        {
           0146            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0147            return EntityFrameworkDynamicQueryableExtensions.LastOrDefaultAsync(source, cancellationToken, predicateStr,
           0148        }
           149
           150        [PublicAPI]
           151        public static Task<long> LongCountInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableStrin
           0152        {
           0153            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0154            return EntityFrameworkDynamicQueryableExtensions.LongCountAsync(source, predicateStr, args);
           0155        }
           156
           157        [PublicAPI]
           158        public static Task<long> LongCountInterpolatedAsync([NotNull] this IQueryable source, CancellationToken cancella
           0159        {
           0160            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0161            return EntityFrameworkDynamicQueryableExtensions.LongCountAsync(source, cancellationToken, predicateStr, arg
           0162        }
           163
           164        [PublicAPI]
           165        public static Task<dynamic> SingleOrDefaultInterpolatedAsync([NotNull] this IQueryable source, [NotNull] Formatt
           0166        {
           0167            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0168            return EntityFrameworkDynamicQueryableExtensions.SingleOrDefaultAsync(source, predicateStr, args);
           0169        }
           170
           171        [PublicAPI]
           172        public static Task<dynamic> SingleOrDefaultInterpolatedAsync([NotNull] this IQueryable source, CancellationToken
           0173        {
           0174            string predicateStr = ParseFormattableString(predicate, out object[] args);
           0175            return EntityFrameworkDynamicQueryableExtensions.SingleOrDefaultAsync(source, cancellationToken, predicateSt
           0176        }
           177
           178        [PublicAPI]
           179        public static Task<dynamic> SumInterpolatedAsync([NotNull] this IQueryable source, [NotNull] FormattableString s
           0180        {
           0181            string selectorStr = ParseFormattableString(selector, out object[] args);
           0182            return EntityFrameworkDynamicQueryableExtensions.SumAsync(source, selectorStr, args);
           0183        }
           184
           185        [PublicAPI]
           186        public static Task<dynamic> SumInterpolatedAsync([NotNull] this IQueryable source, CancellationToken cancellatio
           0187        {
           0188            string selectorStr = ParseFormattableString(selector, out object[] args);
           0189            return EntityFrameworkDynamicQueryableExtensions.SumAsync(source, cancellationToken, selectorStr, args);
           0190        }
           191
           192    }
           193#endif
           194}
          -
          -
          -
          -

          Methods/Properties

          -ParseFormattableString(System.FormattableString,System.Object[]&)
          -AllInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -AllInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken)
          -AnyInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -AnyInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken)
          -AverageInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -AverageInterpolatedAsync(System.Linq.IQueryable,System.FormattableString,System.Threading.CancellationToken)
          -CountInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -CountInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -FirstInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -FirstInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -FirstOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -FirstOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -LastInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -LastInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -LastOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -LastOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -LongCountInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -LongCountInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -SingleOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -SingleOrDefaultInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -SumInterpolatedAsync(System.Linq.IQueryable,System.FormattableString)
          -SumInterpolatedAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.FormattableString)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EntityFrameworkDynamicQueryableExtensions.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EntityFrameworkDynamicQueryableExtensions.html deleted file mode 100644 index f9a70ecd..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_EntityFrameworkDynamicQueryableExtensions.html +++ /dev/null @@ -1,1301 +0,0 @@ - - - - - - -Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\Microsoft.EntityFrameworkCore.DynamicLinq.EFCore3\EFDynamicQueryableExtensions.cs
          Covered lines:208
          Uncovered lines:60
          Coverable lines:268
          Total lines:1119
          Line coverage:77.6% (208 of 268)
          Covered branches:21
          Total branches:30
          Branch coverage:70% (21 of 30)
          Covered methods:32
          Total methods:43
          Method coverage:74.4% (32 of 43)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          AllAsync(...)100%11100%
          AllAsync(...)100%11100%
          AnyAsync(...)100%11100%
          AnyAsync(...)100%11100%
          AnyAsync(...)100%11100%
          AverageAsync(...)100%11100%
          AverageAsync(...)100%11100%
          AverageAsync(...)100%11100%
          CountAsync(...)100%110%
          CountAsync(...)100%11100%
          CountAsync(...)100%11100%
          FirstAsync(...)100%11100%
          FirstAsync(...)100%11100%
          FirstAsync(...)100%11100%
          FirstOrDefaultAsync(...)100%11100%
          FirstOrDefaultAsync(...)100%11100%
          FirstOrDefaultAsync(...)100%11100%
          LastAsync(...)100%110%
          LastAsync(...)100%110%
          LastAsync(...)100%110%
          LastOrDefaultAsync(...)100%110%
          LastOrDefaultAsync(...)100%110%
          LastOrDefaultAsync(...)100%110%
          LongCountAsync(...)100%110%
          LongCountAsync(...)100%110%
          LongCountAsync(...)100%110%
          SingleOrDefaultAsync(...)100%11100%
          SingleOrDefaultAsync(...)100%11100%
          SingleOrDefaultAsync(...)100%11100%
          SumAsync(...)100%11100%
          SumAsync(...)100%11100%
          SumAsync(...)100%11100%
          ExecuteDynamicAsync(...)100%11100%
          ExecuteAsync(...)75%4492.3%
          ExecuteAsync(...)100%110%
          ExecuteDynamicAsync(...)100%11100%
          ExecuteAsync(...)50%4492.3%
          GetMethod(...)100%2283.33%
          GetMethod(...)75%44100%
          CastSource(...)50%6666.66%
          ExecuteAsync(...)100%66100%
          OptimizeExpression(...)50%4458.33%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\Microsoft.EntityFrameworkCore.DynamicLinq.EFCore3\EFDynamicQueryableExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if EFCORE
           2using Microsoft.EntityFrameworkCore.Query;
           3using Microsoft.EntityFrameworkCore.Query.Internal;
           4#else
           5using System.Data.Entity.Infrastructure;
           6#endif
           7using System;
           8using System.Diagnostics;
           9using System.Linq;
           10using System.Linq.Dynamic.Core;
           11using System.Linq.Dynamic.Core.Validation;
           12using System.Linq.Expressions;
           13using System.Reflection;
           14using System.Threading;
           15using System.Threading.Tasks;
           16using JetBrains.Annotations;
           17
           18#if EFCORE
           19namespace Microsoft.EntityFrameworkCore.DynamicLinq
           20#else
           21namespace EntityFramework.DynamicLinq
           22#endif
           23{
           24    /// <summary>
           25    /// Provides a set of static Async methods for querying data structures that implement <see cref="IQueryable"/>.
           26    /// It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries th
           27    /// or when downstream components only return column names to sort and filter by.
           28    /// </summary>
           29    public static class EntityFrameworkDynamicQueryableExtensions
           30    {
           31        // ReSharper disable once UseNameOfInsteadOfTypeOf
           132        private static readonly TraceSource TraceSource = new TraceSource(typeof(EntityFrameworkDynamicQueryableExtensio
           33
           34        #region AllAsync
           135        private static readonly MethodInfo _AllPredicate = GetMethod(nameof(Queryable.All), 1);
           36
           37        /// <summary>
           38        ///     Asynchronously determines whether all the elements of a sequence satisfy a condition.
           39        /// </summary>
           40        /// <remarks>
           41        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           42        ///     that All asynchronous operations have completed before calling another method on this context.
           43        /// </remarks>
           44        /// <param name="source">
           45        ///     An <see cref="IQueryable" /> to calculate the All of.
           46        /// </param>
           47        /// <param name="predicate">A projection function to apply to each element.</param>
           48        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           49        /// <returns>
           50        ///     A task that represents the asynchronous operation. The task result contains true if every element of the
           51        /// </returns>
           52        [PublicAPI]
           53        public static Task<bool> AllAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] para
           254        {
           255            return AllAsync(source, predicate, default(CancellationToken), args);
           256        }
           57
           58        /// <summary>
           59        ///     Asynchronously determines whether all the elements of a sequence satisfy a condition.
           60        /// </summary>
           61        /// <remarks>
           62        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           63        ///     that All asynchronous operations have completed before calling another method on this context.
           64        /// </remarks>
           65        /// <param name="source">
           66        ///     An <see cref="IQueryable" /> to calculate the All of.
           67        /// </param>
           68        /// <param name="predicate">A projection function to apply to each element.</param>
           69        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           70        /// <param name="cancellationToken">
           71        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           72        /// </param>
           73        /// <returns>
           74        ///     A task that represents the asynchronous operation. The task result contains true if every element of the
           75        /// </returns>
           76        [PublicAPI]
           77        public static Task<bool> AllAsync([NotNull] this IQueryable source, [NotNull] string predicate, CancellationToke
           278        {
           279            Check.NotNull(source, nameof(source));
           280            Check.NotEmpty(predicate, nameof(predicate));
           281            Check.NotNull(cancellationToken, nameof(cancellationToken));
           82
           283            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           84
           285            return ExecuteAsync<bool>(_AllPredicate, source, Expression.Quote(lambda), cancellationToken);
           286        }
           87        #endregion AllAsync
           88
           89        #region AnyAsync
           190        private static readonly MethodInfo _any = GetMethod(nameof(Queryable.Any));
           91
           92        /// <summary>
           93        ///     Asynchronously determines whether a sequence contains any elements.
           94        /// </summary>
           95        /// <remarks>
           96        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           97        ///     that any asynchronous operations have completed before calling another method on this context.
           98        /// </remarks>
           99        /// <param name="source">
           100        ///     An <see cref="IQueryable" /> to check for being empty.
           101        /// </param>
           102        /// <param name="cancellationToken">
           103        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           104        /// </param>
           105        /// <returns>
           106        ///     A task that represents the asynchronous operation. The task result contains true if the source sequence 
           107        /// </returns>
           108        [PublicAPI]
           109        public static Task<bool> AnyAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = defaul
           2110        {
           2111            Check.NotNull(source, nameof(source));
           2112            Check.NotNull(cancellationToken, nameof(cancellationToken));
           113
           2114            return ExecuteAsync<bool>(_any, source, cancellationToken);
           2115        }
           116
           1117        private static readonly MethodInfo _anyPredicate = GetMethod(nameof(Queryable.Any), 1);
           118
           119        /// <summary>
           120        ///     Asynchronously determines whether any element of a sequence satisfies a condition.
           121        /// </summary>
           122        /// <remarks>
           123        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           124        ///     that any asynchronous operations have completed before calling another method on this context.
           125        /// </remarks>
           126        /// <param name="source">
           127        ///     An <see cref="IQueryable" /> whose elements to test for a condition.
           128        /// </param>
           129        /// <param name="predicate">A function to test each element for a condition.</param>
           130        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           131        /// <returns>
           132        ///     A task that represents the asynchronous operation. The task result contains true if the source sequence 
           133        /// </returns>
           134        [PublicAPI]
           135        public static Task<bool> AnyAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] para
           2136        {
           2137            return AnyAsync(source, predicate, default(CancellationToken), args);
           2138        }
           139
           140        /// <summary>
           141        ///     Asynchronously determines whether any element of a sequence satisfies a condition.
           142        /// </summary>
           143        /// <remarks>
           144        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           145        ///     that any asynchronous operations have completed before calling another method on this context.
           146        /// </remarks>
           147        /// <param name="source">
           148        ///     An <see cref="IQueryable" /> whose elements to test for a condition.
           149        /// </param>
           150        /// <param name="predicate">A function to test each element for a condition.</param>
           151        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           152        /// <param name="cancellationToken">
           153        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           154        /// </param>
           155        /// <returns>
           156        ///     A task that represents the asynchronous operation. The task result contains true if the source sequence 
           157        /// </returns>
           158        [PublicAPI]
           159        public static Task<bool> AnyAsync([NotNull] this IQueryable source, [NotNull] string predicate, CancellationToke
           2160        {
           2161            Check.NotNull(source, nameof(source));
           2162            Check.NotEmpty(predicate, nameof(predicate));
           2163            Check.NotNull(cancellationToken, nameof(cancellationToken));
           164
           2165            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           166
           2167            return ExecuteAsync<bool>(_anyPredicate, source, Expression.Quote(lambda), cancellationToken);
           2168        }
           169        #endregion AnyAsync
           170
           171        #region AverageAsync
           2172        private static readonly MethodInfo _averageForDouble = GetMethod(nameof(Queryable.Average), 0, mi => mi.ReturnTy
           173
           174        /// <summary>
           175        ///     Asynchronously computes the average of a sequence of values.
           176        /// </summary>
           177        /// <remarks>
           178        ///     Multiple active operations on the same context instance are not supported. Use 'await' to ensure
           179        ///     that any asynchronous operations have completed before calling another method on this context.
           180        /// </remarks>
           181        /// <param name="source">
           182        ///     An <see cref="IQueryable" /> to calculate the average of.
           183        /// </param>
           184        /// <param name="cancellationToken">
           185        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           186        /// </param>
           187        /// <returns>
           188        ///     A task that represents the asynchronous operation. The task result contains the average of the sequence 
           189        /// </returns>
           190        [PublicAPI]
           191        public static Task<double> AverageAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = 
           1192        {
           1193            Check.NotNull(source, nameof(source));
           1194            Check.NotNull(cancellationToken, nameof(cancellationToken));
           195
           1196            return ExecuteAsync<double>(_averageForDouble, source, cancellationToken);
           1197        }
           198
           2199        private static readonly MethodInfo _averagePredicateForDouble = GetMethod(nameof(Queryable.Average), 1, mi => mi
           200
           201        /// <summary>
           202        ///     Asynchronously computes the average of a sequence of values that is obtained by invoking a projection fu
           203        /// </summary>
           204        /// <remarks>
           205        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           206        ///     that Average asynchronous operations have completed before calling another method on this context.
           207        /// </remarks>
           208        /// <param name="source">
           209        ///     An <see cref="IQueryable" /> to calculate the average of.
           210        /// </param>
           211        /// <param name="selector">A projection function to apply to each element.</param>
           212        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           213        /// <returns>
           214        ///     A task that represents the asynchronous operation.
           215        ///     The task result contains <c>true</c> if Average elements in the source sequence pass the test in the spe
           216        ///     predicate; otherwise, <c>false</c>.
           217        /// </returns>
           218        [PublicAPI]
           219        public static Task<double> AverageAsync([NotNull] this IQueryable source, [NotNull] string selector, [CanBeNull]
           1220        {
           1221            return AverageAsync(source, selector, default(CancellationToken), args);
           1222        }
           223
           224        /// <summary>
           225        ///     Asynchronously computes the average of a sequence of values that is obtained by invoking a projection fu
           226        /// </summary>
           227        /// <remarks>
           228        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           229        ///     that Average asynchronous operations have completed before calling another method on this context.
           230        /// </remarks>
           231        /// <param name="source">
           232        ///     An <see cref="IQueryable" /> to calculate the average of.
           233        /// </param>
           234        /// <param name="selector">A projection function to apply to each element.</param>
           235        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           236        /// <param name="cancellationToken">
           237        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           238        /// </param>
           239        /// <returns>
           240        ///     A task that represents the asynchronous operation.
           241        ///     The task result contains <c>true</c> if Average elements in the source sequence pass the test in the spe
           242        ///     predicate; otherwise, <c>false</c>.
           243        /// </returns>
           244        [PublicAPI]
           245        public static Task<double> AverageAsync([NotNull] this IQueryable source, [NotNull] string selector, Cancellatio
           1246        {
           1247            Check.NotNull(source, nameof(source));
           1248            Check.NotEmpty(selector, nameof(selector));
           1249            Check.NotNull(cancellationToken, nameof(cancellationToken));
           250
           1251            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, selector, arg
           252
           1253            return ExecuteAsync<double>(_averagePredicateForDouble, source, Expression.Quote(lambda), cancellationToken)
           1254        }
           255        #endregion AverageAsync
           256
           257        #region Count
           1258        private static readonly MethodInfo _count = GetMethod(nameof(Queryable.Count));
           259
           260        /// <summary>
           261        ///     Asynchronously returns the number of elements in a sequence.
           262        /// </summary>
           263        /// <remarks>
           264        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           265        ///     that any asynchronous operations have completed before calling another method on this context.
           266        /// </remarks>
           267        /// <param name="source">
           268        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           269        /// </param>
           270        /// <param name="cancellationToken">
           271        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           272        /// </param>
           273        /// <returns>
           274        ///     A task that represents the asynchronous operation.
           275        ///     The task result contains the number of elements in the input sequence.
           276        /// </returns>
           277        [PublicAPI]
           278        public static Task<int> CountAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = defau
           0279        {
           0280            Check.NotNull(source, nameof(source));
           0281            Check.NotNull(cancellationToken, nameof(cancellationToken));
           282
           0283            return ExecuteAsync<int>(_count, source, cancellationToken);
           0284        }
           285
           1286        private static readonly MethodInfo _countPredicate = GetMethod(nameof(Queryable.Count), 1);
           287
           288        /// <summary>
           289        ///     Asynchronously returns the number of elements in a sequence that satisfy a condition.
           290        /// </summary>
           291        /// <remarks>
           292        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           293        ///     that any asynchronous operations have completed before calling another method on this context.
           294        /// </remarks>
           295        /// <param name="source">
           296        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           297        /// </param>
           298        /// <param name="predicate"> A function to test each element for a condition. </param>
           299        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           300        /// <returns>
           301        ///     A task that represents the asynchronous operation.
           302        ///     The task result contains the number of elements in the sequence that satisfy the condition in the predic
           303        ///     function.
           304        /// </returns>
           305        [PublicAPI]
           306        public static Task<int> CountAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] par
           2307        {
           2308            return CountAsync(source, default(CancellationToken), predicate, args);
           2309        }
           310
           311        /// <summary>
           312        ///     Asynchronously returns the number of elements in a sequence that satisfy a condition.
           313        /// </summary>
           314        /// <remarks>
           315        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           316        ///     that any asynchronous operations have completed before calling another method on this context.
           317        /// </remarks>
           318        /// <param name="source">
           319        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           320        /// </param>
           321        /// <param name="predicate"> A function to test each element for a condition. </param>
           322        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           323        /// <param name="cancellationToken">
           324        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           325        /// </param>
           326        /// <returns>
           327        ///     A task that represents the asynchronous operation.
           328        ///     The task result contains the number of elements in the sequence that satisfy the condition in the predic
           329        ///     function.
           330        /// </returns>
           331        [PublicAPI]
           332        public static Task<int> CountAsync([NotNull] this IQueryable source, CancellationToken cancellationToken, [NotNu
           2333        {
           2334            Check.NotNull(source, nameof(source));
           2335            Check.NotNull(predicate, nameof(predicate));
           2336            Check.NotNull(cancellationToken, nameof(cancellationToken));
           337
           2338            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           339
           2340            return ExecuteAsync<int>(_countPredicate, source, Expression.Quote(lambda), cancellationToken);
           2341        }
           342        #endregion Count
           343
           344        #region FirstAsync
           1345        private static readonly MethodInfo _first = GetMethod(nameof(Queryable.First));
           346
           347        /// <summary>
           348        ///     Asynchronously returns the first element of a sequence.
           349        /// </summary>
           350        /// <remarks>
           351        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           352        ///     that any asynchronous operations have completed before calling another method on this context.
           353        /// </remarks>
           354        /// <param name="source">
           355        ///     An <see cref="IQueryable" /> to return the first element of.
           356        /// </param>
           357        /// <param name="cancellationToken">
           358        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           359        /// </param>
           360        /// <returns>
           361        ///     A task that represents the asynchronous operation.
           362        ///     The task result contains the first element in <paramref name="source" />.
           363        /// </returns>
           364        [PublicAPI]
           365        public static Task<dynamic> FirstAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = d
           2366        {
           2367            Check.NotNull(source, nameof(source));
           368
           2369            return ExecuteAsync<dynamic>(_first, source, cancellationToken);
           2370        }
           371
           1372        private static readonly MethodInfo _firstPredicate = GetMethod(nameof(Queryable.First), 1);
           373
           374        /// <summary>
           375        ///     Asynchronously returns the first element of a sequence that satisfies a specified condition.
           376        /// </summary>
           377        /// <remarks>
           378        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           379        ///     that any asynchronous operations have completed before calling another method on this context.
           380        /// </remarks>
           381        /// <param name="source">
           382        ///     An <see cref="IQueryable" /> to return the first element of.
           383        /// </param>
           384        /// <param name="predicate"> A function to test each element for a condition. </param>
           385        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           386        /// <returns>
           387        ///     A task that represents the asynchronous operation.
           388        ///     The task result contains the first element in <paramref name="source" /> that passes the test in
           389        ///     <paramref name="predicate" />.
           390        /// </returns>
           391        [PublicAPI]
           392        public static Task<dynamic> FirstAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull]
           1393        {
           1394            return FirstAsync(source, default(CancellationToken), predicate, args);
           1395        }
           396
           397        /// <summary>
           398        ///     Asynchronously returns the first element of a sequence that satisfies a specified condition.
           399        /// </summary>
           400        /// <remarks>
           401        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           402        ///     that any asynchronous operations have completed before calling another method on this context.
           403        /// </remarks>
           404        /// <param name="source">
           405        ///     An <see cref="IQueryable" /> to return the first element of.
           406        /// </param>
           407        /// <param name="predicate"> A function to test each element for a condition. </param>
           408        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           409        /// <param name="cancellationToken">
           410        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           411        /// </param>
           412        /// <returns>
           413        ///     A task that represents the asynchronous operation.
           414        ///     The task result contains the first element in <paramref name="source" /> that passes the test in
           415        ///     <paramref name="predicate" />.
           416        /// </returns>
           417        [PublicAPI]
           418        public static Task<dynamic> FirstAsync([NotNull] this IQueryable source, CancellationToken cancellationToken, [N
           1419        {
           1420            Check.NotNull(source, nameof(source));
           1421            Check.NotNull(predicate, nameof(predicate));
           422
           1423            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           424
           1425            return ExecuteAsync<dynamic>(_firstPredicate, source, Expression.Quote(lambda), cancellationToken);
           1426        }
           427        #endregion FirstAsync
           428
           429        #region FirstOrDefaultAsync
           1430        private static readonly MethodInfo _firstOrDefault = GetMethod(nameof(Queryable.FirstOrDefault));
           431
           432        /// <summary>
           433        ///     Asynchronously returns the first element of a sequence, or a default value if the sequence contains no e
           434        /// </summary>
           435        /// <remarks>
           436        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           437        ///     that any asynchronous operations have completed before calling another method on this context.
           438        /// </remarks>
           439        /// <param name="source">
           440        ///     An <see cref="IQueryable" /> to return the first element of.
           441        /// </param>
           442        /// <param name="cancellationToken">
           443        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           444        /// </param>
           445        /// <returns>
           446        ///     A task that represents the asynchronous operation.
           447        ///     The task result contains <c>default</c> if
           448        ///     <paramref name="source" /> is empty; otherwise, the first element in <paramref name="source" />.
           449        /// </returns>
           450        [PublicAPI]
           451        public static Task<dynamic> FirstOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellation
           4452        {
           4453            Check.NotNull(source, nameof(source));
           4454            Check.NotNull(cancellationToken, nameof(cancellationToken));
           455
           4456            return ExecuteAsync<dynamic>(_firstOrDefault, source, cancellationToken);
           4457        }
           458
           3459        private static readonly MethodInfo _firstOrDefaultPredicate = GetMethod(nameof(Queryable.FirstOrDefault), 1, mi 
           460
           461        /// <summary>
           462        ///     Asynchronously returns the first element of a sequence that satisfies a specified condition
           463        ///     or a default value if no such element is found.
           464        /// </summary>
           465        /// <remarks>
           466        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           467        ///     that any asynchronous operations have completed before calling another method on this context.
           468        /// </remarks>
           469        /// <param name="source">
           470        ///     An <see cref="IQueryable" /> to return the first element of.
           471        /// </param>
           472        /// <param name="predicate"> A function to test each element for a condition. </param>
           473        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           474        /// <returns>
           475        ///     A task that represents the asynchronous operation.
           476        ///     The task result contains <c>default</c> if <paramref name="source" />
           477        ///     is empty or if no element passes the test specified by <paramref name="predicate" /> ; otherwise, the fi
           478        ///     element in <paramref name="source" /> that passes the test specified by <paramref name="predicate" />.
           479        /// </returns>
           480        [PublicAPI]
           481        public static Task<dynamic> FirstOrDefaultAsync([NotNull] this IQueryable source, [NotNull] string predicate, [C
           2482        {
           2483            return FirstOrDefaultAsync(source, default(CancellationToken), predicate, args);
           2484        }
           485
           486        /// <summary>
           487        ///     Asynchronously returns the first element of a sequence that satisfies a specified condition
           488        ///     or a default value if no such element is found.
           489        /// </summary>
           490        /// <remarks>
           491        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           492        ///     that any asynchronous operations have completed before calling another method on this context.
           493        /// </remarks>
           494        /// <param name="source">
           495        ///     An <see cref="IQueryable" /> to return the first element of.
           496        /// </param>
           497        /// <param name="predicate"> A function to test each element for a condition. </param>
           498        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           499        /// <param name="cancellationToken">
           500        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           501        /// </param>
           502        /// <returns>
           503        ///     A task that represents the asynchronous operation.
           504        ///     The task result contains <c>default</c> if <paramref name="source" />
           505        ///     is empty or if no element passes the test specified by <paramref name="predicate" /> ; otherwise, the fi
           506        ///     element in <paramref name="source" /> that passes the test specified by <paramref name="predicate" />.
           507        /// </returns>
           508        [PublicAPI]
           509        public static Task<dynamic> FirstOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellation
           2510        {
           2511            Check.NotNull(source, nameof(source));
           2512            Check.NotNull(predicate, nameof(predicate));
           2513            Check.NotNull(cancellationToken, nameof(cancellationToken));
           514
           2515            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           516
           2517            return ExecuteAsync<dynamic>(_firstOrDefaultPredicate, source, Expression.Quote(lambda), cancellationToken);
           2518        }
           519        #endregion FirstOrDefault
           520
           521        #region LastAsync
           1522        private static readonly MethodInfo _last = GetMethod(nameof(Queryable.Last));
           523
           524        /// <summary>
           525        ///     Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com
           526        /// </summary>
           527        /// <remarks>
           528        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           529        ///     that any asynchronous operations have completed before calling another method on this context.
           530        /// </remarks>
           531        /// <param name="source">
           532        ///     An <see cref="IQueryable" /> to return the last element of.
           533        /// </param>
           534        /// <param name="cancellationToken">
           535        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           536        /// </param>
           537        /// <returns>
           538        ///     A task that represents the asynchronous operation.
           539        ///     The task result contains the last element in <paramref name="source" />.
           540        /// </returns>
           541        [PublicAPI]
           542        public static Task<dynamic> LastAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = de
           0543        {
           0544            Check.NotNull(source, nameof(source));
           545
           0546            return ExecuteAsync<dynamic>(_last, source, cancellationToken);
           0547        }
           548
           1549        private static readonly MethodInfo _lastPredicate = GetMethod(nameof(Queryable.Last), 1);
           550
           551        /// <summary>
           552        ///     Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not s
           553        /// </summary>
           554        /// <remarks>
           555        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           556        ///     that any asynchronous operations have completed before calling another method on this context.
           557        /// </remarks>
           558        /// <param name="source">
           559        ///     An <see cref="IQueryable" /> to return the last element of.
           560        /// </param>
           561        /// <param name="predicate"> A function to test each element for a condition. </param>
           562        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           563        /// <returns>
           564        ///     A task that represents the asynchronous operation.
           565        ///     The task result contains the last element in <paramref name="source" /> that passes the test in
           566        ///     <paramref name="predicate" />.
           567        /// </returns>
           568        [PublicAPI]
           569        public static Task<dynamic> LastAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] 
           0570        {
           0571            return LastAsync(source, default(CancellationToken), predicate, args);
           0572        }
           573
           574        /// <summary>
           575        ///     Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not s
           576        /// </summary>
           577        /// <remarks>
           578        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           579        ///     that any asynchronous operations have completed before calling another method on this context.
           580        /// </remarks>
           581        /// <param name="source">
           582        ///     An <see cref="IQueryable" /> to return the last element of.
           583        /// </param>
           584        /// <param name="predicate"> A function to test each element for a condition. </param>
           585        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           586        /// <param name="cancellationToken">
           587        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           588        /// </param>
           589        /// <returns>
           590        ///     A task that represents the asynchronous operation.
           591        ///     The task result contains the last element in <paramref name="source" /> that passes the test in
           592        ///     <paramref name="predicate" />.
           593        /// </returns>
           594        [PublicAPI]
           595        public static Task<dynamic> LastAsync([NotNull] this IQueryable source, CancellationToken cancellationToken, [No
           0596        {
           0597            Check.NotNull(source, nameof(source));
           0598            Check.NotNull(predicate, nameof(predicate));
           599
           0600            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           601
           0602            return ExecuteAsync<dynamic>(_lastPredicate, source, Expression.Quote(lambda), cancellationToken);
           0603        }
           604        #endregion LastAsync
           605
           606        #region LastOrDefaultAsync
           1607        private static readonly MethodInfo _lastOrDefault = GetMethod(nameof(Queryable.LastOrDefault));
           608
           609        /// <summary>
           610        ///     Asynchronously returns the last element of a sequence, or a default value if the sequence contains no el
           611        /// </summary>
           612        /// <remarks>
           613        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           614        ///     that any asynchronous operations have completed before calling another method on this context.
           615        /// </remarks>
           616        /// <param name="source">
           617        ///     An <see cref="IQueryable" /> to return the last element of.
           618        /// </param>
           619        /// <param name="cancellationToken">
           620        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           621        /// </param>
           622        /// <returns>
           623        ///     A task that represents the asynchronous operation.
           624        ///     The task result contains <c>default</c> if
           625        ///     <paramref name="source" /> is empty; otherwise, the last element in <paramref name="source" />.
           626        /// </returns>
           627        [PublicAPI]
           628        public static Task<dynamic> LastOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellationT
           0629        {
           0630            Check.NotNull(source, nameof(source));
           0631            Check.NotNull(cancellationToken, nameof(cancellationToken));
           632
           0633            return ExecuteAsync<dynamic>(_lastOrDefault, source, cancellationToken);
           0634        }
           635
           1636        private static readonly MethodInfo _lastOrDefaultPredicate = GetMethod(nameof(Queryable.LastOrDefault), 1);
           637
           638        /// <summary>
           639        ///     Asynchronously returns the last element of a sequence that satisfies a specified condition
           640        ///     or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/
           641        /// </summary>
           642        /// <remarks>
           643        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           644        ///     that any asynchronous operations have completed before calling another method on this context.
           645        /// </remarks>
           646        /// <param name="source">
           647        ///     An <see cref="IQueryable" /> to return the last element of.
           648        /// </param>
           649        /// <param name="predicate"> A function to test each element for a condition. </param>
           650        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           651        /// <returns>
           652        ///     A task that represents the asynchronous operation.
           653        ///     The task result contains <c>default</c> if <paramref name="source" />
           654        ///     is empty or if no element passes the test specified by <paramref name="predicate" /> ; otherwise, the la
           655        ///     element in <paramref name="source" /> that passes the test specified by <paramref name="predicate" />.
           656        /// </returns>
           657        [PublicAPI]
           658        public static Task<dynamic> LastOrDefaultAsync([NotNull] this IQueryable source, [NotNull] string predicate, [Ca
           0659        {
           0660            return LastOrDefaultAsync(source, default(CancellationToken), predicate, args);
           0661        }
           662
           663        /// <summary>
           664        ///     Asynchronously returns the last element of a sequence that satisfies a specified condition
           665        ///     or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/
           666        /// </summary>
           667        /// <remarks>
           668        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           669        ///     that any asynchronous operations have completed before calling another method on this context.
           670        /// </remarks>
           671        /// <param name="source">
           672        ///     An <see cref="IQueryable" /> to return the last element of.
           673        /// </param>
           674        /// <param name="predicate"> A function to test each element for a condition. </param>
           675        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           676        /// <param name="cancellationToken">
           677        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           678        /// </param>
           679        /// <returns>
           680        ///     A task that represents the asynchronous operation.
           681        ///     The task result contains <c>default</c> if <paramref name="source" />
           682        ///     is empty or if no element passes the test specified by <paramref name="predicate" /> ; otherwise, the la
           683        ///     element in <paramref name="source" /> that passes the test specified by <paramref name="predicate" />.
           684        /// </returns>
           685        [PublicAPI]
           686        public static Task<dynamic> LastOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellationT
           0687        {
           0688            Check.NotNull(source, nameof(source));
           0689            Check.NotNull(predicate, nameof(predicate));
           0690            Check.NotNull(cancellationToken, nameof(cancellationToken));
           691
           0692            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           693
           0694            return ExecuteAsync<dynamic>(_lastOrDefaultPredicate, source, Expression.Quote(lambda), cancellationToken);
           0695        }
           696        #endregion LastOrDefault
           697
           698        #region LongCount
           1699        private static readonly MethodInfo _longCount = GetMethod(nameof(Queryable.LongCount));
           700
           701        /// <summary>
           702        ///     Asynchronously returns the number of elements in a sequence.
           703        /// </summary>
           704        /// <remarks>
           705        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           706        ///     that any asynchronous operations have completed before calling another method on this context.
           707        /// </remarks>
           708        /// <param name="source">
           709        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           710        /// </param>
           711        /// <param name="cancellationToken">
           712        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           713        /// </param>
           714        /// <returns>
           715        ///     A task that represents the asynchronous operation.
           716        ///     The task result contains the number of elements in the input sequence.
           717        /// </returns>
           718        [PublicAPI]
           719        public static Task<long> LongCountAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = 
           0720        {
           0721            Check.NotNull(source, nameof(source));
           0722            Check.NotNull(cancellationToken, nameof(cancellationToken));
           723
           0724            return ExecuteAsync<long>(_longCount, source, cancellationToken);
           0725        }
           726
           1727        private static readonly MethodInfo _longCountPredicate = GetMethod(nameof(Queryable.LongCount), 1);
           728
           729        /// <summary>
           730        ///     Asynchronously returns the number of elements in a sequence that satisfy a condition.
           731        /// </summary>
           732        /// <remarks>
           733        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           734        ///     that any asynchronous operations have completed before calling another method on this context.
           735        /// </remarks>
           736        /// <param name="source">
           737        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           738        /// </param>
           739        /// <param name="predicate"> A function to test each element for a condition. </param>
           740        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           741        /// <returns>
           742        ///     A task that represents the asynchronous operation.
           743        ///     The task result contains the number of elements in the sequence that satisfy the condition in the predic
           744        ///     function.
           745        /// </returns>
           746        [PublicAPI]
           747        public static Task<long> LongCountAsync([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull
           0748        {
           0749            return LongCountAsync(source, default(CancellationToken), predicate, args);
           0750        }
           751
           752        /// <summary>
           753        ///     Asynchronously returns the number of elements in a sequence that satisfy a condition.
           754        /// </summary>
           755        /// <remarks>
           756        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           757        ///     that any asynchronous operations have completed before calling another method on this context.
           758        /// </remarks>
           759        /// <param name="source">
           760        ///     An <see cref="IQueryable" /> that contains the elements to be counted.
           761        /// </param>
           762        /// <param name="predicate"> A function to test each element for a condition. </param>
           763        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           764        /// <param name="cancellationToken">
           765        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           766        /// </param>
           767        /// <returns>
           768        ///     A task that represents the asynchronous operation.
           769        ///     The task result contains the number of elements in the sequence that satisfy the condition in the predic
           770        ///     function.
           771        /// </returns>
           772        [PublicAPI]
           773        public static Task<long> LongCountAsync([NotNull] this IQueryable source, CancellationToken cancellationToken, [
           0774        {
           0775            Check.NotNull(source, nameof(source));
           0776            Check.NotNull(predicate, nameof(predicate));
           0777            Check.NotNull(cancellationToken, nameof(cancellationToken));
           778
           0779            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           780
           0781            return ExecuteAsync<long>(_longCountPredicate, source, Expression.Quote(lambda), cancellationToken);
           0782        }
           783        #endregion LongCount
           784
           785        #region SingleOrDefaultAsync
           1786        private static readonly MethodInfo _singleOrDefault = GetMethod(nameof(Queryable.SingleOrDefault));
           787
           788        /// <summary>
           789        ///     Asynchronously returns the only element of a sequence that satisfies a specified condition or a default 
           790        ///     This method throws an exception if more than one element satisfies the condition.
           791        /// </summary>
           792        /// <remarks>
           793        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           794        ///     that any asynchronous operations have completed before calling another method on this context.
           795        /// </remarks>
           796        /// <param name="source">
           797        ///     An <see cref="IQueryable" /> to return the single element of.
           798        /// </param>
           799        /// <param name="cancellationToken">
           800        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           801        /// </param>
           802        /// <returns>
           803        ///     A task that represents the asynchronous operation. The task result contains the single element of the in
           804        /// </returns>
           805        [PublicAPI]
           806        public static Task<dynamic> SingleOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellatio
           4807        {
           4808            Check.NotNull(source, nameof(source));
           4809            Check.NotNull(cancellationToken, nameof(cancellationToken));
           810
           4811            return ExecuteAsync<dynamic>(_singleOrDefault, source, cancellationToken);
           4812        }
           813
           3814        private static readonly MethodInfo _singleOrDefaultPredicate = GetMethod(nameof(Queryable.SingleOrDefault), 1, m
           815
           816        /// <summary>
           817        ///     Asynchronously returns the only element of a sequence that satisfies a specified condition or a default 
           818        ///     This method throws an exception if more than one element satisfies the condition.
           819        /// </summary>
           820        /// <remarks>
           821        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           822        ///     that any asynchronous operations have completed before calling another method on this context.
           823        /// </remarks>
           824        /// <param name="source">
           825        ///     An <see cref="IQueryable" /> to return the single element of.
           826        /// </param>
           827        /// <param name="predicate"> A function to test each element for a condition. </param>
           828        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           829        /// <returns>
           830        ///     A task that represents the asynchronous operation. The task result contains the single element of the in
           831        /// </returns>
           832        [PublicAPI]
           833        public static Task<dynamic> SingleOrDefaultAsync([NotNull] this IQueryable source, [NotNull] string predicate, [
           2834        {
           2835            return SingleOrDefaultAsync(source, default(CancellationToken), predicate, args);
           2836        }
           837
           838        /// <summary>
           839        ///     Asynchronously returns the only element of a sequence that satisfies a specified condition or a default 
           840        ///     This method throws an exception if more than one element satisfies the condition.
           841        /// </summary>
           842        /// <remarks>
           843        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           844        ///     that any asynchronous operations have completed before calling another method on this context.
           845        /// </remarks>
           846        /// <param name="source">
           847        ///     An <see cref="IQueryable" /> to return the single element of.
           848        /// </param>
           849        /// <param name="predicate"> A function to test each element for a condition. </param>
           850        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           851        /// <param name="cancellationToken">
           852        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           853        /// </param>
           854        /// <returns>
           855        ///     A task that represents the asynchronous operation. The task result contains the single element of the in
           856        /// </returns>
           857        [PublicAPI]
           858        public static Task<dynamic> SingleOrDefaultAsync([NotNull] this IQueryable source, CancellationToken cancellatio
           2859        {
           2860            Check.NotNull(source, nameof(source));
           2861            Check.NotNull(predicate, nameof(predicate));
           2862            Check.NotNull(cancellationToken, nameof(cancellationToken));
           863
           2864            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, predicate, ar
           865
           2866            return ExecuteAsync<dynamic>(_singleOrDefaultPredicate, source, Expression.Quote(lambda), cancellationToken)
           2867        }
           868        #endregion SingleOrDefault
           869
           870        #region SumAsync
           871        /// <summary>
           872        ///     Asynchronously computes the sum of a sequence of values.
           873        /// </summary>
           874        /// <remarks>
           875        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           876        ///     that any asynchronous operations have completed before calling another method on this context.
           877        /// </remarks>
           878        /// <param name="source">
           879        ///     An <see cref="IQueryable" /> that contains the elements to be summed.
           880        /// </param>
           881        /// <param name="cancellationToken">
           882        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           883        /// </param>
           884        /// <returns>
           885        ///     A task that represents the asynchronous operation.
           886        ///     The task result contains sum of the values in the sequence.
           887        /// </returns>
           888        [PublicAPI]
           889        public static Task<dynamic> SumAsync([NotNull] this IQueryable source, CancellationToken cancellationToken = def
           2890        {
           2891            Check.NotNull(source, nameof(source));
           2892            Check.NotNull(cancellationToken, nameof(cancellationToken));
           893
           2894            var sum = GetMethod(nameof(Queryable.Sum), source.ElementType);
           895
           2896            return ExecuteDynamicAsync(sum, source, cancellationToken);
           2897        }
           898
           899        /// <summary>
           900        ///     Asynchronously computes the sum of a sequence of values.
           901        /// </summary>
           902        /// <remarks>
           903        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           904        ///     that any asynchronous operations have completed before calling another method on this context.
           905        /// </remarks>
           906        /// <param name="source">
           907        ///     An <see cref="IQueryable" /> that contains the elements to be summed.
           908        /// </param>
           909        /// <param name="selector"> A projection function to apply to each element. </param>
           910        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           911        /// <returns>
           912        ///     A task that represents the asynchronous operation.
           913        ///     The task result contains the number of elements in the sequence that satisfy the condition in the predic
           914        ///     function.
           915        /// </returns>
           916        [PublicAPI]
           917        public static Task<dynamic> SumAsync([NotNull] this IQueryable source, [NotNull] string selector, [CanBeNull] pa
           2918        {
           2919            return SumAsync(source, default(CancellationToken), selector, args);
           2920        }
           921
           922        /// <summary>
           923        ///     Asynchronously computes the sum of a sequence of values.
           924        /// </summary>
           925        /// <remarks>
           926        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           927        ///     that any asynchronous operations have completed before calling another method on this context.
           928        /// </remarks>
           929        /// <param name="source">
           930        ///     An <see cref="IQueryable" /> that contains the elements to be summed.
           931        /// </param>
           932        /// <param name="selector"> A projection function to apply to each element. </param>
           933        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           934        /// <param name="cancellationToken">
           935        ///     A <see cref="CancellationToken" /> to observe while waiting for the task to complete.
           936        /// </param>
           937        /// <returns>
           938        ///     A task that represents the asynchronous operation.
           939        ///     The task result contains the sum of the projected values.
           940        /// </returns>
           941        [PublicAPI]
           942        public static Task<dynamic> SumAsync([NotNull] this IQueryable source, CancellationToken cancellationToken, [Not
           2943        {
           2944            Check.NotNull(source, nameof(source));
           2945            Check.NotNull(selector, nameof(selector));
           2946            Check.NotNull(cancellationToken, nameof(cancellationToken));
           947
           2948            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(false, source.ElementType, null, selector, arg
           949
           2950            var sumSelector = GetMethod(nameof(Queryable.Sum), lambda.ReturnType, 1);
           951
           2952            return ExecuteDynamicAsync(sumSelector, source, Expression.Quote(lambda), cancellationToken);
           2953        }
           954        #endregion SumAsync
           955
           956        #region Private Helpers
           1957        private static readonly MethodInfo _executeAsyncMethod =
           1958                typeof(EntityFrameworkDynamicQueryableExtensions)
           1959#if NETSTANDARD || UAP10_0
           1960                .GetMethods(BindingFlags.Static | BindingFlags.NonPublic)
           1961                .Single(m => m.Name == nameof(ExecuteAsync) && m.GetParameters().Select(p => p.ParameterType).SequenceEq
           1962#else
           1963                .GetMethod(nameof(ExecuteAsync), BindingFlags.Static | BindingFlags.NonPublic, null, new[] { typeof(Meth
           964#endif
           965
           966        private static Task<dynamic> ExecuteDynamicAsync(MethodInfo operatorMethodInfo, IQueryable source, CancellationT
           2967        {
           2968            var executeAsyncMethod = _executeAsyncMethod.MakeGenericMethod(operatorMethodInfo.ReturnType);
           969
           2970            var task = (Task)executeAsyncMethod.Invoke(null, new object[] { operatorMethodInfo, source, cancellationToke
           4971            var castedTask = task.ContinueWith(t => (dynamic)t.GetType().GetProperty(nameof(Task<object>.Result)).GetVal
           972
           2973            return castedTask;
           2974        }
           975
           976        private static Task<TResult> ExecuteAsync<TResult>(MethodInfo operatorMethodInfo, IQueryable source, Cancellatio
           15977        {
           978#if EFCORE
           15979            var provider = source.Provider as IAsyncQueryProvider;
           980#else
           981            var provider = source.Provider as IDbAsyncQueryProvider;
           982#endif
           983
           15984            if (provider != null)
           15985            {
           15986                if (operatorMethodInfo.IsGenericMethod)
           12987                {
           12988                    operatorMethodInfo = operatorMethodInfo.MakeGenericMethod(source.ElementType);
           12989                }
           990
           991#if EFCORE_3X
           15992                source = CastSource(source, operatorMethodInfo);
           15993                var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression));
           15994                return ExecuteAsync<TResult>(provider, optimized, cancellationToken);
           995#else
           996                var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression));
           997
           998                return provider.ExecuteAsync<TResult>(optimized, cancellationToken);
           999#endif
           1000            }
           1001
           01002            throw new InvalidOperationException(Res.IQueryableProviderNotAsync);
           151003        }
           1004
           1005        private static Task<TResult> ExecuteAsync<TResult>(MethodInfo operatorMethodInfo, IQueryable source, LambdaExpre
           01006            => ExecuteAsync<TResult>(operatorMethodInfo, source, Expression.Quote(expression), cancellationToken);
           1007
           11008        private static readonly MethodInfo _executeAsyncMethodWithExpression =
           11009                typeof(EntityFrameworkDynamicQueryableExtensions)
           11010#if NETSTANDARD || UAP10_0
           11011                .GetMethods(BindingFlags.Static | BindingFlags.NonPublic)
           11012                .Single(m => m.Name == nameof(ExecuteAsync) && m.GetParameters().Select(p => p.ParameterType).SequenceEq
           11013#else
           11014                .GetMethod(nameof(ExecuteAsync), BindingFlags.Static | BindingFlags.NonPublic, null, new[] { typeof(Meth
           1015#endif
           1016
           1017        private static Task<dynamic> ExecuteDynamicAsync(MethodInfo operatorMethodInfo, IQueryable source, Expression ex
           21018        {
           21019            var executeAsyncMethod = _executeAsyncMethodWithExpression.MakeGenericMethod(operatorMethodInfo.ReturnType);
           1020
           21021            var task = (Task)executeAsyncMethod.Invoke(null, new object[] { operatorMethodInfo, source, expression, canc
           41022            var castedTask = task.ContinueWith(t => (dynamic)t.GetType().GetProperty(nameof(Task<object>.Result)).GetVal
           1023
           21024            return castedTask;
           21025        }
           1026
           1027        private static Task<TResult> ExecuteAsync<TResult>(MethodInfo operatorMethodInfo, IQueryable source, Expression 
           141028        {
           1029#if EFCORE
           141030            var provider = source.Provider as IAsyncQueryProvider;
           1031#else
           1032            var provider = source.Provider as IDbAsyncQueryProvider;
           1033#endif
           1034
           141035            if (provider != null)
           141036            {
           141037                operatorMethodInfo
           141038                    = operatorMethodInfo.GetGenericArguments().Length == 2
           141039                        ? operatorMethodInfo.MakeGenericMethod(source.ElementType, typeof(TResult))
           141040                        : operatorMethodInfo.MakeGenericMethod(source.ElementType);
           1041#if EFCORE_3X
           141042                source = CastSource(source, operatorMethodInfo);
           141043                var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, new[] { source.Expression, 
           141044                return ExecuteAsync<TResult>(provider, optimized, cancellationToken);
           1045#else
           1046                var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, new[] { source.Expression, 
           1047
           1048                return provider.ExecuteAsync<TResult>(optimized, cancellationToken);
           1049#endif
           1050            }
           1051
           01052            throw new InvalidOperationException(Res.IQueryableProviderNotAsync);
           141053        }
           1054
           1055        private static MethodInfo GetMethod<TResult>(string name, int parameterCount = 0, Func<MethodInfo, bool> predica
           01056            GetMethod(name, typeof(TResult), parameterCount, predicate);
           1057
           1058        private static MethodInfo GetMethod(string name, Type returnType, int parameterCount = 0, Func<MethodInfo, bool>
           141059            GetMethod(name, parameterCount, mi => (mi.ReturnType == returnType) && ((predicate == null) || predicate(mi)
           1060
           1061        private static MethodInfo GetMethod(
           1062            string name,
           1063            int parameterCount = 0,
           1064            Func<MethodInfo, bool> predicate = null) =>
           231065            typeof(Queryable)
           231066                .GetTypeInfo()
           231067                .GetDeclaredMethods(name)
           691068                .Where(mi => mi.GetParameters().Length == parameterCount + 1)
           541069                .First(mi => predicate == null || predicate(mi));
           1070
           1071#if EFCORE_3X
           1072        private static IQueryable CastSource(IQueryable source, MethodInfo operatorMethodInfo)
           291073        {
           291074            if (operatorMethodInfo.GetParameters()[0].ParameterType.IsGenericType &&
           291075                operatorMethodInfo.GetParameters()[0].ParameterType.GetGenericTypeDefinition() == typeof(IQueryable<>)
           291076                && operatorMethodInfo.GetParameters()[0].ParameterType.GetGenericArguments()[0] != source.Expression.Typ
           01077            {
           01078                source = source.Cast(operatorMethodInfo.GetParameters()[0].ParameterType.GetGenericArguments()[0]);
           01079            }
           1080
           291081            return source;
           291082        }
           1083
           1084        private static Task<TResult> ExecuteAsync<TResult>(IAsyncQueryProvider provider, Expression expression, Cancella
           291085        {
           291086            if (typeof(TResult) == typeof(object) && expression.Type != typeof(object))
           151087            {
           151088                var executeAsync = typeof(IAsyncQueryProvider).GetMethod("ExecuteAsync").MakeGenericMethod(typeof(Task<>
           151089                var task = (Task)executeAsync.Invoke(provider, new object[] { expression, cancellationToken });
           301090                return (Task<TResult>)(object)task.ContinueWith(x => (dynamic)x.GetType().GetProperty(nameof(Task<object
           1091            }
           1092            else
           141093            {
           141094                return provider.ExecuteAsync<Task<TResult>>(expression, cancellationToken);
           1095            }
           291096        }
           1097#endif
           1098
           1099        private static Expression OptimizeExpression(Expression expression)
           291100        {
           291101            if (ExtensibilityPoint.QueryOptimizer != null)
           291102            {
           291103                var optimized = ExtensibilityPoint.QueryOptimizer(expression);
           1104
           1105#if !(WINDOWS_APP45x || SILVERLIGHT)
           291106                if (optimized != expression)
           01107                {
           01108                    TraceSource.TraceEvent(TraceEventType.Verbose, 0, "Expression before : {0}", expression);
           01109                    TraceSource.TraceEvent(TraceEventType.Verbose, 0, "Expression after  : {0}", optimized);
           01110                }
           1111#endif
           291112                return optimized;
           1113            }
           1114
           01115            return expression;
           291116        }
           1117        #endregion Private Helpers
           1118    }
           1119}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -AllAsync(System.Linq.IQueryable,System.String,System.Object[])
          -AllAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[])
          -AnyAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -AnyAsync(System.Linq.IQueryable,System.String,System.Object[])
          -AnyAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[])
          -AverageAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -AverageAsync(System.Linq.IQueryable,System.String,System.Object[])
          -AverageAsync(System.Linq.IQueryable,System.String,System.Threading.CancellationToken,System.Object[])
          -CountAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -CountAsync(System.Linq.IQueryable,System.String,System.Object[])
          -CountAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -FirstAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -FirstAsync(System.Linq.IQueryable,System.String,System.Object[])
          -FirstAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -FirstOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -FirstOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[])
          -FirstOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -LastAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -LastAsync(System.Linq.IQueryable,System.String,System.Object[])
          -LastAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -LastOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -LastOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[])
          -LastOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -LongCountAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -LongCountAsync(System.Linq.IQueryable,System.String,System.Object[])
          -LongCountAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -SingleOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -SingleOrDefaultAsync(System.Linq.IQueryable,System.String,System.Object[])
          -SingleOrDefaultAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -SumAsync(System.Linq.IQueryable,System.Threading.CancellationToken)
          -SumAsync(System.Linq.IQueryable,System.String,System.Object[])
          -SumAsync(System.Linq.IQueryable,System.Threading.CancellationToken,System.String,System.Object[])
          -ExecuteDynamicAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Threading.CancellationToken)
          -ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Threading.CancellationToken)
          -ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression,System.Threading.CancellationToken)
          -ExecuteDynamicAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression,System.Threading.CancellationToken)
          -ExecuteAsync(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression,System.Threading.CancellationToken)
          -GetMethod(System.String,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>)
          -GetMethod(System.String,System.Type,System.Int32,System.Func`2<System.Reflection.MethodInfo,System.Boolean>)
          -CastSource(System.Linq.IQueryable,System.Reflection.MethodInfo)
          -ExecuteAsync(Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider,System.Linq.Expressions.Expression,System.Threading.CancellationToken)
          -OptimizeExpression(System.Linq.Expressions.Expression)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_LambdaExpressionExtensions.html b/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_LambdaExpressionExtensions.html deleted file mode 100644 index 0d7341be..00000000 --- a/report/coverlet/Microsoft.EntityFrameworkCore.DynamicLinq_LambdaExpressionExtensions.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -System.Linq.Expressions.LambdaExpressionExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Expressions.LambdaExpressionExtensions
          Assembly:Microsoft.EntityFrameworkCore.DynamicLinq
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\LambdaExpressionExtensions.cs
          Covered lines:0
          Uncovered lines:3
          Coverable lines:3
          Total lines:15
          Line coverage:0% (0 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:1
          Method coverage:0% (0 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetReturnType(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\LambdaExpressionExtensions.cs

          - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1// ReSharper disable once CheckNamespace
           2namespace System.Linq.Expressions
           3{
           4    internal static class LambdaExpressionExtensions
           5    {
           6        public static Type GetReturnType(this LambdaExpression lambdaExpression)
           07        {
           8#if !NET35
           09            return lambdaExpression.ReturnType;
           10#else
           11            return lambdaExpression.Body.Type;
           12#endif
           013        }
           14    }
           15}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_AbstractDynamicLinqCustomTypeProvider.html b/report/coverlet/System.Linq.Dynamic.Core_AbstractDynamicLinqCustomTypeProvider.html deleted file mode 100644 index cde1c9f6..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_AbstractDynamicLinqCustomTypeProvider.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\CustomTypeProviders\AbstractDynamicLinqCustomTypeProvider.cs
          Covered lines:48
          Uncovered lines:13
          Coverable lines:61
          Total lines:156
          Line coverage:78.6% (48 of 61)
          Covered branches:16
          Total branches:20
          Branch coverage:80% (16 of 20)
          Covered methods:4
          Total methods:4
          Method coverage:100% (4 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          FindTypesMarkedWithDynamicLinqTypeAttribute(...)100%11100%
          ResolveType(...)100%44100%
          ResolveTypeBySimpleName(...)62.5%8864.7%
          GetAssemblyTypesWithDynamicLinqTypeAttribute()87.5%8872%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\CustomTypeProviders\AbstractDynamicLinqCustomTypeProvider.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Collections.Generic;
           3using System.Linq.Dynamic.Core.Validation;
           4using System.Reflection;
           5
           6namespace System.Linq.Dynamic.Core.CustomTypeProviders
           7{
           8    /// <summary>
           9    /// The abstract DynamicLinqCustomTypeProvider which is used by the DefaultDynamicLinqCustomTypeProvider and can be 
           10    /// </summary>
           11    public abstract class AbstractDynamicLinqCustomTypeProvider
           12    {
           13        /// <summary>
           14        /// Finds the unique types marked with DynamicLinqTypeAttribute.
           15        /// </summary>
           16        /// <param name="assemblies">The assemblies to process.</param>
           17        /// <returns><see cref="IEnumerable{Type}" /></returns>
           18        protected IEnumerable<Type> FindTypesMarkedWithDynamicLinqTypeAttribute([NotNull] IEnumerable<Assembly> assembli
           8219        {
           8220            Check.NotNull(assemblies, nameof(assemblies));
           21#if !NET35
           1894522            assemblies = assemblies.Where(a => !a.IsDynamic);
           23#endif
           8224            return GetAssemblyTypesWithDynamicLinqTypeAttribute(assemblies).Distinct().ToArray();
           8225        }
           26
           27        /// <summary>
           28        /// Resolve any type which is registered in the current application domain.
           29        /// </summary>
           30        /// <param name="assemblies">The assemblies to inspect.</param>
           31        /// <param name="typeName">The typename to resolve.</param>
           32        /// <returns>A resolved <see cref="Type"/> or null when not found.</returns>
           33        protected Type ResolveType([NotNull] IEnumerable<Assembly> assemblies, [NotNull] string typeName)
           3334        {
           3335            Check.NotNull(assemblies, nameof(assemblies));
           3336            Check.NotEmpty(typeName, nameof(typeName));
           37
           604238            foreach (var assembly in assemblies)
           298539            {
           298540                Type resolvedType = assembly.GetType(typeName, false, true);
           298541                if (resolvedType != null)
           2742                {
           2743                    return resolvedType;
           44                }
           295845            }
           46
           647            return null;
           3348        }
           49
           50        /// <summary>
           51        /// Resolve a type by the simple name which is registered in the current application domain.
           52        /// </summary>
           53        /// <param name="assemblies">The assemblies to inspect.</param>
           54        /// <param name="simpleTypeName">The simple typename to resolve.</param>
           55        /// <returns>A resolved <see cref="Type"/> or null when not found.</returns>
           56        protected Type ResolveTypeBySimpleName([NotNull] IEnumerable<Assembly> assemblies, [NotNull] string simpleTypeNa
           157        {
           158            Check.NotNull(assemblies, nameof(assemblies));
           159            Check.NotEmpty(simpleTypeName, nameof(simpleTypeName));
           60
           48161            foreach (var assembly in assemblies)
           23962            {
           2585363                var fullNames = assembly.GetTypes().Select(t => t.FullName).Distinct();
           2585364                var firstMatchingFullname = fullNames.FirstOrDefault(fn => fn.EndsWith($".{simpleTypeName}"));
           65
           23966                if (firstMatchingFullname != null)
           067                {
           068                    Type resolvedType = assembly.GetType(firstMatchingFullname, false, true);
           069                    if (resolvedType != null)
           070                    {
           071                        return resolvedType;
           72                    }
           073                }
           23974            }
           75
           176            return null;
           177        }
           78
           79#if (WINDOWS_APP || UAP10_0 || NETSTANDARD)
           80        /// <summary>
           81        /// Gets the assembly types annotated with <see cref="DynamicLinqTypeAttribute"/> in an Exception friendly way.
           82        /// </summary>
           83        /// <param name="assemblies">The assemblies to process.</param>
           84        /// <returns><see cref="IEnumerable{Type}" /></returns>
           85        protected IEnumerable<Type> GetAssemblyTypesWithDynamicLinqTypeAttribute([NotNull] IEnumerable<Assembly> assembl
           86        {
           87            Check.NotNull(assemblies, nameof(assemblies));
           88
           89            foreach (var assembly in assemblies)
           90            {
           91                Type[] definedTypes = null;
           92
           93                try
           94                {
           95                    definedTypes = assembly.ExportedTypes.Where(t => t.GetTypeInfo().IsDefined(typeof(DynamicLinqTypeAtt
           96                }
           97                catch (ReflectionTypeLoadException reflectionTypeLoadException)
           98                {
           99                    definedTypes = reflectionTypeLoadException.Types;
           100                }
           101                catch
           102                {
           103                    // Ignore all other exceptions
           104                }
           105
           106                if (definedTypes != null && definedTypes.Length > 0)
           107                {
           108                    foreach (var definedType in definedTypes)
           109                    {
           110                        yield return definedType;
           111                    }
           112                }
           113            }
           114        }
           115#else
           116        /// <summary>
           117        /// Gets the assembly types annotated with <see cref="DynamicLinqTypeAttribute"/> in an Exception friendly way.
           118        /// </summary>
           119        /// <param name="assemblies">The assemblies to process.</param>
           120        /// <returns><see cref="IEnumerable{Type}" /></returns>
           121        protected IEnumerable<Type> GetAssemblyTypesWithDynamicLinqTypeAttribute([NotNull] IEnumerable<Assembly> assembl
           82122        {
           82123            Check.NotNull(assemblies, nameof(assemblies));
           124
           56187125            foreach (var assembly in assemblies.Where(a => !a.GlobalAssemblyCache)) // Skip System DLL's
           18647126            {
           18647127                Type[] definedTypes = null;
           128
           129                try
           18647130                {
           18647131                    definedTypes = assembly
           18647132                        .GetExportedTypes()
           678171133                        .Where(t => t.IsDefined(typeof(DynamicLinqTypeAttribute), false))
           18647134                        .ToArray();
           18647135                }
           0136                catch (ReflectionTypeLoadException reflectionTypeLoadException)
           0137                {
           0138                    definedTypes = reflectionTypeLoadException.Types;
           0139                }
           0140                catch
           0141                {
           142                    // Ignore all other exceptions
           0143                }
           144
           18647145                if (definedTypes != null && definedTypes.Length > 0)
           161146                {
           1133147                    foreach (var definedType in definedTypes)
           325148                    {
           325149                        yield return definedType;
           325150                    }
           161151                }
           18647152            }
           82153        }
           154#endif
           155    }
           156}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_AssemblyBuilderFactory.html b/report/coverlet/System.Linq.Dynamic.Core_AssemblyBuilderFactory.html deleted file mode 100644 index d614ef71..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_AssemblyBuilderFactory.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.AssemblyBuilderFactory - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.AssemblyBuilderFactory
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\AssemblyBuilderFactory.cs
          Covered lines:3
          Uncovered lines:0
          Coverable lines:3
          Total lines:25
          Line coverage:100% (3 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          DefineDynamicAssembly(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\AssemblyBuilderFactory.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if !UAP10_0
           2using System.Reflection;
           3using System.Reflection.Emit;
           4
           5namespace System.Linq.Dynamic.Core
           6{
           7    internal static class AssemblyBuilderFactory
           8    {
           9        /// <summary>
           10        /// Defines a dynamic assembly that has the specified name and access rights.
           11        /// </summary>
           12        /// <param name="name">The name of the assembly.</param>
           13        /// <param name="access">The access rights of the assembly.</param>
           14        /// <returns>An object that represents the new assembly.</returns>
           15        public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access)
           116        {
           17#if (NET35 || NET40 || SILVERLIGHT)
           18            return AppDomain.CurrentDomain.DefineDynamicAssembly(name, access);
           19#else
           120            return AssemblyBuilder.DefineDynamicAssembly(name, access);
           21#endif
           122        }
           23    }
           24}
           25#endif
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_Check.html b/report/coverlet/System.Linq.Dynamic.Core_Check.html deleted file mode 100644 index 5fcee742..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_Check.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Validation.Check - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Validation.Check
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\Check.cs
          Covered lines:33
          Uncovered lines:14
          Coverable lines:47
          Total lines:136
          Line coverage:70.2% (33 of 47)
          Covered branches:12
          Total branches:16
          Branch coverage:75% (12 of 16)
          Covered methods:4
          Total methods:5
          Method coverage:80% (4 of 5)
          -

          Metrics

          - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          Condition(...)50%2262.5%
          NotNull(...)100%22100%
          NotNull(...)0%220%
          NotEmpty(...)100%66100%
          HasNoNulls(...)75%4462.5%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\Check.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1// Copyright (c) .NET Foundation. All rights reserved.
           2// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
           3
           4using System.Collections.Generic;
           5using System.Diagnostics;
           6using JetBrains.Annotations;
           7// using System.Reflection;
           8
           9// Copied from https://github.com/aspnet/EntityFramework/blob/dev/src/Shared/Check.cs
           10namespace System.Linq.Dynamic.Core.Validation
           11{
           12    [DebuggerStepThrough]
           13    internal static class Check
           14    {
           15        public static T Condition<T>([ValidatedNotNull, NoEnumeration] T value, [ValidatedNotNull, NotNull] Predicate<T>
           5216        {
           5217            NotNull(condition, nameof(condition));
           18
           5219            if (!condition(value))
           020            {
           021                NotEmpty(parameterName, nameof(parameterName));
           22
           023                throw new ArgumentOutOfRangeException(parameterName);
           24            }
           25
           5226            return value;
           5227        }
           28
           29        [ContractAnnotation("value:null => halt")]
           30        public static T NotNull<T>([ValidatedNotNull, NoEnumeration] T value, [InvokerParameterName, ValidatedNotNull, N
           3574231        {
           3574232            if (ReferenceEquals(value, null))
           833            {
           834                NotEmpty(parameterName, nameof(parameterName));
           35
           836                throw new ArgumentNullException(parameterName);
           37            }
           38
           3573439            return value;
           3573440        }
           41
           42        [ContractAnnotation("value:null => halt")]
           43        public static T NotNull<T>(
           44            [NoEnumeration] T value,
           45            [InvokerParameterName, ValidatedNotNull, NotNull] string parameterName,
           46            [ValidatedNotNull, NotNull] string propertyName)
           047        {
           048            if (ReferenceEquals(value, null))
           049            {
           050                NotEmpty(parameterName, nameof(parameterName));
           051                NotEmpty(propertyName, nameof(propertyName));
           52
           053                throw new ArgumentException(CoreStrings.ArgumentPropertyNull(propertyName, parameterName));
           54            }
           55
           056            return value;
           057        }
           58
           59        //[ContractAnnotation("value:null => halt")]
           60        //public static IList<T> NotEmpty<T>(IList<T> value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           61        //{
           62        //    NotNull(value, parameterName);
           63
           64        //    if (value.Count == 0)
           65        //    {
           66        //        NotEmpty(parameterName, nameof(parameterName));
           67
           68        //        throw new ArgumentException(CoreStrings.CollectionArgumentIsEmpty(parameterName));
           69        //    }
           70
           71        //    return value;
           72        //}
           73
           74        [ContractAnnotation("value:null => halt")]
           75        public static string NotEmpty(string value, [InvokerParameterName, ValidatedNotNull, NotNull] string parameterNa
           378076        {
           378077            Exception e = null;
           378078            if (ReferenceEquals(value, null))
           679            {
           680                e = new ArgumentNullException(parameterName);
           681            }
           377482            else if (value.Trim().Length == 0)
           1883            {
           1884                e = new ArgumentException(CoreStrings.ArgumentIsEmpty(parameterName));
           1885            }
           86
           378087            if (e != null)
           2488            {
           2489                NotEmpty(parameterName, nameof(parameterName));
           90
           2491                throw e;
           92            }
           93
           375694            return value;
           375695        }
           96
           97        //public static string NullButNotEmpty(string value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           98        //{
           99        //    if (!ReferenceEquals(value, null) && value.Length == 0)
           100        //    {
           101        //        NotEmpty(parameterName, nameof(parameterName));
           102
           103        //        throw new ArgumentException(CoreStrings.ArgumentIsEmpty(parameterName));
           104        //    }
           105
           106        //    return value;
           107        //}
           108
           109        public static IList<T> HasNoNulls<T>(IList<T> value, [InvokerParameterName, ValidatedNotNull, NotNull] string pa
           110            where T : class
           844111        {
           844112            NotNull(value, parameterName);
           113
           1730114            if (value.Any(e => e == null))
           0115            {
           0116                NotEmpty(parameterName, nameof(parameterName));
           117
           0118                throw new ArgumentException(parameterName);
           119            }
           120
           844121            return value;
           844122        }
           123
           124        //public static Type ValidEntityType(Type value, [InvokerParameterName, ValidatedNotNull, NotNull] string parame
           125        //{
           126        //    if (!value.GetTypeInfo().IsClass)
           127        //    {
           128        //        NotEmpty(parameterName, nameof(parameterName));
           129
           130        //        throw new ArgumentException(CoreStrings.InvalidEntityType(value, parameterName));
           131        //    }
           132
           133        //    return value;
           134        //}
           135    }
           136}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionHelper.html b/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionHelper.html deleted file mode 100644 index a14dc0ee..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionHelper.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ConstantExpressionHelper.cs
          Covered lines:14
          Uncovered lines:0
          Coverable lines:14
          Total lines:29
          Line coverage:100% (14 of 14)
          Covered branches:2
          Total branches:2
          Branch coverage:100% (2 of 2)
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          Metrics

          - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          TryGetText(...)100%11100%
          CreateLiteral(...)100%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ConstantExpressionHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Concurrent;
           2using System.Linq.Expressions;
           3
           4namespace System.Linq.Dynamic.Core.Parser
           5{
           6    internal static class ConstantExpressionHelper
           7    {
           18        private static readonly ConcurrentDictionary<object, Expression> Expressions = new ConcurrentDictionary<object, 
           19        private static readonly ConcurrentDictionary<Expression, string> Literals = new ConcurrentDictionary<Expression,
           10
           11        public static bool TryGetText(Expression expression, out string text)
           91912        {
           91913            return Literals.TryGetValue(expression, out text);
           91914        }
           15
           16        public static Expression CreateLiteral(object value, string text)
           54217        {
           54218            if (!Expressions.ContainsKey(value))
           14019            {
           14020                ConstantExpression constantExpression = Expression.Constant(value);
           21
           14022                Expressions.TryAdd(value, constantExpression);
           14023                Literals.TryAdd(constantExpression, text);
           14024            }
           25
           54226            return Expressions[value];
           54227        }
           28    }
           29}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionWrapper.html b/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionWrapper.html deleted file mode 100644 index 67a136db..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ConstantExpressionWrapper.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ConstantExpressionWrapper.cs
          Covered lines:81
          Uncovered lines:99
          Coverable lines:180
          Total lines:199
          Line coverage:45% (81 of 180)
          Covered branches:46
          Total branches:88
          Branch coverage:52.2% (46 of 88)
          Covered methods:2
          Total methods:2
          Method coverage:100% (2 of 2)
          -

          Metrics

          - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          Wrap(...)52.27%888843.75%
          WrappedConstant(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ConstantExpressionWrapper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core.Parser
           5{
           6    /// <summary>
           7    /// Based on gblog by graeme-hill. https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139
           8    /// </summary>
           9    internal class ConstantExpressionWrapper : IConstantExpressionWrapper
           10    {
           11        public void Wrap(ref Expression expression)
           3012        {
           3013            if (expression is ConstantExpression constantExpression)
           1914            {
           1915                if (constantExpression.Type == typeof(bool))
           116                {
           117                    expression = WrappedConstant((bool)constantExpression.Value);
           118                }
           1819                else if (constantExpression.Type == typeof(bool?))
           020                {
           021                    expression = WrappedConstant((bool?)constantExpression.Value);
           022                }
           1823                else if (constantExpression.Type == typeof(char))
           124                {
           125                    expression = WrappedConstant((char)constantExpression.Value);
           126                }
           1727                else if (constantExpression.Type == typeof(char?))
           028                {
           029                    expression = WrappedConstant((char?)constantExpression.Value);
           030                }
           1731                else if (constantExpression.Type == typeof(byte))
           132                {
           133                    expression = WrappedConstant((byte)constantExpression.Value);
           134                }
           1635                else if (constantExpression.Type == typeof(byte?))
           036                {
           037                    expression = WrappedConstant((byte?)constantExpression.Value);
           038                }
           1639                else if (constantExpression.Type == typeof(sbyte))
           140                {
           141                    expression = WrappedConstant((sbyte)constantExpression.Value);
           142                }
           1543                else if (constantExpression.Type == typeof(string))
           244                {
           245                    expression = WrappedConstant((string)constantExpression.Value);
           246                }
           1347                else if (constantExpression.Type == typeof(float))
           148                {
           149                    expression = WrappedConstant((float)constantExpression.Value);
           150                }
           1251                else if (constantExpression.Type == typeof(float?))
           052                {
           053                    expression = WrappedConstant((float?)constantExpression.Value);
           054                }
           1255                else if (constantExpression.Type == typeof(decimal))
           056                {
           057                    expression = WrappedConstant((decimal)constantExpression.Value);
           058                }
           1259                else if (constantExpression.Type == typeof(decimal?))
           060                {
           061                    expression = WrappedConstant((decimal?)constantExpression.Value);
           062                }
           1263                else if (constantExpression.Type == typeof(double))
           264                {
           265                    expression = WrappedConstant((double)constantExpression.Value);
           266                }
           1067                else if (constantExpression.Type == typeof(double?))
           068                {
           069                    expression = WrappedConstant((double?)constantExpression.Value);
           070                }
           1071                else if (constantExpression.Type == typeof(long))
           172                {
           173                    expression = WrappedConstant((long)constantExpression.Value);
           174                }
           975                else if (constantExpression.Type == typeof(long?))
           076                {
           077                    expression = WrappedConstant((long?)constantExpression.Value);
           078                }
           979                else if (constantExpression.Type == typeof(ulong))
           180                {
           181                    expression = WrappedConstant((ulong)constantExpression.Value);
           182                }
           883                else if (constantExpression.Type == typeof(ulong?))
           084                {
           085                    expression = WrappedConstant((ulong?)constantExpression.Value);
           086                }
           887                else if (constantExpression.Type == typeof(int))
           488                {
           489                    expression = WrappedConstant((int)constantExpression.Value);
           490                }
           491                else if (constantExpression.Type == typeof(int?))
           092                {
           093                    expression = WrappedConstant((int?)constantExpression.Value);
           094                }
           495                else if (constantExpression.Type == typeof(uint))
           196                {
           197                    expression = WrappedConstant((uint)constantExpression.Value);
           198                }
           399                else if (constantExpression.Type == typeof(uint?))
           0100                {
           0101                    expression = WrappedConstant((uint?)constantExpression.Value);
           0102                }
           3103                else if (constantExpression.Type == typeof(short))
           1104                {
           1105                    expression = WrappedConstant((short)constantExpression.Value);
           1106                }
           2107                else if (constantExpression.Type == typeof(short?))
           0108                {
           0109                    expression = WrappedConstant((short?)constantExpression.Value);
           0110                }
           2111                else if (constantExpression.Type == typeof(ushort))
           1112                {
           1113                    expression = WrappedConstant((ushort)constantExpression.Value);
           1114                }
           1115                else if (constantExpression.Type == typeof(ushort?))
           0116                {
           0117                    expression = WrappedConstant((ushort?)constantExpression.Value);
           0118                }
           1119                else if (constantExpression.Type == typeof(Guid))
           0120                {
           0121                    expression = WrappedConstant((Guid)constantExpression.Value);
           0122                }
           1123                else if (constantExpression.Type == typeof(Guid?))
           0124                {
           0125                    expression = WrappedConstant((Guid?)constantExpression.Value);
           0126                }
           1127                else if (constantExpression.Type == typeof(DateTime))
           1128                {
           1129                    expression = WrappedConstant((DateTime)constantExpression.Value);
           1130                }
           0131                else if (constantExpression.Type == typeof(DateTime?))
           0132                {
           0133                    expression = WrappedConstant((DateTime?)constantExpression.Value);
           0134                }
           0135                else if (constantExpression.Type == typeof(DateTimeOffset))
           0136                {
           0137                    expression = WrappedConstant((DateTimeOffset)constantExpression.Value);
           0138                }
           0139                else if (constantExpression.Type == typeof(DateTimeOffset?))
           0140                {
           0141                    expression = WrappedConstant((DateTimeOffset?)constantExpression.Value);
           0142                }
           0143                else if (constantExpression.Type == typeof(TimeSpan))
           0144                {
           0145                    expression = WrappedConstant((TimeSpan)constantExpression.Value);
           0146                }
           0147                else if (constantExpression.Type == typeof(TimeSpan?))
           0148                {
           0149                    expression = WrappedConstant((TimeSpan?)constantExpression.Value);
           0150                }
           151
           19152                return;
           153            }
           154
           11155            if (expression is NewExpression newExpression)
           0156            {
           0157                if (newExpression.Type == typeof(Guid))
           0158                {
           0159                    expression = WrappedConstant(Expression.Lambda<Func<Guid>>(newExpression).Compile()());
           0160                }
           0161                else if (newExpression.Type == typeof(Guid?))
           0162                {
           0163                    expression = WrappedConstant(Expression.Lambda<Func<Guid?>>(newExpression).Compile()());
           0164                }
           0165                else if (newExpression.Type == typeof(DateTime))
           0166                {
           0167                    expression = WrappedConstant(Expression.Lambda<Func<DateTime>>(newExpression).Compile()());
           0168                }
           0169                else if (newExpression.Type == typeof(DateTime?))
           0170                {
           0171                    expression = WrappedConstant(Expression.Lambda<Func<DateTime?>>(newExpression).Compile()());
           0172                }
           0173                else if (newExpression.Type == typeof(DateTimeOffset))
           0174                {
           0175                    expression = WrappedConstant(Expression.Lambda<Func<DateTimeOffset>>(newExpression).Compile()());
           0176                }
           0177                else if (newExpression.Type == typeof(DateTimeOffset?))
           0178                {
           0179                    expression = WrappedConstant(Expression.Lambda<Func<DateTimeOffset?>>(newExpression).Compile()());
           0180                }
           0181                else if (newExpression.Type == typeof(TimeSpan))
           0182                {
           0183                    expression = WrappedConstant(Expression.Lambda<Func<TimeSpan>>(newExpression).Compile()());
           0184                }
           0185                else if (newExpression.Type == typeof(TimeSpan?))
           0186                {
           0187                    expression = WrappedConstant(Expression.Lambda<Func<TimeSpan?>>(newExpression).Compile()());
           0188                }
           0189            }
           30190        }
           191
           192        private static MemberExpression WrappedConstant<TValue>(TValue value)
           19193        {
           19194            var wrapper = new WrappedValue<TValue>(value);
           195
           19196            return Expression.Property(Expression.Constant(wrapper), typeof(WrappedValue<TValue>).GetProperty("Value"));
           19197        }
           198    }
           199}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_Constants.html b/report/coverlet/System.Linq.Dynamic.Core_Constants.html deleted file mode 100644 index 1ebbc6a2..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_Constants.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.Constants - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.Constants
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\Constants.cs
          Covered lines:3
          Uncovered lines:0
          Coverable lines:3
          Total lines:12
          Line coverage:100% (3 of 3)
          Covered branches:2
          Total branches:2
          Branch coverage:100% (2 of 2)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          IsNull(...)100%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\Constants.cs

          - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2
           3namespace System.Linq.Dynamic.Core.Parser
           4{
           5    internal static class Constants
           6    {
           7        public static bool IsNull(Expression exp)
           12888        {
           12889            return exp is ConstantExpression cExp && cExp.Value == null;
           128810        }
           11    }
           12}
          -
          -
          - -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_CoreStrings.html b/report/coverlet/System.Linq.Dynamic.Core_CoreStrings.html deleted file mode 100644 index 9cea507d..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_CoreStrings.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Validation.CoreStrings - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Validation.CoreStrings
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\CoreStrings.cs
          Covered lines:3
          Uncovered lines:9
          Coverable lines:12
          Total lines:41
          Line coverage:25% (3 of 12)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:4
          Method coverage:25% (1 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ArgumentPropertyNull(...)100%110%
          ArgumentIsEmpty(...)100%11100%
          InvalidEntityType(...)100%110%
          CollectionArgumentIsEmpty(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Validation\CoreStrings.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Globalization;
           2using JetBrains.Annotations;
           3
           4// copied from https://github.com/aspnet/EntityFramework/blob/dev/src/Microsoft.EntityFrameworkCore/Properties/CoreStrin
           5namespace System.Linq.Dynamic.Core.Validation
           6{
           7    internal static class CoreStrings
           8    {
           9        /// <summary>
           10        /// The property '{property}' of the argument '{argument}' cannot be null.
           11        /// </summary>
           12        public static string ArgumentPropertyNull([CanBeNull] string property, [CanBeNull] string argument)
           013        {
           014            return string.Format(CultureInfo.CurrentCulture, "The property '{0}' of the argument '{1}' cannot be null.",
           015        }
           16
           17        /// <summary>
           18        /// The string argument '{argumentName}' cannot be empty.
           19        /// </summary>
           20        public static string ArgumentIsEmpty([CanBeNull] string argumentName)
           1821        {
           1822            return string.Format(CultureInfo.CurrentCulture, "The string argument '{0}' cannot be empty.", argumentName)
           1823        }
           24
           25        /// <summary>
           26        /// The entity type '{type}' provided for the argument '{argumentName}' must be a reference type.
           27        /// </summary>
           28        public static string InvalidEntityType([CanBeNull] Type type, [CanBeNull] string argumentName)
           029        {
           030            return string.Format(CultureInfo.CurrentCulture, "The entity type '{0}' provided for the argument '{1}' must
           031        }
           32
           33        /// <summary>
           34        /// The collection argument '{argumentName}' must contain at least one element.
           35        /// </summary>
           36        public static string CollectionArgumentIsEmpty([CanBeNull] string argumentName)
           037        {
           038            return string.Format(CultureInfo.CurrentCulture, "The collection argument '{0}' must contain at least one el
           039        }
           40    }
           41}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_CustomDateTimeConverter.html b/report/coverlet/System.Linq.Dynamic.Core_CustomDateTimeConverter.html deleted file mode 100644 index 57105e44..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_CustomDateTimeConverter.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\TypeConverters\CustomDateTimeConverter.cs
          Covered lines:4
          Uncovered lines:0
          Coverable lines:4
          Total lines:23
          Line coverage:100% (4 of 4)
          Covered branches:1
          Total branches:2
          Branch coverage:50% (1 of 2)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ConvertFrom(...)50%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\TypeConverters\CustomDateTimeConverter.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.ComponentModel;
           2using System.Globalization;
           3
           4namespace System.Linq.Dynamic.Core.TypeConverters
           5{
           6    internal class CustomDateTimeConverter : DateTimeOffsetConverter
           7    {
           8        /// <summary>
           9        /// Converts the specified object to a <see cref="DateTime"></see>.
           10        /// </summary>
           11        /// <param name="context">The date format context.</param>
           12        /// <param name="culture">The date culture.</param>
           13        /// <param name="value">The object to be converted.</param>
           14        /// <returns>A <see cref="Nullable{DateTime}"></see> that represents the specified object.</returns>
           15        /// <exception cref="NotSupportedException">The conversion cannot be performed.</exception>
           16        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
           417        {
           418            var dateTimeOffset = base.ConvertFrom(context, culture, value) as DateTimeOffset?;
           19
           420            return dateTimeOffset?.UtcDateTime;
           421        }
           22    }
           23}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_CustomIntrospectionExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_CustomIntrospectionExtensions.html deleted file mode 100644 index 840b9564..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_CustomIntrospectionExtensions.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -System.Reflection.CustomIntrospectionExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Reflection.CustomIntrospectionExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomIntrospectionExtensions.cs
          Covered lines:3
          Uncovered lines:0
          Coverable lines:3
          Total lines:40
          Line coverage:100% (3 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetGenericTypeArguments(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomIntrospectionExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq;
           2
           3// ReSharper disable once CheckNamespace
           4namespace System.Reflection
           5{
           6    /// <summary>
           7    /// https://github.com/castleproject/Core/blob/netcore/src/Castle.Core/Compatibility/IntrospectionExtensions.cs
           8    /// </summary>
           9  internal static class CustomIntrospectionExtensions
           10    {
           11#if NET35 || NET40 || PORTABLE || SILVERLIGHT || WPSL
           12        // This allows us to use the new reflection API which separates Type and TypeInfo
           13        // while still supporting .NET 3.5 and 4.0. This class matches the API of the same
           14        // class in .NET 4.5+, and so is only needed on .NET Framework versions before that.
           15        //
           16        // Return the System.Type for now, we will probably need to create a TypeInfo class
           17        // which inherits from Type like .NET 4.5+ and implement the additional methods and
           18        // properties.
           19        public static Type GetTypeInfo(this Type type)
           20        {
           21            return type;
           22        }
           23
           24        public static Type[] GetGenericTypeArguments(this Type type)
           25        {
           26            return type.GetGenericArguments();
           27        }
           28
           29        public static MethodInfo[] GetDeclaredMethods(this Type type, string name)
           30        {
           31            return type.GetMethods().Where(m => m.Name == name).ToArray();
           32        }
           33#else
           34        public static Type[] GetGenericTypeArguments(this TypeInfo typeInfo)
           419135        {
           419136            return typeInfo.GenericTypeArguments;
           419137        }
           38#endif
           39    }
           40}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_CustomTypeBuilderExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_CustomTypeBuilderExtensions.html deleted file mode 100644 index 8f30c8f4..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_CustomTypeBuilderExtensions.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -System.Reflection.CustomTypeBuilderExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Reflection.CustomTypeBuilderExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomTypeBuilderExtensions.cs
          Covered lines:0
          Uncovered lines:12
          Coverable lines:12
          Total lines:35
          Line coverage:0% (0 of 12)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:4
          Method coverage:0% (0 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          CreateType(...)100%110%
          DefineProperty(...)100%110%
          AsType(...)100%110%
          AsType(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\CustomTypeBuilderExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Reflection.Emit;
           2
           3// ReSharper disable once CheckNamespace
           4namespace System.Reflection
           5{
           6    internal static class CustomTypeBuilderExtensions
           7    {
           8#if !(NET35 || NET40 || SILVERLIGHT || WPSL || UAP10_0)
           9        public static Type CreateType(this TypeBuilder tb)
           010        {
           011            return tb.CreateTypeInfo().AsType();
           012        }
           13#endif
           14
           15#if NET35 || NET40 || SILVERLIGHT || WPSL || NETCOREAPP || NETSTANDARD2_1
           16        public static PropertyBuilder DefineProperty(this TypeBuilder tb, string name, PropertyAttributes attributes, Ca
           017        {
           018            return tb.DefineProperty(name, attributes, returnType, parameterTypes);
           019        }
           20
           21        // https://github.com/castleproject/Core/blob/netcore/src/Castle.Core/Compatibility/CustomTypeBuilderExtensions.
           22        // TypeBuilder and GenericTypeParameterBuilder no longer inherit from Type but TypeInfo,
           23        // so there is now an AsType method to get the Type which we are providing here to shim to itself.
           24        public static Type AsType(this TypeBuilder builder)
           025        {
           026            return builder;
           027        }
           28
           29        public static Type AsType(this GenericTypeParameterBuilder builder)
           030        {
           031            return builder;
           032        }
           33#endif
           34    }
           35}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DefaultAssemblyHelper.html b/report/coverlet/System.Linq.Dynamic.Core_DefaultAssemblyHelper.html deleted file mode 100644 index 47256dd7..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DefaultAssemblyHelper.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DefaultAssemblyHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DefaultAssemblyHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DefaultAssemblyHelper.cs
          Covered lines:13
          Uncovered lines:3
          Coverable lines:16
          Total lines:39
          Line coverage:81.2% (13 of 16)
          Covered branches:2
          Total branches:2
          Branch coverage:100% (2 of 2)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetAssemblies()100%2281.25%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DefaultAssemblyHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.IO;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core
           5{
           6    internal class DefaultAssemblyHelper : IAssemblyHelper
           7    {
           8        public Assembly[] GetAssemblies()
           1139        {
           10#if WINDOWS_APP || UAP10_0 || NETSTANDARD || WPSL
           11            throw new NotSupportedException();
           12#elif NET35
           13
           14            return AppDomain.CurrentDomain.GetAssemblies();
           15#else
           16            // https://stackoverflow.com/a/2384679/255966
           11317            var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
           5240718            var loadedPaths = loadedAssemblies.Where(a => !a.IsDynamic).Select(a => a.Location).ToArray();
           19
           11320            var referencedPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
           723221            var pathsToLoad = referencedPaths.Where(r => !loadedPaths.Contains(r, StringComparer.InvariantCultureIgnoreC
           22
           169523            foreach (var path in pathsToLoad)
           67824            {
           25                try
           67826                {
           67827                    loadedAssemblies.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path)));
           67828                }
           029                catch
           030                {
           31                    // Ignore
           032                }
           67833            }
           34
           11335            return loadedAssemblies.ToArray();
           36#endif
           11337        }
           38    }
           39}
          -
          -
          -
          -

          Methods/Properties

          -GetAssemblies()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DefaultDynamicLinqCustomTypeProvider.html b/report/coverlet/System.Linq.Dynamic.Core_DefaultDynamicLinqCustomTypeProvider.html deleted file mode 100644 index 56500023..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DefaultDynamicLinqCustomTypeProvider.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\CustomTypeProviders\DefaultDynamicLinqCustomTypeProvider.cs
          Covered lines:50
          Uncovered lines:2
          Coverable lines:52
          Total lines:109
          Line coverage:96.1% (50 of 52)
          Covered branches:10
          Total branches:12
          Branch coverage:83.3% (10 of 12)
          Covered methods:7
          Total methods:7
          Method coverage:100% (7 of 7)
          -

          Metrics

          - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          GetCustomTypes()75%4490%
          GetExtensionMethods()75%4490%
          ResolveType(...)100%11100%
          ResolveTypeBySimpleName(...)100%11100%
          GetCustomTypesInternal()100%11100%
          GetExtensionMethodsInternal()100%44100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\CustomTypeProviders\DefaultDynamicLinqCustomTypeProvider.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Linq.Dynamic.Core.Validation;
           3using System.Reflection;
           4using System.Runtime.CompilerServices;
           5
           6namespace System.Linq.Dynamic.Core.CustomTypeProviders
           7{
           8    /// <summary>
           9    /// The default implementation for <see cref="IDynamicLinkCustomTypeProvider"/>.
           10    ///
           11    /// Scans the current AppDomain for all types marked with <see cref="DynamicLinqTypeAttribute"/>, and adds them as c
           12    ///
           13    /// Also provides functionality to resolve a Type in the current Application Domain.
           14    ///
           15    /// This class is used as default for full .NET Framework, so not for .NET Core
           16    /// </summary>
           17    public class DefaultDynamicLinqCustomTypeProvider : AbstractDynamicLinqCustomTypeProvider, IDynamicLinkCustomTypePro
           18    {
           8019        private readonly IAssemblyHelper _assemblyHelper = new DefaultAssemblyHelper();
           20        private readonly bool _cacheCustomTypes;
           21
           22        private HashSet<Type> _cachedCustomTypes;
           23        private Dictionary<Type, List<MethodInfo>> _cachedExtensionMethods;
           24
           25        /// <summary>
           26        /// Initializes a new instance of the <see cref="DefaultDynamicLinqCustomTypeProvider"/> class.
           27        /// </summary>
           28        /// <param name="cacheCustomTypes">Defines whether to cache the CustomTypes (including extension methods) which 
           8029        public DefaultDynamicLinqCustomTypeProvider(bool cacheCustomTypes = true)
           8030        {
           8031            _cacheCustomTypes = cacheCustomTypes;
           8032        }
           33
           34        /// <inheritdoc cref="IDynamicLinqCustomTypeProvider.GetCustomTypes"/>
           35        public virtual HashSet<Type> GetCustomTypes()
           102736        {
           102737            if (_cacheCustomTypes)
           102738            {
           102739                if (_cachedCustomTypes == null)
           7940                {
           7941                    _cachedCustomTypes = GetCustomTypesInternal();
           7942                }
           43
           102744                return _cachedCustomTypes;
           45            }
           46
           047            return GetCustomTypesInternal();
           102748        }
           49
           50        /// <inheritdoc cref="IDynamicLinqCustomTypeProvider.GetExtensionMethods"/>
           51        public Dictionary<Type, List<MethodInfo>> GetExtensionMethods()
           1852        {
           1853            if (_cacheCustomTypes)
           1854            {
           1855                if (_cachedExtensionMethods == null)
           356                {
           357                    _cachedExtensionMethods = GetExtensionMethodsInternal();
           358                }
           59
           1860                return _cachedExtensionMethods;
           61            }
           62
           063            return GetExtensionMethodsInternal();
           1864        }
           65
           66        /// <inheritdoc cref="IDynamicLinqCustomTypeProvider.ResolveType"/>
           67        public Type ResolveType(string typeName)
           3368        {
           3369            Check.NotEmpty(typeName, nameof(typeName));
           70
           3371            IEnumerable<Assembly> assemblies = _assemblyHelper.GetAssemblies();
           3372            return ResolveType(assemblies, typeName);
           3373        }
           74
           75        /// <inheritdoc cref="IDynamicLinqCustomTypeProvider.ResolveTypeBySimpleName"/>
           76        public Type ResolveTypeBySimpleName(string simpleTypeName)
           177        {
           178            Check.NotEmpty(simpleTypeName, nameof(simpleTypeName));
           79
           180            IEnumerable<Assembly> assemblies = _assemblyHelper.GetAssemblies();
           181            return ResolveTypeBySimpleName(assemblies, simpleTypeName);
           182        }
           83
           84        private HashSet<Type> GetCustomTypesInternal()
           7985        {
           7986            IEnumerable<Assembly> assemblies = _assemblyHelper.GetAssemblies();
           7987            return new HashSet<Type>(FindTypesMarkedWithDynamicLinqTypeAttribute(assemblies));
           7988        }
           89
           90        private Dictionary<Type, List<MethodInfo>> GetExtensionMethodsInternal()
           391        {
           392            var types = GetCustomTypes();
           93
           394            var list = new List<Tuple<Type, MethodInfo>>();
           95
           4196            foreach (var type in types)
           1697            {
           1698                var extensionMethods = type
           1699                    .GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
           21100                    .Where(x => x.IsDefined(typeof(ExtensionAttribute), false))
           16101                    .ToList();
           102
           27103                extensionMethods.ForEach(x => list.Add(new Tuple<Type, MethodInfo>(x.GetParameters()[0].ParameterType, x
           16104            }
           105
           35106            return list.GroupBy(x => x.Item1, tuple => tuple.Item2).ToDictionary(key => key.Key, methods => methods.ToLi
           3107        }
           108    }
           109}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DefaultQueryableAnalyzer.html b/report/coverlet/System.Linq.Dynamic.Core_DefaultQueryableAnalyzer.html deleted file mode 100644 index 8c771075..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DefaultQueryableAnalyzer.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DefaultQueryableAnalyzer - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DefaultQueryableAnalyzer
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DefaultQueryableAnalyzer.cs
          Covered lines:28
          Uncovered lines:7
          Coverable lines:35
          Total lines:71
          Line coverage:80% (28 of 35)
          Covered branches:13
          Total branches:16
          Branch coverage:81.2% (13 of 16)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          SupportsLinqToObjects(...)81.25%161680%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DefaultQueryableAnalyzer.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Dynamic.Core.Validation;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core
           5{
           6    /// <summary>
           7    /// Default implementation.
           8    /// </summary>
           9    /// <seealso cref="IQueryableAnalyzer" />
           10    public class DefaultQueryableAnalyzer : IQueryableAnalyzer
           11    {
           12        /// <inheritdoc cref="IQueryableAnalyzer.SupportsLinqToObjects"/>
           13        public bool SupportsLinqToObjects(IQueryable query, IQueryProvider provider = null)
           36314        {
           36315            Check.NotNull(query, nameof(query));
           36316            provider = provider ?? query.Provider;
           17
           36318            Type providerType = provider.GetType();
           36319            Type baseType = providerType.GetTypeInfo().BaseType;
           20#if NET35
           21            bool isLinqToObjects = baseType.FullName.Contains("EnumerableQuery");
           22#else
           36323            bool isLinqToObjects = baseType == typeof(EnumerableQuery);
           24#endif
           36325            if (!isLinqToObjects)
           3226            {
           27                // Support for https://github.com/StefH/QueryInterceptor.Core, version 1.0.1 and up
           3228                if (providerType.Name.StartsWith("QueryTranslatorProvider"))
           229                {
           30                    try
           231                    {
           232                        PropertyInfo property = providerType.GetProperty("OriginalProvider");
           233                        if (property != null)
           234                        {
           235                            IQueryProvider originalProvider = property.GetValue(provider, null) as IQueryProvider;
           236                            return originalProvider != null && SupportsLinqToObjects(query, originalProvider);
           37                        }
           38
           039                        return SupportsLinqToObjects(query);
           40                    }
           041                    catch
           042                    {
           043                        return false;
           44                    }
           45                }
           46
           47                // Support for https://github.com/scottksmith95/LINQKit ExpandableQuery
           3048                if (providerType.Name.StartsWith("ExpandableQuery"))
           449                {
           50                    try
           451                    {
           452                        PropertyInfo property = query.GetType().GetProperty("InnerQuery", BindingFlags.NonPublic | Bindi
           453                        if (property != null)
           254                        {
           255                            IQueryable innerQuery = property.GetValue(query, null) as IQueryable;
           256                            return innerQuery != null && SupportsLinqToObjects(innerQuery, provider);
           57                        }
           58
           259                        return SupportsLinqToObjects(query);
           60                    }
           061                    catch
           062                    {
           063                        return false;
           64                    }
           65                }
           2666            }
           67
           35768            return isLinqToObjects;
           36369        }
           70    }
           71}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicClass.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicClass.html deleted file mode 100644 index dfbd6a95..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicClass.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicClass - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicClass
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicClass.cs
          Covered lines:5
          Uncovered lines:60
          Coverable lines:65
          Total lines:178
          Line coverage:7.6% (5 of 65)
          Covered branches:0
          Total branches:12
          Branch coverage:0% (0 of 12)
          Covered methods:1
          Total methods:10
          Method coverage:10% (1 of 10)
          -

          Metrics

          - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetDynamicPropertyValue(...)100%11100%
          GetDynamicPropertyValue(...)100%110%
          SetDynamicPropertyValue(...)100%110%
          SetDynamicPropertyValue(...)100%110%
          GetDynamicMemberNames()100%110%
          TryGetMember(...)100%110%
          TrySetMember(...)0%220%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicClass.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if !UAP10_0 && !NET35
           2using System.Collections.Generic;
           3using System.Dynamic;
           4using System.Reflection;
           5
           6namespace System.Linq.Dynamic.Core
           7{
           8    /// <summary>
           9    /// Provides a base class for dynamic objects.
           10    ///
           11    /// In addition to the methods defined here, the following items are added using reflection:
           12    /// - default constructor
           13    /// - constructor with all the properties as parameters (if not linq-to-entities)
           14    /// - all properties (also with getter and setters)
           15    /// - ToString() method
           16    /// - Equals() method
           17    /// - GetHashCode() method
           18    /// </summary>
           19    public abstract class DynamicClass : DynamicObject
           20    {
           21        private Dictionary<string, object> _propertiesDictionary;
           22
           23        private Dictionary<string, object> Properties
           24        {
           25            get
           026            {
           027                if (_propertiesDictionary == null)
           028                {
           029                    _propertiesDictionary = new Dictionary<string, object>();
           30
           031                    foreach (PropertyInfo pi in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
           032                    {
           033                        int parameters = pi.GetIndexParameters().Length;
           034                        if (parameters > 0)
           035                        {
           36                            // The property is an indexer, skip this.
           037                            continue;
           38                        }
           39
           040                        _propertiesDictionary.Add(pi.Name, pi.GetValue(this, null));
           041                    }
           042                }
           43
           044                return _propertiesDictionary;
           045            }
           46        }
           47
           48        /// <summary>
           49        /// Gets the dynamic property by name.
           50        /// </summary>
           51        /// <typeparam name="T">The type.</typeparam>
           52        /// <param name="propertyName">Name of the property.</param>
           53        /// <returns>T</returns>
           54        public T GetDynamicPropertyValue<T>(string propertyName)
           1855        {
           1856            var type = GetType();
           1857            var propInfo = type.GetProperty(propertyName);
           58
           1859            return (T)propInfo.GetValue(this, null);
           1860        }
           61
           62        /// <summary>
           63        /// Gets the dynamic property value by name.
           64        /// </summary>
           65        /// <param name="propertyName">Name of the property.</param>
           66        /// <returns>value</returns>
           67        public object GetDynamicPropertyValue(string propertyName)
           068        {
           069            return GetDynamicPropertyValue<object>(propertyName);
           070        }
           71
           72        /// <summary>
           73        /// Sets the dynamic property value by name.
           74        /// </summary>
           75        /// <typeparam name="T">The type.</typeparam>
           76        /// <param name="propertyName">Name of the property.</param>
           77        /// <param name="value">The value.</param>
           78        public void SetDynamicPropertyValue<T>(string propertyName, T value)
           079        {
           080            var type = GetType();
           081            var propInfo = type.GetProperty(propertyName);
           82
           083            propInfo.SetValue(this, value, null);
           084        }
           85
           86        /// <summary>
           87        /// Sets the dynamic property value by name.
           88        /// </summary>
           89        /// <param name="propertyName">Name of the property.</param>
           90        /// <param name="value">The value.</param>
           91        public void SetDynamicPropertyValue(string propertyName, object value)
           092        {
           093            SetDynamicPropertyValue<object>(propertyName, value);
           094        }
           95
           96        /// <summary>
           97        /// Gets or sets the <see cref="object"/> with the specified name.
           98        /// </summary>
           99        /// <value>The <see cref="object"/>.</value>
           100        /// <param name="name">The name.</param>
           101        /// <returns>Value from the property.</returns>
           102        public object this[string name]
           103        {
           104            get
           0105            {
           0106                if (Properties.TryGetValue(name, out object result))
           0107                {
           0108                    return result;
           109                }
           110
           0111                return null;
           0112            }
           113
           114            set
           0115            {
           0116                if (Properties.ContainsKey(name))
           0117                {
           0118                    Properties[name] = value;
           0119                }
           120                else
           0121                {
           0122                    Properties.Add(name, value);
           0123                }
           0124            }
           125        }
           126
           127        /// <summary>
           128        /// Returns the enumeration of all dynamic member names.
           129        /// </summary>
           130        /// <returns>
           131        /// A sequence that contains dynamic member names.
           132        /// </returns>
           133        public override IEnumerable<string> GetDynamicMemberNames()
           0134        {
           0135            return Properties.Keys;
           0136        }
           137
           138        /// <summary>
           139        /// Provides the implementation for operations that get member values. Classes derived from the <see cref="T:Sys
           140        /// </summary>
           141        /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Nam
           142        /// <param name="result">The result of the get operation. For example, if the method is called for a property, y
           143        /// <returns>
           144        /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of 
           145        /// </returns>
           146        public override bool TryGetMember(GetMemberBinder binder, out object result)
           0147        {
           0148            string name = binder.Name;
           0149            Properties.TryGetValue(name, out result);
           150
           0151            return true;
           0152        }
           153
           154        /// <summary>
           155        /// Provides the implementation for operations that set member values. Classes derived from the <see cref="T:Sys
           156        /// </summary>
           157        /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Nam
           158        /// <param name="value">The value to set to the member. For example, for sampleObject.SampleProperty = "Test", w
           159        /// <returns>
           160        /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of 
           161        /// </returns>
           162        public override bool TrySetMember(SetMemberBinder binder, object value)
           0163        {
           0164            string name = binder.Name;
           0165            if (Properties.ContainsKey(name))
           0166            {
           0167                Properties[name] = value;
           0168            }
           169            else
           0170            {
           0171                Properties.Add(name, value);
           0172            }
           173
           0174            return true;
           0175        }
           176    }
           177}
           178#endif
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicClassFactory.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicClassFactory.html deleted file mode 100644 index c5fcbc48..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicClassFactory.html +++ /dev/null @@ -1,573 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicClassFactory - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicClassFactory
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicClassFactory.cs
          Covered lines:265
          Uncovered lines:10
          Coverable lines:275
          Total lines:467
          Line coverage:96.3% (265 of 275)
          Covered branches:43
          Total branches:48
          Branch coverage:89.5% (43 of 48)
          Covered methods:5
          Total methods:5
          Method coverage:100% (5 of 5)
          -

          Metrics

          - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          CreateGenericComparerType(...)50%4493.33%
          CreateType(...)92.85%424296.35%
          GenerateKey(...)100%22100%
          Escape(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicClassFactory.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if !(UAP10_0)
           2using System.Collections;
           3using System.Collections.Concurrent;
           4using System.Collections.Generic;
           5using System.Diagnostics;
           6using System.Linq.Dynamic.Core.Util;
           7using System.Linq.Dynamic.Core.Validation;
           8using System.Reflection;
           9using System.Reflection.Emit;
           10using System.Runtime.CompilerServices;
           11using System.Text;
           12using System.Threading;
           13using JetBrains.Annotations;
           14#if WINDOWS_APP
           15using System.Linq;
           16#endif
           17
           18namespace System.Linq.Dynamic.Core
           19{
           20    /// <summary>
           21    /// A factory to create dynamic classes, based on <see href="http://stackoverflow.com/questions/29413942/c-sharp-ano
           22    /// </summary>
           23    public static class DynamicClassFactory
           24    {
           125        private static readonly ConcurrentDictionary<string, Type> GeneratedTypes = new ConcurrentDictionary<string, Typ
           26
           27        private static readonly ModuleBuilder ModuleBuilder;
           28
           29        // Some objects we cache
           130        private static readonly CustomAttributeBuilder CompilerGeneratedAttributeBuilder = new CustomAttributeBuilder(ty
           131        private static readonly CustomAttributeBuilder DebuggerBrowsableAttributeBuilder = new CustomAttributeBuilder(ty
           132        private static readonly CustomAttributeBuilder DebuggerHiddenAttributeBuilder = new CustomAttributeBuilder(typeo
           33
           134        private static readonly ConstructorInfo ObjectCtor = typeof(object).GetConstructor(Type.EmptyTypes);
           35#if WINDOWS_APP ||  UAP10_0 || NETSTANDARD
           36        private static readonly MethodInfo ObjectToString = typeof(object).GetMethod("ToString", BindingFlags.Instance |
           37#else
           138        private static readonly MethodInfo ObjectToString = typeof(object).GetMethod("ToString", BindingFlags.Instance |
           39#endif
           40
           141        private static readonly ConstructorInfo StringBuilderCtor = typeof(StringBuilder).GetConstructor(Type.EmptyTypes
           42#if WINDOWS_APP ||  UAP10_0 || NETSTANDARD
           43        private static readonly MethodInfo StringBuilderAppendString = typeof(StringBuilder).GetMethod("Append", new[] {
           44        private static readonly MethodInfo StringBuilderAppendObject = typeof(StringBuilder).GetMethod("Append", new[] {
           45#else
           146        private static readonly MethodInfo StringBuilderAppendString = typeof(StringBuilder).GetMethod("Append", Binding
           147        private static readonly MethodInfo StringBuilderAppendObject = typeof(StringBuilder).GetMethod("Append", Binding
           48#endif
           49
           150        private static readonly Type EqualityComparer = typeof(EqualityComparer<>);
           151        private static readonly Type EqualityComparerGenericArgument = EqualityComparer.GetGenericArguments()[0];
           52#if WINDOWS_APP ||  UAP10_0 || NETSTANDARD
           53        private static readonly MethodInfo EqualityComparerDefault = EqualityComparer.GetMethod("get_Default", BindingFl
           54        private static readonly MethodInfo EqualityComparerEquals = EqualityComparer.GetMethod("Equals", new[] { Equalit
           55        private static readonly MethodInfo EqualityComparerGetHashCode = EqualityComparer.GetMethod("GetHashCode", new[]
           56#else
           157        private static readonly MethodInfo EqualityComparerDefault = EqualityComparer.GetMethod("get_Default", BindingFl
           158        private static readonly MethodInfo EqualityComparerEquals = EqualityComparer.GetMethod("Equals", BindingFlags.In
           159        private static readonly MethodInfo EqualityComparerGetHashCode = EqualityComparer.GetMethod("GetHashCode", Bindi
           60#endif
           61
           162        private static int _index = -1;
           63
           164        private static string DynamicAssemblyName = "System.Linq.Dynamic.Core.DynamicClasses, Version=1.0.0.0";
           165        private static string DynamicModuleName = "System.Linq.Dynamic.Core.DynamicClasses";
           66
           67        /// <summary>
           68        /// Initializes the <see cref="DynamicClassFactory"/> class.
           69        /// </summary>
           70        static DynamicClassFactory()
           171        {
           172            var assemblyName = new AssemblyName(DynamicAssemblyName);
           173            var assemblyBuilder = AssemblyBuilderFactory.DefineDynamicAssembly
           174            (
           175                assemblyName,
           176#if NET35
           177                AssemblyBuilderAccess.Run
           178#else
           179                AssemblyBuilderAccess.RunAndCollect
           180#endif
           181            );
           82
           183            ModuleBuilder = assemblyBuilder.DefineDynamicModule(DynamicModuleName);
           184        }
           85
           86        /// <summary>
           87        /// Create a GenericComparerType based on the GenericType and an instance of a <see cref="IComparer"/>.
           88        /// </summary>
           89        /// <param name="comparerGenericType">The GenericType</param>
           90        /// <param name="comparerType">The <see cref="IComparer"/> instance</param>
           91        /// <returns>Type</returns>
           92        public static Type CreateGenericComparerType(Type comparerGenericType, Type comparerType)
           293        {
           294            Check.NotNull(comparerGenericType, nameof(comparerGenericType));
           295            Check.NotNull(comparerType, nameof(comparerType));
           96
           297            var key = $"{comparerGenericType.FullName}_{comparerType.FullName}";
           98
           299            if (!GeneratedTypes.TryGetValue(key, out var type))
           2100            {
           101                // We create only a single class at a time, through this lock
           102                // Note that this is a variant of the double-checked locking.
           103                // It is safe because we are using a thread safe class.
           2104                lock (GeneratedTypes)
           2105                {
           2106                    if (!GeneratedTypes.TryGetValue(key, out type))
           2107                    {
           2108                        var compareMethodGeneric = comparerGenericType.GetMethod("Compare");
           2109                        var compareMethod = typeof(IComparer).GetMethod("Compare");
           2110                        var compareCtor = comparerType.GetConstructor(Type.EmptyTypes);
           111
           2112                        var typeBuilder = ModuleBuilder.DefineType(key, TypeAttributes.AnsiClass | TypeAttributes.Public
           2113                        typeBuilder.AddInterfaceImplementation(comparerGenericType);
           114
           2115                        var fieldBuilder = typeBuilder.DefineField("_c", typeof(IComparer), FieldAttributes.Private | Fi
           116
           2117                        var constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public | MethodAttribute
           2118                        var constructorIL = constructorBuilder.GetILGenerator();
           2119                        constructorIL.Emit(OpCodes.Ldarg_0);
           2120                        constructorIL.Emit(OpCodes.Call, ObjectCtor);
           2121                        constructorIL.Emit(OpCodes.Ldarg_0);
           2122                        constructorIL.Emit(OpCodes.Newobj, compareCtor);
           2123                        constructorIL.Emit(OpCodes.Stfld, fieldBuilder);
           2124                        constructorIL.Emit(OpCodes.Ret);
           125
           2126                        var methodBuilder = typeBuilder.DefineMethod(
           2127                            compareMethodGeneric.Name,
           2128                            compareMethodGeneric.Attributes & ~MethodAttributes.Abstract,
           2129                            compareMethodGeneric.CallingConvention,
           2130                            compareMethodGeneric.ReturnType,
           4131                            compareMethodGeneric.GetParameters().Select(p => p.ParameterType).ToArray()
           2132                        );
           2133                        var methodBuilderIL = methodBuilder.GetILGenerator();
           2134                        methodBuilderIL.Emit(OpCodes.Ldarg_0);
           2135                        methodBuilderIL.Emit(OpCodes.Ldfld, fieldBuilder);
           2136                        methodBuilderIL.Emit(OpCodes.Ldarg_1);
           2137                        methodBuilderIL.Emit(OpCodes.Box, typeof(int));
           2138                        methodBuilderIL.Emit(OpCodes.Ldarg_2);
           2139                        methodBuilderIL.Emit(OpCodes.Box, typeof(int));
           2140                        methodBuilderIL.Emit(OpCodes.Callvirt, compareMethod);
           2141                        methodBuilderIL.Emit(OpCodes.Ret);
           142
           2143                        return GeneratedTypes.GetOrAdd(key, typeBuilder.CreateType());
           144                    }
           0145                }
           0146            }
           147
           0148            return type;
           2149        }
           150
           151        /// <summary>
           152        /// The CreateType method creates a new data class with a given set of public properties and returns the System.
           153        /// Data classes implement private instance variables and read/write property accessors for the specified proper
           154        /// Data classes are created in an in-memory assembly in the current application domain. All data classes inheri
           155        /// The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers
           156        /// </summary>
           157        /// <param name="properties">The DynamicProperties</param>
           158        /// <param name="createParameterCtor">Create a constructor with parameters. Default set to true. Note that for L
           159        /// <returns>Type</returns>
           160        /// <example>
           161        /// <code>
           162        /// <![CDATA[
           163        /// DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty("Name", typeof(string)), new DynamicPr
           164        /// Type type = DynamicClassFactory.CreateType(props);
           165        /// DynamicClass dynamicClass = Activator.CreateInstance(type) as DynamicClass;
           166        /// dynamicClass.SetDynamicProperty("Name", "Albert");
           167        /// dynamicClass.SetDynamicProperty("Birthday", new DateTime(1879, 3, 14));
           168        /// Console.WriteLine(dynamicClass);
           169        /// ]]>
           170        /// </code>
           171        /// </example>
           172        public static Type CreateType([NotNull] IList<DynamicProperty> properties, bool createParameterCtor = true)
           57173        {
           57174            Check.HasNoNulls(properties, nameof(properties));
           175
           168176            Type[] types = properties.Select(p => p.Type).ToArray();
           168177            string[] names = properties.Select(p => p.Name).ToArray();
           178
           57179            string key = GenerateKey(properties, createParameterCtor);
           180
           181            Type type;
           57182            if (!GeneratedTypes.TryGetValue(key, out type))
           40183            {
           184                // We create only a single class at a time, through this lock
           185                // Note that this is a variant of the double-checked locking.
           186                // It is safe because we are using a thread safe class.
           40187                lock (GeneratedTypes)
           40188                {
           40189                    if (!GeneratedTypes.TryGetValue(key, out type))
           40190                    {
           40191                        int index = Interlocked.Increment(ref _index);
           192
           40193                        string name = names.Length != 0 ? $"<>f__AnonymousType{index}`{names.Length}" : $"<>f__Anonymous
           194
           40195                        TypeBuilder tb = ModuleBuilder.DefineType(name, TypeAttributes.AnsiClass | TypeAttributes.Public
           40196                        tb.SetCustomAttribute(CompilerGeneratedAttributeBuilder);
           197
           198                        GenericTypeParameterBuilder[] generics;
           199
           40200                        if (names.Length != 0)
           39201                        {
           121202                            string[] genericNames = names.Select(genericName => $"<{genericName}>j__TPar").ToArray();
           39203                            generics = tb.DefineGenericParameters(genericNames);
           281204                            foreach (GenericTypeParameterBuilder b in generics)
           82205                            {
           82206                                b.SetCustomAttribute(CompilerGeneratedAttributeBuilder);
           82207                            }
           39208                        }
           209                        else
           1210                        {
           1211                            generics = new GenericTypeParameterBuilder[0];
           1212                        }
           213
           40214                        var fields = new FieldBuilder[names.Length];
           215
           216                        // There are two for cycles because we want to have all the getter methods before all the other 
           244217                        for (int i = 0; i < names.Length; i++)
           82218                        {
           219                            // field
           82220                            fields[i] = tb.DefineField($"<{names[i]}>i__Field", generics[i].AsType(), FieldAttributes.Pr
           82221                            fields[i].SetCustomAttribute(DebuggerBrowsableAttributeBuilder);
           222
           82223                            PropertyBuilder property = tb.DefineProperty(names[i], PropertyAttributes.None, CallingConve
           224
           225                            // getter
           82226                            MethodBuilder getter = tb.DefineMethod($"get_{names[i]}", MethodAttributes.Public | MethodAt
           82227                            getter.SetCustomAttribute(CompilerGeneratedAttributeBuilder);
           82228                            ILGenerator ilgeneratorGetter = getter.GetILGenerator();
           82229                            ilgeneratorGetter.Emit(OpCodes.Ldarg_0);
           82230                            ilgeneratorGetter.Emit(OpCodes.Ldfld, fields[i]);
           82231                            ilgeneratorGetter.Emit(OpCodes.Ret);
           82232                            property.SetGetMethod(getter);
           233
           234                            // setter
           82235                            MethodBuilder setter = tb.DefineMethod($"set_{names[i]}", MethodAttributes.Public | MethodAt
           82236                            setter.SetCustomAttribute(CompilerGeneratedAttributeBuilder);
           237
           238                            // workaround for https://github.com/dotnet/corefx/issues/7792
           82239                            setter.DefineParameter(1, ParameterAttributes.In, generics[i].Name);
           240
           82241                            ILGenerator ilgeneratorSetter = setter.GetILGenerator();
           82242                            ilgeneratorSetter.Emit(OpCodes.Ldarg_0);
           82243                            ilgeneratorSetter.Emit(OpCodes.Ldarg_1);
           82244                            ilgeneratorSetter.Emit(OpCodes.Stfld, fields[i]);
           82245                            ilgeneratorSetter.Emit(OpCodes.Ret);
           82246                            property.SetSetMethod(setter);
           82247                        }
           248
           249                        // ToString()
           40250                        MethodBuilder toString = tb.DefineMethod("ToString", MethodAttributes.Public | MethodAttributes.
           40251                        toString.SetCustomAttribute(DebuggerHiddenAttributeBuilder);
           40252                        ILGenerator ilgeneratorToString = toString.GetILGenerator();
           40253                        ilgeneratorToString.DeclareLocal(typeof(StringBuilder));
           40254                        ilgeneratorToString.Emit(OpCodes.Newobj, StringBuilderCtor);
           40255                        ilgeneratorToString.Emit(OpCodes.Stloc_0);
           256
           257                        // Equals
           40258                        MethodBuilder equals = tb.DefineMethod("Equals", MethodAttributes.Public | MethodAttributes.Virt
           40259                        equals.SetCustomAttribute(DebuggerHiddenAttributeBuilder);
           40260                        equals.DefineParameter(1, ParameterAttributes.In, "value");
           261
           40262                        ILGenerator ilgeneratorEquals = equals.GetILGenerator();
           40263                        ilgeneratorEquals.DeclareLocal(tb.AsType());
           40264                        ilgeneratorEquals.Emit(OpCodes.Ldarg_1);
           40265                        ilgeneratorEquals.Emit(OpCodes.Isinst, tb.AsType());
           40266                        ilgeneratorEquals.Emit(OpCodes.Stloc_0);
           40267                        ilgeneratorEquals.Emit(OpCodes.Ldloc_0);
           268
           40269                        Label equalsLabel = ilgeneratorEquals.DefineLabel();
           270
           271                        // GetHashCode()
           40272                        MethodBuilder getHashCode = tb.DefineMethod("GetHashCode", MethodAttributes.Public | MethodAttri
           40273                        getHashCode.SetCustomAttribute(DebuggerHiddenAttributeBuilder);
           40274                        ILGenerator ilgeneratorGetHashCode = getHashCode.GetILGenerator();
           40275                        ilgeneratorGetHashCode.DeclareLocal(typeof(int));
           276
           40277                        if (names.Length == 0)
           1278                        {
           1279                            ilgeneratorGetHashCode.Emit(OpCodes.Ldc_I4_0);
           1280                        }
           281                        else
           39282                        {
           283                            // As done by Roslyn
           284                            // Note that initHash can vary, because string.GetHashCode() isn't "stable" for different co
           39285                            int initHash = 0;
           286
           242287                            for (int i = 0; i < names.Length; i++)
           82288                            {
           82289                                initHash = unchecked(initHash * (-1521134295) + fields[i].Name.GetHashCode());
           82290                            }
           291
           292                            // Note that the CSC seems to generate a different seed for every anonymous class
           39293                            ilgeneratorGetHashCode.Emit(OpCodes.Ldc_I4, initHash);
           39294                        }
           295
           244296                        for (int i = 0; i < names.Length; i++)
           82297                        {
           298                            // https://github.com/zzzprojects/System.Linq.Dynamic.Core/issues/516
           82299                            if (!RuntimeInformationUtils.IsBlazorWASM)
           82300                            {
           82301                                Type equalityComparerT = EqualityComparer.MakeGenericType(generics[i].AsType());
           302
           303                                // Equals()
           82304                                MethodInfo equalityComparerTDefault = TypeBuilder.GetMethod(equalityComparerT, EqualityC
           82305                                MethodInfo equalityComparerTEquals = TypeBuilder.GetMethod(equalityComparerT, EqualityCo
           306
           307                                // Illegal one-byte branch at position: 9. Requested branch was: 143.
           308                                // So replace OpCodes.Brfalse_S to OpCodes.Brfalse
           82309                                ilgeneratorEquals.Emit(OpCodes.Brfalse, equalsLabel);
           82310                                ilgeneratorEquals.Emit(OpCodes.Call, equalityComparerTDefault);
           82311                                ilgeneratorEquals.Emit(OpCodes.Ldarg_0);
           82312                                ilgeneratorEquals.Emit(OpCodes.Ldfld, fields[i]);
           82313                                ilgeneratorEquals.Emit(OpCodes.Ldloc_0);
           82314                                ilgeneratorEquals.Emit(OpCodes.Ldfld, fields[i]);
           82315                                ilgeneratorEquals.Emit(OpCodes.Callvirt, equalityComparerTEquals);
           316
           317                                // GetHashCode();
           82318                                MethodInfo equalityComparerTGetHashCode = TypeBuilder.GetMethod(equalityComparerT, Equal
           82319                                ilgeneratorGetHashCode.Emit(OpCodes.Stloc_0);
           82320                                ilgeneratorGetHashCode.Emit(OpCodes.Ldc_I4, -1521134295);
           82321                                ilgeneratorGetHashCode.Emit(OpCodes.Ldloc_0);
           82322                                ilgeneratorGetHashCode.Emit(OpCodes.Mul);
           82323                                ilgeneratorGetHashCode.Emit(OpCodes.Call, equalityComparerTDefault);
           82324                                ilgeneratorGetHashCode.Emit(OpCodes.Ldarg_0);
           82325                                ilgeneratorGetHashCode.Emit(OpCodes.Ldfld, fields[i]);
           82326                                ilgeneratorGetHashCode.Emit(OpCodes.Callvirt, equalityComparerTGetHashCode);
           82327                                ilgeneratorGetHashCode.Emit(OpCodes.Add);
           82328                            }
           329
           330                            // ToString();
           82331                            ilgeneratorToString.Emit(OpCodes.Ldloc_0);
           82332                            ilgeneratorToString.Emit(OpCodes.Ldstr, i == 0 ? $"{{ {names[i]} = " : $", {names[i]} = ");
           82333                            ilgeneratorToString.Emit(OpCodes.Callvirt, StringBuilderAppendString);
           82334                            ilgeneratorToString.Emit(OpCodes.Pop);
           82335                            ilgeneratorToString.Emit(OpCodes.Ldloc_0);
           82336                            ilgeneratorToString.Emit(OpCodes.Ldarg_0);
           82337                            ilgeneratorToString.Emit(OpCodes.Ldfld, fields[i]);
           82338                            ilgeneratorToString.Emit(OpCodes.Box, generics[i].AsType());
           82339                            ilgeneratorToString.Emit(OpCodes.Callvirt, StringBuilderAppendObject);
           82340                            ilgeneratorToString.Emit(OpCodes.Pop);
           82341                        }
           342
           343                        // Only create the default and with params constructor when there are any params.
           344                        // Otherwise default constructor is not needed because it matches the default
           345                        // one provided by the runtime when no constructor is present
           40346                        if (createParameterCtor && names.Any())
           6347                        {
           348                            // .ctor default
           6349                            ConstructorBuilder constructorDef = tb.DefineConstructor(MethodAttributes.Public | MethodAtt
           6350                            constructorDef.SetCustomAttribute(DebuggerHiddenAttributeBuilder);
           351
           6352                            ILGenerator ilgeneratorConstructorDef = constructorDef.GetILGenerator();
           6353                            ilgeneratorConstructorDef.Emit(OpCodes.Ldarg_0);
           6354                            ilgeneratorConstructorDef.Emit(OpCodes.Call, ObjectCtor);
           6355                            ilgeneratorConstructorDef.Emit(OpCodes.Ret);
           356
           357                            // .ctor with params
           16358                            ConstructorBuilder constructor = tb.DefineConstructor(MethodAttributes.Public | MethodAttrib
           6359                            constructor.SetCustomAttribute(DebuggerHiddenAttributeBuilder);
           360
           6361                            ILGenerator ilgeneratorConstructor = constructor.GetILGenerator();
           6362                            ilgeneratorConstructor.Emit(OpCodes.Ldarg_0);
           6363                            ilgeneratorConstructor.Emit(OpCodes.Call, ObjectCtor);
           364
           32365                            for (int i = 0; i < names.Length; i++)
           10366                            {
           10367                                constructor.DefineParameter(i + 1, ParameterAttributes.None, names[i]);
           10368                                ilgeneratorConstructor.Emit(OpCodes.Ldarg_0);
           369
           10370                                if (i == 0)
           6371                                {
           6372                                    ilgeneratorConstructor.Emit(OpCodes.Ldarg_1);
           6373                                }
           4374                                else if (i == 1)
           3375                                {
           3376                                    ilgeneratorConstructor.Emit(OpCodes.Ldarg_2);
           3377                                }
           1378                                else if (i == 2)
           1379                                {
           1380                                    ilgeneratorConstructor.Emit(OpCodes.Ldarg_3);
           1381                                }
           0382                                else if (i < 255)
           0383                                {
           0384                                    ilgeneratorConstructor.Emit(OpCodes.Ldarg_S, (byte)(i + 1));
           0385                                }
           386                                else
           0387                                {
           388                                    // Ldarg uses a ushort, but the Emit only accepts short, so we use a unchecked(...),
           0389                                    ilgeneratorConstructor.Emit(OpCodes.Ldarg, unchecked((short)(i + 1)));
           0390                                }
           391
           10392                                ilgeneratorConstructor.Emit(OpCodes.Stfld, fields[i]);
           10393                            }
           394
           6395                            ilgeneratorConstructor.Emit(OpCodes.Ret);
           6396                        }
           397
           398                        // Equals()
           40399                        if (names.Length == 0)
           1400                        {
           1401                            ilgeneratorEquals.Emit(OpCodes.Ldnull);
           1402                            ilgeneratorEquals.Emit(OpCodes.Ceq);
           1403                            ilgeneratorEquals.Emit(OpCodes.Ldc_I4_0);
           1404                            ilgeneratorEquals.Emit(OpCodes.Ceq);
           1405                        }
           406                        else
           39407                        {
           39408                            ilgeneratorEquals.Emit(OpCodes.Ret);
           39409                            ilgeneratorEquals.MarkLabel(equalsLabel);
           39410                            ilgeneratorEquals.Emit(OpCodes.Ldc_I4_0);
           39411                        }
           412
           40413                        ilgeneratorEquals.Emit(OpCodes.Ret);
           414
           415                        // GetHashCode()
           40416                        ilgeneratorGetHashCode.Emit(OpCodes.Stloc_0);
           40417                        ilgeneratorGetHashCode.Emit(OpCodes.Ldloc_0);
           40418                        ilgeneratorGetHashCode.Emit(OpCodes.Ret);
           419
           420                        // ToString()
           40421                        ilgeneratorToString.Emit(OpCodes.Ldloc_0);
           40422                        ilgeneratorToString.Emit(OpCodes.Ldstr, names.Length == 0 ? "{ }" : " }");
           40423                        ilgeneratorToString.Emit(OpCodes.Callvirt, StringBuilderAppendString);
           40424                        ilgeneratorToString.Emit(OpCodes.Pop);
           40425                        ilgeneratorToString.Emit(OpCodes.Ldloc_0);
           40426                        ilgeneratorToString.Emit(OpCodes.Callvirt, ObjectToString);
           40427                        ilgeneratorToString.Emit(OpCodes.Ret);
           428
           40429                        type = tb.CreateType();
           430
           40431                        type = GeneratedTypes.GetOrAdd(key, type);
           40432                    }
           40433                }
           40434            }
           435
           57436            if (types.Length != 0)
           56437            {
           56438                type = type.MakeGenericType(types);
           56439            }
           440
           57441            return type;
           57442        }
           443
           444        /// <summary>
           445        /// Generates the key.
           446        /// Anonymous classes are generics based. The generic classes are distinguished by number of parameters and name
           447        /// </summary>
           448        /// <param name="dynamicProperties">The dynamic propertys.</param>
           449        /// <param name="createParameterCtor">if set to <c>true</c> [create parameter ctor].</param>
           450        /// <returns></returns>
           451        private static string GenerateKey(IEnumerable<DynamicProperty> dynamicProperties, bool createParameterCtor)
           57452        {
           453            // We recreate this by creating a fullName composed of all the property names and types, separated by a "|".
           454            // And append and extra field depending on createParameterCtor.
           168455            return string.Format("{0}_{1}", string.Join("|", dynamicProperties.Select(p => Escape(p.Name) + "~" + p.Type
           57456        }
           457
           458        private static string Escape(string str)
           111459        {
           460            // We escape the \ with \\, so that we can safely escape the "|" (that we use as a separator) with "\|"
           111461            str = str.Replace(@"\", @"\\");
           111462            str = str.Replace(@"|", @"\|");
           111463            return str;
           111464        }
           465    }
           466}
           467#endif
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableAsyncExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableAsyncExtensions.html deleted file mode 100644 index 85ef0d22..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableAsyncExtensions.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicEnumerableAsyncExtensions.cs
          Covered lines:0
          Uncovered lines:32
          Coverable lines:32
          Total lines:106
          Line coverage:0% (0 of 32)
          Covered branches:0
          Total branches:0
          Covered methods:0
          Total methods:8
          Method coverage:0% (0 of 8)
          -

          Metrics

          - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ToDynamicArrayAsync(...)100%110%
          ToDynamicArrayAsync(...)100%110%
          ToDynamicArrayAsync(...)100%110%
          ToDynamicListAsync(...)100%110%
          ToDynamicListAsync(...)100%110%
          ToDynamicListAsync(...)100%110%
          CastToArrayAsync(...)100%110%
          CastToListAsync(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicEnumerableAsyncExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if !(NET35 || NET40)
           2using JetBrains.Annotations;
           3using System.Collections;
           4using System.Collections.Generic;
           5using System.Linq.Dynamic.Core.Validation;
           6using System.Threading.Tasks;
           7
           8namespace System.Linq.Dynamic.Core
           9{
           10    /// <summary>
           11    /// Define async extensions on <see cref="IEnumerable"/>.
           12    /// </summary>
           13    public static class DynamicEnumerableAsyncExtensions
           14    {
           15        /// <summary>
           16        /// Async creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           17        /// </summary>
           18        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           19        /// <param name="type">A <see cref="Type"/> cast to.</param>
           20        /// <returns>An Array that contains the elements from the input sequence.</returns>
           21        [PublicAPI]
           22        public static Task<dynamic[]> ToDynamicArrayAsync([NotNull] this IEnumerable source, [NotNull] Type type)
           023        {
           024            Check.NotNull(source, nameof(source));
           025            Check.NotNull(type, nameof(type));
           26
           027            return Task.Run(() => source.ToDynamicArray(type));
           028        }
           29
           30        /// <summary>
           31        /// Async creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           32        /// </summary>
           33        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           34        /// <returns>An array that contains the elements from the input sequence.</returns>
           35        [PublicAPI]
           36        public static Task<dynamic[]> ToDynamicArrayAsync([NotNull] this IEnumerable source)
           037        {
           038            Check.NotNull(source, nameof(source));
           039            return CastToArrayAsync<dynamic>(source);
           040        }
           41
           42        /// <summary>
           43        /// Async creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           44        /// </summary>
           45        /// <typeparam name="T">The generic type.</typeparam>
           46        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           47        /// <returns>An Array{T} that contains the elements from the input sequence.</returns>
           48        [PublicAPI]
           49        public static Task<T[]> ToDynamicArrayAsync<T>([NotNull] this IEnumerable source)
           050        {
           051            Check.NotNull(source, nameof(source));
           052            return CastToArrayAsync<T>(source);
           053        }
           54
           55        /// <summary>
           56        /// Async creates a list of dynamic objects from a <see cref="IEnumerable"/>.
           57        /// </summary>
           58        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           59        /// <param name="type">A <see cref="Type"/> cast to.</param>
           60        /// <returns>An List that contains the elements from the input sequence.</returns>
           61        [PublicAPI]
           62        public static Task<List<dynamic>> ToDynamicListAsync([NotNull] this IEnumerable source, [NotNull] Type type)
           063        {
           064            Check.NotNull(source, nameof(source));
           065            Check.NotNull(type, nameof(type));
           66
           067            return Task.Run(() => source.ToDynamicList(type));
           068        }
           69
           70        /// <summary>
           71        /// Async creates a list of dynamic objects from a <see cref="IEnumerable"/>.
           72        /// </summary>
           73        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           74        /// <returns>A List that contains the elements from the input sequence.</returns>
           75        [PublicAPI]
           76        public static Task<List<dynamic>> ToDynamicListAsync([NotNull] this IEnumerable source)
           077        {
           078            Check.NotNull(source, nameof(source));
           079            return CastToListAsync<dynamic>(source);
           080        }
           81
           82        /// <summary>
           83        /// Async creates a list of dynamic objects from an <see cref="IEnumerable"/>.
           84        /// </summary>
           85        /// <typeparam name="T">Generic Type</typeparam>
           86        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           87        /// <returns>A List{T} that contains the elements from the input sequence.</returns>
           88        [PublicAPI]
           89        public static Task<List<T>> ToDynamicListAsync<T>([NotNull] this IEnumerable source)
           090        {
           091            Check.NotNull(source, nameof(source));
           092            return CastToListAsync<T>(source);
           093        }
           94
           95        private static Task<T[]> CastToArrayAsync<T>(IEnumerable source)
           096        {
           097            return Task.Run(() => DynamicEnumerableExtensions.CastToArray<T>(source));
           098        }
           99
           100        private static Task<List<T>> CastToListAsync<T>(IEnumerable source)
           0101        {
           0102            return Task.Run(() => DynamicEnumerableExtensions.CastToList<T>(source));
           0103        }
           104    }
           105}
           106#endif
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableExtensions.html deleted file mode 100644 index b0cc700e..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicEnumerableExtensions.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicEnumerableExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicEnumerableExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicEnumerableExtensions.cs
          Covered lines:37
          Uncovered lines:0
          Coverable lines:37
          Total lines:135
          Line coverage:100% (37 of 37)
          Covered branches:0
          Total branches:0
          Covered methods:9
          Total methods:9
          Method coverage:100% (9 of 9)
          -

          Metrics

          - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          ToDynamicArray(...)100%11100%
          ToDynamicArray(...)100%11100%
          ToDynamicArray(...)100%11100%
          ToDynamicList(...)100%11100%
          ToDynamicList(...)100%11100%
          ToDynamicList(...)100%11100%
          CastToArray(...)100%11100%
          CastToList(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicEnumerableExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Collections;
           3using System.Collections.Generic;
           4using System.Linq.Dynamic.Core.Validation;
           5using System.Reflection;
           6
           7namespace System.Linq.Dynamic.Core
           8{
           9    /// <summary>
           10    /// Define extensions on <see cref="IEnumerable"/>.
           11    /// </summary>
           12    public static class DynamicEnumerableExtensions
           13    {
           14        private static readonly MethodInfo ToDynamicArrayGenericMethod;
           15
           16        static DynamicEnumerableExtensions()
           117        {
           118            ToDynamicArrayGenericMethod = typeof(DynamicEnumerableExtensions).GetTypeInfo().GetDeclaredMethods("ToDynami
           319                .First(x => x.IsGenericMethod);
           120        }
           21
           22        /// <summary>
           23        /// Creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           24        /// </summary>
           25        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           26        /// <returns>An array that contains the elements from the input sequence.</returns>
           27#if NET35
           28        public static object[] ToDynamicArray([NotNull] this IEnumerable source)
           29        {
           30            Check.NotNull(source, nameof(source));
           31            return CastToArray<object>(source);
           32        }
           33#else
           34        public static dynamic[] ToDynamicArray([NotNull] this IEnumerable source)
           5935        {
           5936            Check.NotNull(source, nameof(source));
           5937            return CastToArray<dynamic>(source);
           5838        }
           39#endif
           40
           41        /// <summary>
           42        /// Creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           43        /// </summary>
           44        /// <typeparam name="T">The generic type.</typeparam>
           45        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           46        /// <returns>An Array{T} that contains the elements from the input sequence.</returns>
           47        public static T[] ToDynamicArray<T>([NotNull] this IEnumerable source)
           5448        {
           5449            Check.NotNull(source, nameof(source));
           5450            return CastToArray<T>(source);
           5451        }
           52
           53        /// <summary>
           54        /// Creates an array of dynamic objects from a <see cref="IEnumerable"/>.
           55        /// </summary>
           56        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           57        /// <param name="type">A <see cref="Type"/> cast to.</param>
           58        /// <returns>An Array that contains the elements from the input sequence.</returns>
           59#if NET35
           60        public static object[] ToDynamicArray([NotNull] this IEnumerable source, [NotNull] Type type)
           61#else
           62        public static dynamic[] ToDynamicArray([NotNull] this IEnumerable source, [NotNull] Type type)
           63#endif
           564        {
           565            Check.NotNull(source, nameof(source));
           566            Check.NotNull(type, nameof(type));
           67
           568            IEnumerable result = (IEnumerable)ToDynamicArrayGenericMethod.MakeGenericMethod(type).Invoke(source, new obj
           69#if NET35
           70            return CastToArray<object>(result);
           71#else
           572            return CastToArray<dynamic>(result);
           73#endif
           574        }
           75
           76        /// <summary>
           77        /// Creates a list of dynamic objects from a <see cref="IEnumerable"/>.
           78        /// </summary>
           79        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           80        /// <returns>A List that contains the elements from the input sequence.</returns>
           81#if NET35
           82        public static List<object> ToDynamicList([NotNull] this IEnumerable source)
           83#else
           84        public static List<dynamic> ToDynamicList([NotNull] this IEnumerable source)
           85#endif
           2486        {
           2487            Check.NotNull(source, nameof(source));
           88#if NET35
           89            return CastToList<object>(source);
           90#else
           2491            return CastToList<dynamic>(source);
           92#endif
           2293        }
           94
           95        /// <summary>
           96        /// Creates a list of dynamic objects from a <see cref="IEnumerable"/>.
           97        /// </summary>
           98        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           99        /// <param name="type">A <see cref="Type"/> cast to.</param>
           100        /// <returns>A List that contains the elements from the input sequence.</returns>
           101#if NET35
           102        public static List<object> ToDynamicList([NotNull] this IEnumerable source, [NotNull] Type type)
           103#else
           104        public static List<dynamic> ToDynamicList([NotNull] this IEnumerable source, [NotNull] Type type)
           105#endif
           4106        {
           4107            Check.NotNull(source, nameof(source));
           4108            Check.NotNull(type, nameof(type));
           109
           4110            return ToDynamicArray(source, type).ToList();
           4111        }
           112
           113        /// <summary>
           114        /// Creates a list of dynamic objects from a <see cref="IEnumerable"/>.
           115        /// </summary>
           116        /// <typeparam name="T">Generic Type</typeparam>
           117        /// <param name="source">A <see cref="IEnumerable"/> to create an array from.</param>
           118        /// <returns>A List{T} that contains the elements from the input sequence.</returns>
           119        public static List<T> ToDynamicList<T>([NotNull] this IEnumerable source)
           17120        {
           17121            Check.NotNull(source, nameof(source));
           17122            return CastToList<T>(source);
           17123        }
           124
           125        internal static T[] CastToArray<T>(IEnumerable source)
           118126        {
           118127            return source.Cast<T>().ToArray();
           117128        }
           129
           130        internal static List<T> CastToList<T>(IEnumerable source)
           41131        {
           41132            return source.Cast<T>().ToList();
           39133        }
           134    }
           135}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicExpressionParser.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicExpressionParser.html deleted file mode 100644 index 8ebbb229..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicExpressionParser.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicExpressionParser - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicExpressionParser
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicExpressionParser.cs
          Covered lines:82
          Uncovered lines:30
          Coverable lines:112
          Total lines:453
          Line coverage:73.2% (82 of 112)
          Covered branches:12
          Total branches:18
          Branch coverage:66.6% (12 of 18)
          Covered methods:16
          Total methods:24
          Method coverage:66.6% (16 of 24)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ParseLambda(...)100%11100%
          ParseLambda(...)100%110%
          ParseLambda(...)100%110%
          ParseLambda(...)100%110%
          ParseLambda(...)100%11100%
          ParseLambda(...)90%101090%
          ParseLambda(...)100%110%
          ParseLambda(...)100%110%
          ParseLambda(...)100%11100%
          ParseLambda(...)50%22100%
          ParseLambda(...)0%220%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%110%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%11100%
          ParseLambda(...)50%22100%
          ParseLambda(...)50%22100%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%11100%
          ParseLambda(...)100%110%
          ParseLambda(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicExpressionParser.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Linq.Dynamic.Core.Parser;
           3using System.Linq.Dynamic.Core.Util;
           4using System.Linq.Dynamic.Core.Validation;
           5using System.Linq.Expressions;
           6
           7namespace System.Linq.Dynamic.Core
           8{
           9    /// <summary>
           10    /// Helper class to convert an expression into an LambdaExpression
           11    /// </summary>
           12    public static class DynamicExpressionParser
           13    {
           14        /// <summary>
           15        /// Parses an expression into a LambdaExpression.
           16        /// </summary>
           17        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           18        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           19        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           20        /// <param name="expression">The expression.</param>
           21        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           22        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           23        [PublicAPI]
           24        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, bool createParameterCtor, [C
           1225        {
           1226            Check.NotEmpty(expression, nameof(expression));
           27
           1228            var parser = new ExpressionParser(new ParameterExpression[0], expression, values, parsingConfig);
           29
           1230            return Expression.Lambda(parser.Parse(resultType, createParameterCtor));
           1231        }
           32
           33        /// <summary>
           34        /// Parses an expression into a LambdaExpression.
           35        /// </summary>
           36        /// <param name="delegateType">The delegate type.</param>
           37        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           38        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           39        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           40        /// <param name="expression">The expression.</param>
           41        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           42        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           43        [PublicAPI]
           44        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfig,
           045        {
           046            Check.NotEmpty(expression, nameof(expression));
           47
           048            var parser = new ExpressionParser(new ParameterExpression[0], expression, values, parsingConfig);
           49
           050            return Expression.Lambda(delegateType, parser.Parse(resultType, createParameterCtor));
           051        }
           52
           53        /// <summary>
           54        /// Parses an expression into a Typed Expression.
           55        /// </summary>
           56        /// <typeparam name="TResult">The type of the result.</typeparam>
           57        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           58        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           59        /// <param name="expression">The expression.</param>
           60        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           61        /// <returns>The generated <see cref="Expression"/></returns>
           62        [PublicAPI]
           63        public static Expression<Func<TResult>> ParseLambda<TResult>([CanBeNull] ParsingConfig parsingConfig, bool creat
           064        {
           065            return (Expression<Func<TResult>>)ParseLambda(parsingConfig, createParameterCtor, typeof(TResult), expressio
           066        }
           67
           68        /// <summary>
           69        /// Parses an expression into a Typed Expression.
           70        /// </summary>
           71        /// <typeparam name="TResult">The type of the result.</typeparam>
           72        /// <param name="delegateType">The delegate type.</param>
           73        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           74        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           75        /// <param name="expression">The expression.</param>
           76        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           77        /// <returns>The generated <see cref="Expression"/></returns>
           78        [PublicAPI]
           79        public static Expression<Func<TResult>> ParseLambda<TResult>([NotNull] Type delegateType, [CanBeNull] ParsingCon
           080        {
           081            return (Expression<Func<TResult>>)ParseLambda(delegateType, parsingConfig, createParameterCtor, typeof(TResu
           082        }
           83
           84        /// <summary>
           85        /// Parses an expression into a LambdaExpression.
           86        /// </summary>
           87        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           88        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           89        /// <param name="parameters">A array from ParameterExpressions.</param>
           90        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           91        /// <param name="expression">The expression.</param>
           92        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           93        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           94        [PublicAPI]
           95        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, bool createParameterCtor, [N
           78296        {
           78297            return ParseLambda(null, parsingConfig, createParameterCtor, parameters, resultType, expression, values);
           72698        }
           99
           100        /// <summary>
           101        /// Parses an expression into a LambdaExpression.
           102        /// </summary>
           103        /// <param name="delegateType">The delegate type.</param>
           104        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           105        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           106        /// <param name="parameters">A array from ParameterExpressions.</param>
           107        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           108        /// <param name="expression">The expression.</param>
           109        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           110        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           111        [PublicAPI]
           112        public static LambdaExpression ParseLambda([CanBeNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfi
           785113        {
           785114            LambdaExpression lambdaExpression = null;
           115
           785116            Check.NotNull(parameters, nameof(parameters));
           785117            Check.HasNoNulls(parameters, nameof(parameters));
           785118            Check.NotEmpty(expression, nameof(expression));
           119
           785120            var parser = new ExpressionParser(parameters, expression, values, parsingConfig);
           121
           784122            var parsedExpression = parser.Parse(resultType, createParameterCtor);
           123
           729124            if (parsingConfig != null && parsingConfig.RenameParameterExpression && parameters.Length == 1)
           3125            {
           3126                var renamer = new ParameterExpressionRenamer(parser.LastLambdaItName);
           3127                parsedExpression = renamer.Rename(parsedExpression, out ParameterExpression newParameterExpression);
           128
           3129                if (delegateType == null)
           3130                {
           3131                    lambdaExpression = Expression.Lambda(parsedExpression, new[] { newParameterExpression });
           3132                }
           133                else
           0134                {
           0135                    lambdaExpression = Expression.Lambda(delegateType, parsedExpression, new[] { newParameterExpression 
           0136                }
           3137            }
           138            else
           726139            {
           726140                if (delegateType == null)
           723141                {
           723142                    lambdaExpression = Expression.Lambda(parsedExpression, parameters);
           723143                }
           144                else
           3145                {
           3146                    lambdaExpression = Expression.Lambda(delegateType, parsedExpression, parameters);
           3147                }
           726148            }
           149
           729150            return lambdaExpression;
           729151        }
           152
           153        /// <summary>
           154        /// Parses an expression into a Typed Expression.
           155        /// </summary>
           156        /// <typeparam name="TResult">The type of the result.</typeparam>
           157        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           158        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           159        /// <param name="parameters">A array from ParameterExpressions.</param>
           160        /// <param name="expression">The expression.</param>
           161        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           162        /// <returns>The generated <see cref="Expression"/></returns>
           163        [PublicAPI]
           164        public static Expression<Func<TResult>> ParseLambda<TResult>([CanBeNull] ParsingConfig parsingConfig, bool creat
           0165        {
           0166            return (Expression<Func<TResult>>)ParseLambda(parsingConfig, createParameterCtor, parameters, typeof(TResult
           0167        }
           168
           169        /// <summary>
           170        /// Parses an expression into a Typed Expression.
           171        /// </summary>
           172        /// <typeparam name="TResult">The type of the result.</typeparam>
           173        /// <param name="delegateType">The delegate type.</param>
           174        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           175        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           176        /// <param name="parameters">A array from ParameterExpressions.</param>
           177        /// <param name="expression">The expression.</param>
           178        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           179        /// <returns>The generated <see cref="Expression"/></returns>
           180        [PublicAPI]
           181        public static Expression<Func<TResult>> ParseLambda<TResult>([NotNull] Type delegateType, [CanBeNull] ParsingCon
           0182        {
           0183            return (Expression<Func<TResult>>)ParseLambda(delegateType, parsingConfig, createParameterCtor, parameters, 
           0184        }
           185
           186        /// <summary>
           187        /// Parses an expression into a LambdaExpression.
           188        /// </summary>
           189        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           190        /// <param name="itType">The main type from the dynamic class expression.</param>
           191        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           192        /// <param name="expression">The expression.</param>
           193        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           194        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           195        [PublicAPI]
           196        public static LambdaExpression ParseLambda(bool createParameterCtor, [NotNull] Type itType, [CanBeNull] Type res
           37197        {
           37198            Check.NotNull(itType, nameof(itType));
           37199            Check.NotEmpty(expression, nameof(expression));
           200
           37201            return ParseLambda(createParameterCtor, new[] { ParameterExpressionHelper.CreateParameterExpression(itType, 
           36202        }
           203
           204        /// <summary>
           205        /// Parses an expression into a Typed Expression.
           206        /// </summary>
           207        /// <typeparam name="T">The `it`-Type.</typeparam>
           208        /// <typeparam name="TResult">The type of the result.</typeparam>
           209        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           210        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           211        /// <param name="expression">The expression.</param>
           212        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           213        /// <returns>The generated <see cref="Expression"/></returns>
           214        [PublicAPI]
           215        public static Expression<Func<T, TResult>> ParseLambda<T, TResult>([CanBeNull] ParsingConfig parsingConfig, bool
           25216        {
           25217            Check.NotEmpty(expression, nameof(expression));
           218
           25219            return (Expression<Func<T, TResult>>)ParseLambda(parsingConfig, createParameterCtor, new[] { ParameterExpres
           25220        }
           221
           222        /// <summary>
           223        /// Parses an expression into a Typed Expression.
           224        /// </summary>
           225        /// <typeparam name="T">The `it`-Type.</typeparam>
           226        /// <typeparam name="TResult">The type of the result.</typeparam>
           227        /// <param name="delegateType">The delegate type.</param>
           228        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           229        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           230        /// <param name="expression">The expression.</param>
           231        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           232        /// <returns>The generated <see cref="Expression"/></returns>
           233        [PublicAPI]
           234        public static Expression<Func<T, TResult>> ParseLambda<T, TResult>([NotNull] Type delegateType, [CanBeNull] Pars
           0235        {
           0236            Check.NotEmpty(expression, nameof(expression));
           237
           0238            return (Expression<Func<T, TResult>>)ParseLambda(delegateType, parsingConfig, createParameterCtor, new[] { P
           0239        }
           240
           241        /// <summary>
           242        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           243        /// </summary>
           244        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           245        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           246        /// <param name="expression">The expression.</param>
           247        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           248        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           249        [PublicAPI]
           250        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, [CanBeNull] Type resultType,
           2251        {
           2252            return ParseLambda(parsingConfig, true, resultType, expression, values);
           2253        }
           254
           255        /// <summary>
           256        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           257        /// </summary>
           258        /// <param name="delegateType">The delegate type.</param>
           259        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           260        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           261        /// <param name="expression">The expression.</param>
           262        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           263        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           264        [PublicAPI]
           265        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfig,
           0266        {
           0267            return ParseLambda(delegateType, parsingConfig, true, resultType, expression, values);
           0268        }
           269
           270        /// <summary>
           271        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           272        /// </summary>
           273        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           274        /// <param name="expression">The expression.</param>
           275        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           276        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           277        [PublicAPI]
           278        public static LambdaExpression ParseLambda([CanBeNull] Type resultType, [NotNull] string expression, params obje
           10279        {
           10280            Check.NotEmpty(expression, nameof(expression));
           281
           10282            return ParseLambda(null, true, resultType, expression, values);
           10283        }
           284
           285        // DO NOT ADD: It create ambiguous method error
           286        //[PublicAPI]
           287        //public static LambdaExpression ParseLambda([CanBeNull] Type delegateType, [CanBeNull] Type resultType, [NotNul
           288        //{
           289        //    Check.NotEmpty(expression, nameof(expression));
           290
           291        //    return ParseLambda(delegateType, null, true, resultType, expression, values);
           292        //}
           293
           294        /// <summary>
           295        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           296        /// </summary>
           297        /// <param name="itType">The main type from the dynamic class expression.</param>
           298        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           299        /// <param name="expression">The expression.</param>
           300        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           301        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           302        [PublicAPI]
           303        public static LambdaExpression ParseLambda([NotNull] Type itType, [CanBeNull] Type resultType, string expression
           15304        {
           15305            return ParseLambda(true, itType, resultType, expression, values);
           14306        }
           307
           308        /// <summary>
           309        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           310        /// </summary>
           311        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           312        /// <param name="itType">The main type from the dynamic class expression.</param>
           313        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           314        /// <param name="expression">The expression.</param>
           315        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           316        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           317        [PublicAPI]
           318        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, [NotNull] Type itType, [CanB
           5319        {
           5320            return ParseLambda(parsingConfig, true, itType, resultType, expression, values);
           5321        }
           322
           323        /// <summary>
           324        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           325        /// </summary>
           326        /// <param name="delegateType">The delegate type.</param>
           327        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           328        /// <param name="itType">The main type from the dynamic class expression.</param>
           329        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           330        /// <param name="expression">The expression.</param>
           331        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           332        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           333        [PublicAPI]
           334        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfig,
           1335        {
           1336            return ParseLambda(delegateType, parsingConfig, true, itType, resultType, expression, values);
           1337        }
           338
           339        /// <summary>
           340        /// Parses an expression into a LambdaExpression.
           341        /// </summary>
           342        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           343        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           344        /// <param name="itType">The main type from the dynamic class expression.</param>
           345        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           346        /// <param name="expression">The expression.</param>
           347        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           348        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           349        [PublicAPI]
           350        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, bool createParameterCtor, [N
           660351        {
           660352            Check.NotNull(itType, nameof(itType));
           660353            Check.NotEmpty(expression, nameof(expression));
           354
           660355            return ParseLambda(parsingConfig, createParameterCtor, new[] { ParameterExpressionHelper.CreateParameterExpr
           607356        }
           357
           358        /// <summary>
           359        /// Parses an expression into a LambdaExpression.
           360        /// </summary>
           361        /// <param name="delegateType">The delegate type.</param>
           362        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           363        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           364        /// <param name="itType">The main type from the dynamic class expression.</param>
           365        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           366        /// <param name="expression">The expression.</param>
           367        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           368        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           369        [PublicAPI]
           370        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfig,
           1371        {
           1372            Check.NotNull(itType, nameof(itType));
           1373            Check.NotEmpty(expression, nameof(expression));
           374
           1375            return ParseLambda(delegateType, parsingConfig, createParameterCtor, new[] { ParameterExpressionHelper.Creat
           1376        }
           377
           378        /// <summary>
           379        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           380        /// </summary>
           381        /// <param name="parameters">A array from ParameterExpressions.</param>
           382        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           383        /// <param name="expression">The expression.</param>
           384        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           385        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           386        [PublicAPI]
           387        public static LambdaExpression ParseLambda([NotNull] ParameterExpression[] parameters, [CanBeNull] Type resultTy
           18388        {
           18389            return ParseLambda(null, true, parameters, resultType, expression, values);
           16390        }
           391
           392        /// <summary>
           393        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           394        /// </summary>
           395        /// <param name="delegateType">The delegate type.</param>
           396        /// <param name="parameters">A array from ParameterExpressions.</param>
           397        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           398        /// <param name="expression">The expression.</param>
           399        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           400        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           401        [PublicAPI]
           402        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [NotNull] ParameterExpression[] paramete
           2403        {
           2404            return ParseLambda(delegateType, null, true, parameters, resultType, expression, values);
           2405        }
           406
           407        /// <summary>
           408        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           409        /// </summary>
           410        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           411        /// <param name="parameters">A array from ParameterExpressions.</param>
           412        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           413        /// <param name="expression">The expression.</param>
           414        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           415        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           416        [PublicAPI]
           417        public static LambdaExpression ParseLambda([CanBeNull] ParsingConfig parsingConfig, [NotNull] ParameterExpressio
           30418        {
           30419            return ParseLambda(parsingConfig, true, parameters, resultType, expression, values);
           30420        }
           421
           422        /// <summary>
           423        /// Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that t
           424        /// </summary>
           425        /// <param name="delegateType">The delegate type.</param>
           426        /// <param name="parsingConfig">The Configuration for the parsing.</param>
           427        /// <param name="parameters">A array from ParameterExpressions.</param>
           428        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           429        /// <param name="expression">The expression.</param>
           430        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           431        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           432        [PublicAPI]
           433        public static LambdaExpression ParseLambda([NotNull] Type delegateType, [CanBeNull] ParsingConfig parsingConfig,
           0434        {
           0435            return ParseLambda(delegateType, parsingConfig, true, parameters, resultType, expression, values);
           0436        }
           437
           438        /// <summary>
           439        /// Parses an expression into a LambdaExpression.
           440        /// </summary>
           441        /// <param name="createParameterCtor">if set to <c>true</c> then also create a constructor for all the parameter
           442        /// <param name="parameters">A array from ParameterExpressions.</param>
           443        /// <param name="resultType">Type of the result. If not specified, it will be generated dynamically.</param>
           444        /// <param name="expression">The expression.</param>
           445        /// <param name="values">An object array that contains zero or more objects which are used as replacement values
           446        /// <returns>The generated <see cref="LambdaExpression"/></returns>
           447        [PublicAPI]
           448        public static LambdaExpression ParseLambda(bool createParameterCtor, [NotNull] ParameterExpression[] parameters,
           39449        {
           39450            return ParseLambda(null, createParameterCtor, parameters, resultType, expression, values);
           38451        }
           452    }
           453}
          -
          -
          -
          -

          Methods/Properties

          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Linq.Expressions.ParameterExpression[],System.String,System.Object[])
          -ParseLambda(System.Boolean,System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Linq.Dynamic.Core.ParsingConfig,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Type,System.Linq.Dynamic.Core.ParsingConfig,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -ParseLambda(System.Boolean,System.Linq.Expressions.ParameterExpression[],System.Type,System.String,System.Object[])
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicGetMemberBinder.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicGetMemberBinder.html deleted file mode 100644 index a8ee852c..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicGetMemberBinder.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicGetMemberBinder - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicGetMemberBinder
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicGetMemberBinder.cs
          Covered lines:30
          Uncovered lines:4
          Coverable lines:34
          Total lines:68
          Line coverage:88.2% (30 of 34)
          Covered branches:9
          Total branches:12
          Branch coverage:75% (9 of 12)
          Covered methods:4
          Total methods:4
          Method coverage:100% (4 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          .ctor(...)50%22100%
          FallbackGetMember(...)100%11100%
          GetDynamicMember(...)80%101081.81%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicGetMemberBinder.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1#if !NET35 && !UAP10_0 && !NETSTANDARD1_3
           2using System.Collections;
           3using System.Collections.Generic;
           4using System.Dynamic;
           5using System.Linq.Expressions;
           6using System.Reflection;
           7using JetBrains.Annotations;
           8
           9namespace System.Linq.Dynamic.Core
           10{
           11    /// <summary>
           12    /// Code is based on SqlLinq by dkackman (https://github.com/dkackman/SqlLinq/blob/210b594e37f14061424397368ed750ce5
           13    /// </summary>
           14    /// <seealso cref="GetMemberBinder" />
           15    internal class DynamicGetMemberBinder : GetMemberBinder
           16    {
           117        private static readonly MethodInfo DynamicGetMemberMethod = typeof(DynamicGetMemberBinder).GetMethod(nameof(GetD
           18
           1119        public DynamicGetMemberBinder(string name, [CanBeNull] ParsingConfig config) : base(name, !(config?.IsCaseSensit
           1120        {
           1121        }
           22
           23        public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion)
           1024        {
           1025            var instance = Expression.Call(
           1026                DynamicGetMemberMethod,
           1027                target.Expression,
           1028                Expression.Constant(Name),
           1029                Expression.Constant(IgnoreCase));
           30
           1031            return DynamicMetaObject.Create(target.Value, instance);
           1032        }
           33
           34        public static object GetDynamicMember(object value, string name, bool ignoreCase)
           1035        {
           1036            if (value == null)
           237            {
           238                throw new InvalidOperationException();
           39            }
           40
           841            if (value is IDictionary<string, object> stringObjectDictionary)
           442            {
           443                return stringObjectDictionary[name];
           44            }
           45
           446            if (value is IDictionary nonGenericDictionary)
           047            {
           048                return nonGenericDictionary[name];
           49            }
           50
           451            var flags = BindingFlags.Instance | BindingFlags.Public;
           452            if (ignoreCase)
           453            {
           454                flags |= BindingFlags.IgnoreCase;
           455            }
           56
           457            var type = value.GetType();
           458            var property = type.GetProperty(name, flags);
           459            if (property == null)
           060            {
           061                throw new InvalidOperationException($"Unable to find property '{name}' on type '{type}'.");
           62            }
           63
           464            return property.GetValue(value, null);
           865        }
           66    }
           67}
           68#endif
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicProperty.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicProperty.html deleted file mode 100644 index 49755b1e..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicProperty.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicProperty - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicProperty
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicProperty.cs
          Covered lines:7
          Uncovered lines:0
          Coverable lines:7
          Total lines:35
          Line coverage:100% (7 of 7)
          Covered branches:0
          Total branches:0
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicProperty.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1namespace System.Linq.Dynamic.Core
           2{
           3    /// <summary>
           4    /// DynamicProperty
           5    /// </summary>
           6    public class DynamicProperty
           7    {
           8        /// <summary>
           9        /// Initializes a new instance of the <see cref="DynamicProperty"/> class.
           10        /// </summary>
           11        /// <param name="name">The name from the property.</param>
           12        /// <param name="type">The type from the property.</param>
           14413        public DynamicProperty(string name, Type type)
           14414        {
           14415            Name = name;
           14416            Type = type;
           14417        }
           18
           19        /// <summary>
           20        /// Gets the name from the property.
           21        /// </summary>
           22        /// <value>
           23        /// The name from the property.
           24        /// </value>
           38225        public string Name { get; }
           26
           27        /// <summary>
           28        /// Gets the type from the property.
           29        /// </summary>
           30        /// <value>
           31        /// The type from the property.
           32        /// </value>
           36733        public Type Type { get; }
           34    }
           35}
          -
          -
          - -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableExtensions.html deleted file mode 100644 index a7b9d0d1..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableExtensions.html +++ /dev/null @@ -1,3213 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicQueryableExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicQueryableExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicQueryableExtensions.cs
          Covered lines:968
          Uncovered lines:54
          Coverable lines:1022
          Total lines:2809
          Line coverage:94.7% (968 of 1022)
          Covered branches:88
          Total branches:108
          Branch coverage:81.4% (88 of 108)
          Covered methods:140
          Total methods:154
          Method coverage:90.9% (140 of 154)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          OptimizeExpression(...)75%4466.66%
          Aggregate(...)75%88100%
          All(...)100%11100%
          All(...)100%11100%
          Any(...)100%11100%
          Any(...)100%11100%
          Any(...)100%11100%
          Any(...)100%11100%
          Average(...)100%11100%
          Average(...)100%11100%
          Average(...)100%11100%
          Average(...)100%11100%
          AsEnumerable()100%22100%
          Cast(...)100%11100%
          Cast(...)100%11100%
          Cast(...)100%11100%
          Count(...)100%11100%
          Count(...)100%11100%
          Count(...)100%11100%
          Count(...)100%11100%
          DefaultIfEmpty(...)100%11100%
          DefaultIfEmpty(...)100%11100%
          Distinct(...)100%11100%
          First(...)100%11100%
          First(...)100%11100%
          First(...)100%11100%
          First(...)100%11100%
          FirstOrDefault(...)100%11100%
          FirstOrDefault(...)100%11100%
          FirstOrDefault(...)100%11100%
          FirstOrDefault(...)100%11100%
          GroupBy(...)100%110%
          GroupBy(...)100%11100%
          InternalGroupBy(...)75%44100%
          GroupBy(...)100%110%
          GroupBy(...)100%110%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          InternalGroupBy(...)75%44100%
          GroupBy(...)100%11100%
          GroupBy(...)100%11100%
          GroupByMany(...)100%22100%
          GroupByMany(...)100%11100%
          GroupByMany(...)100%11100%
          GroupByManyInternal(...)100%22100%
          GroupJoin(...)50%22100%
          GroupJoin(...)100%11100%
          Join(...)50%22100%
          Join(...)100%11100%
          Join(...)100%110%
          Join(...)100%110%
          Last(...)100%11100%
          Last(...)100%11100%
          Last(...)100%11100%
          Last(...)100%11100%
          LastOrDefault(...)100%11100%
          LastOrDefault(...)100%11100%
          LastOrDefault(...)100%11100%
          LastOrDefault(...)100%11100%
          LongCount(...)100%11100%
          LongCount(...)100%11100%
          LongCount(...)100%11100%
          LongCount(...)100%110%
          Max(...)100%11100%
          Max(...)100%11100%
          Max(...)100%11100%
          Max(...)100%110%
          Min(...)100%11100%
          Min(...)100%11100%
          Min(...)100%11100%
          Min(...)100%110%
          OfType(...)100%11100%
          OfType(...)100%11100%
          OfType(...)100%11100%
          OrderBy(...)100%11100%
          OrderBy(...)100%11100%
          OrderBy(...)100%11100%
          OrderBy(...)100%11100%
          OrderBy(...)100%66100%
          OrderBy(...)100%110%
          InternalOrderBy(...)100%66100%
          OrderBy(...)100%11100%
          OrderBy(...)100%110%
          Page(...)100%11100%
          Page(...)100%44100%
          PageResult(...)50%44100%
          PageResult(...)80%1010100%
          Reverse(...)100%11100%
          Select(...)50%22100%
          Select(...)100%11100%
          Select(...)50%22100%
          Select(...)100%11100%
          Select(...)50%22100%
          Select(...)100%11100%
          SelectMany(...)100%11100%
          SelectMany(...)100%11100%
          SelectMany(...)100%11100%
          SelectMany(...)100%11100%
          SelectManyInternal(...)87.5%88100%
          SelectMany(...)50%22100%
          SelectMany(...)100%11100%
          SelectMany(...)100%110%
          SelectMany(...)100%11100%
          SelectMany(...)50%22100%
          SelectMany(...)100%11100%
          Single(...)100%11100%
          Single(...)100%11100%
          Single(...)100%11100%
          Single(...)100%11100%
          SingleOrDefault(...)100%11100%
          SingleOrDefault(...)100%11100%
          SingleOrDefault(...)100%11100%
          SingleOrDefault(...)100%11100%
          Skip(...)100%22100%
          SkipWhile(...)100%11100%
          SkipWhile(...)100%11100%
          Sum(...)100%11100%
          Sum(...)100%11100%
          Sum(...)100%11100%
          Sum(...)100%110%
          Take(...)100%11100%
          TakeWhile(...)100%11100%
          TakeWhile(...)100%11100%
          ThenBy(...)100%11100%
          ThenBy(...)100%11100%
          ThenBy(...)100%11100%
          ThenBy(...)100%11100%
          ThenBy(...)100%11100%
          ThenBy(...)100%110%
          InternalThenBy(...)100%44100%
          ThenBy(...)100%1166.66%
          ThenBy(...)100%110%
          Where(...)100%11100%
          Where(...)100%11100%
          Where(...)100%11100%
          Where(...)100%11100%
          Where(...)100%11100%
          Where(...)100%11100%
          SupportsLinqToObjects(...)100%11100%
          CheckOuterAndInnerTypes(...)91.66%1212100%
          CreateQuery(...)100%22100%
          CreateQuery(...)100%11100%
          CreateQuery(...)50%22100%
          Execute(...)100%22100%
          Execute(...)100%22100%
          Execute(...)100%11100%
          Execute(...)100%22100%
          Execute(...)100%11100%
          Execute(...)50%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicQueryableExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Collections;
           3using System.Globalization;
           4using System.Linq.Dynamic.Core.Exceptions;
           5#if !(WINDOWS_APP45x || SILVERLIGHT)
           6using System.Diagnostics;
           7#endif
           8using System.Linq.Dynamic.Core.Validation;
           9using System.Linq.Expressions;
           10using System.Reflection;
           11using JetBrains.Annotations;
           12using System.Linq.Dynamic.Core.Parser;
           13using System.Linq.Dynamic.Core.Util;
           14
           15#if WINDOWS_APP
           16using System;
           17using System.Linq;
           18#endif
           19
           20namespace System.Linq.Dynamic.Core
           21{
           22    /// <summary>
           23    /// Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement <see cref=
           24    /// It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries th
           25    /// or when downstream components only return column names to sort and filter by.
           26    /// </summary>
           27    public static class DynamicQueryableExtensions
           28    {
           29#if !(WINDOWS_APP45x || SILVERLIGHT)
           130        private static readonly TraceSource TraceSource = new TraceSource(nameof(DynamicQueryableExtensions));
           31#endif
           32
           33        private static Expression OptimizeExpression(Expression expression)
           81034        {
           81035            if (ExtensibilityPoint.QueryOptimizer != null)
           80936            {
           80937                var optimized = ExtensibilityPoint.QueryOptimizer(expression);
           38
           39#if !(WINDOWS_APP45x || SILVERLIGHT)
           80940                if (optimized != expression)
           041                {
           042                    TraceSource.TraceEvent(TraceEventType.Verbose, 0, "Expression before : {0}", expression);
           043                    TraceSource.TraceEvent(TraceEventType.Verbose, 0, "Expression after  : {0}", optimized);
           044                }
           45#endif
           80946                return optimized;
           47            }
           48
           149            return expression;
           81050        }
           51
           52        #region Aggregate
           53        /// <summary>
           54        /// Dynamically runs an aggregate function on the IQueryable.
           55        /// </summary>
           56        /// <param name="source">The IQueryable data source.</param>
           57        /// <param name="function">The name of the function to run. Can be Sum, Average, Min or Max.</param>
           58        /// <param name="member">The name of the property to aggregate over.</param>
           59        /// <returns>The value of the aggregate function run over the specified property.</returns>
           60        public static object Aggregate([NotNull] this IQueryable source, [NotNull] string function, [NotNull] string mem
           1261        {
           1262            Check.NotNull(source, nameof(source));
           1263            Check.NotEmpty(function, nameof(function));
           1264            Check.NotEmpty(member, nameof(member));
           65
           66            // Properties
           1267            PropertyInfo property = source.ElementType.GetProperty(member);
           1268            ParameterExpression parameter = ParameterExpressionHelper.CreateParameterExpression(source.ElementType, "s")
           1269            Expression selector = Expression.Lambda(Expression.MakeMemberAccess(parameter, property), parameter);
           70            // We've tried to find an expression of the type Expression<Func<TSource, TAcc>>,
           71            // which is expressed as ( (TSource s) => s.Price );
           72
           283873            var methods = typeof(Queryable).GetMethods().Where(x => x.Name == function && x.IsGenericMethod);
           74
           75            // Method
           1276            MethodInfo aggregateMethod = methods.SingleOrDefault(m =>
           7877            {
           7878                ParameterInfo lastParameter = m.GetParameters().LastOrDefault();
           1279
           7880                return lastParameter != null && TypeHelper.GetUnderlyingType(lastParameter.ParameterType) == property.Pr
           9081            });
           82
           83            // Sum, Average
           1284            if (aggregateMethod != null)
           685            {
           686                return source.Provider.Execute(
           687                    Expression.Call(
           688                        null,
           689                        aggregateMethod.MakeGenericMethod(source.ElementType),
           690                        new[] { source.Expression, Expression.Quote(selector) }));
           91            }
           92
           93            // Min, Max
           2494            aggregateMethod = methods.SingleOrDefault(m => m.Name == function && m.GetGenericArguments().Length == 2);
           95
           696            return source.Provider.Execute(
           697                Expression.Call(
           698                    null,
           699                    aggregateMethod.MakeGenericMethod(source.ElementType, property.PropertyType),
           6100                    new[] { source.Expression, Expression.Quote(selector) }));
           12101        }
           102        #endregion Aggregate
           103
           104        #region All
           1105        private static readonly MethodInfo _AllPredicate = QueryableMethodFinder.GetMethod(nameof(Queryable.All), 1);
           106
           107        /// <summary>
           108        ///     Determines whether all the elements of a sequence satisfy a condition.
           109        /// </summary>
           110        /// <remarks>
           111        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           112        ///     that All asynchronous operations have completed before calling another method on this context.
           113        /// </remarks>
           114        /// <param name="source">
           115        ///     An <see cref="IQueryable" /> to calculate the All of.
           116        /// </param>
           117        /// <param name="predicate">A projection function to apply to each element.</param>
           118        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           119        /// <returns>
           120        ///     true if every element of the source sequence passes the test in the specified predicate, or if the seque
           121        /// </returns>
           122        [PublicAPI]
           123        public static bool All([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] params object[]
           5124        {
           5125            return All(source, ParsingConfig.Default, predicate, args);
           5126        }
           127
           128        /// <summary>
           129        ///     Determines whether all the elements of a sequence satisfy a condition.
           130        /// </summary>
           131        /// <remarks>
           132        ///     Multiple active operations on the same context instance are not supported.  Use 'await' to ensure
           133        ///     that All asynchronous operations have completed before calling another method on this context.
           134        /// </remarks>
           135        /// <param name="source">
           136        ///     An <see cref="IQueryable" /> to calculate the All of.
           137        /// </param>
           138        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           139        /// <param name="predicate">A projection function to apply to each element.</param>
           140        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           141        /// <returns>
           142        ///     true if every element of the source sequence passes the test in the specified predicate, or if the seque
           143        /// </returns>
           144        [PublicAPI]
           145        public static bool All([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string predic
           5146        {
           5147            Check.NotNull(source, nameof(source));
           5148            Check.NotNull(config, nameof(config));
           5149            Check.NotEmpty(predicate, nameof(predicate));
           150
           5151            bool createParameterCtor = SupportsLinqToObjects(config, source);
           5152            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(createParameterCtor, source.ElementType, null,
           153
           5154            return Execute<bool>(_AllPredicate, source, Expression.Quote(lambda));
           5155        }
           156        #endregion AllAsync
           157
           158        #region Any
           1159        private static readonly MethodInfo _any = QueryableMethodFinder.GetMethod(nameof(Queryable.Any));
           160
           161        /// <summary>
           162        /// Determines whether a sequence contains any elements.
           163        /// </summary>
           164        /// <param name="source">A sequence to check for being empty.</param>
           165        /// <example>
           166        /// <code language="cs">
           167        /// IQueryable queryable = employees.AsQueryable();
           168        /// var result = queryable.Any();
           169        /// </code>
           170        /// </example>
           171        /// <returns>true if the source sequence contains any elements; otherwise, false.</returns>
           172        public static bool Any([NotNull] this IQueryable source)
           10173        {
           10174            Check.NotNull(source, nameof(source));
           175
           10176            return Execute<bool>(_any, source);
           10177        }
           178
           1179        private static readonly MethodInfo _anyPredicate = QueryableMethodFinder.GetMethod(nameof(Queryable.Any), 1);
           180
           181        /// <summary>
           182        /// Determines whether a sequence contains any elements.
           183        /// </summary>
           184        /// <param name="source">A sequence to check for being empty.</param>
           185        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           186        /// <param name="predicate">A function to test each element for a condition.</param>
           187        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           188        /// <example>
           189        /// <code language="cs">
           190        /// IQueryable queryable = employees.AsQueryable();
           191        /// var result1 = queryable.Any("Income > 50");
           192        /// var result2 = queryable.Any("Income > @0", 50);
           193        /// var result3 = queryable.Select("Roles.Any()");
           194        /// </code>
           195        /// </example>
           196        /// <returns>true if the source sequence contains any elements; otherwise, false.</returns>
           197        [PublicAPI]
           198        public static bool Any([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string predic
           7199        {
           7200            Check.NotNull(source, nameof(source));
           7201            Check.NotNull(config, nameof(config));
           7202            Check.NotEmpty(predicate, nameof(predicate));
           203
           7204            bool createParameterCtor = SupportsLinqToObjects(config, source);
           7205            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           206
           7207            return Execute<bool>(_anyPredicate, source, lambda);
           7208        }
           209
           210        /// <inheritdoc cref="Any(IQueryable, ParsingConfig, string, object[])"/>
           211        public static bool Any([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           6212        {
           6213            return Any(source, ParsingConfig.Default, predicate, args);
           6214        }
           215
           216        /// <summary>
           217        /// Determines whether a sequence contains any elements.
           218        /// </summary>
           219        /// <param name="source">A sequence to check for being empty.</param>
           220        /// <param name="lambda">A cached Lambda Expression.</param>
           221        /// <returns>true if the source sequence contains any elements; otherwise, false.</returns>
           222        public static bool Any([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1223        {
           1224            Check.NotNull(source, nameof(source));
           1225            Check.NotNull(lambda, nameof(lambda));
           226
           1227            return Execute<bool>(_anyPredicate, source, lambda);
           1228        }
           229        #endregion Any
           230
           231        #region Average
           232        /// <summary>
           233        /// Computes the average of a sequence of numeric values.
           234        /// </summary>
           235        /// <param name="source">A sequence of numeric values to calculate the average of.</param>
           236        /// <example>
           237        /// <code language="cs">
           238        /// IQueryable queryable = employees.AsQueryable();
           239        /// var result1 = queryable.Average();
           240        /// var result2 = queryable.Select("Roles.Average()");
           241        /// </code>
           242        /// </example>
           243        /// <returns>The average of the values in the sequence.</returns>
           244        [PublicAPI]
           245        public static double Average([NotNull] this IQueryable source)
           3246        {
           3247            Check.NotNull(source, nameof(source));
           248
           3249            var average = QueryableMethodFinder.GetMethod(nameof(Queryable.Average), source.ElementType, typeof(double))
           3250            return Execute<double>(average, source);
           3251        }
           252
           253        /// <summary>
           254        /// Computes the average of a sequence of numeric values.
           255        /// </summary>
           256        /// <param name="source">A sequence of numeric values to calculate the average of.</param>
           257        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           258        /// <param name="predicate">A function to test each element for a condition.</param>
           259        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           260        /// <example>
           261        /// <code language="cs">
           262        /// IQueryable queryable = employees.AsQueryable();
           263        /// var result = queryable.Average("Income");
           264        /// </code>
           265        /// </example>
           266        /// <returns>The average of the values in the sequence.</returns>
           267        [PublicAPI]
           268        public static double Average([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string 
           2269        {
           2270            Check.NotNull(source, nameof(source));
           2271            Check.NotNull(config, nameof(config));
           2272            Check.NotEmpty(predicate, nameof(predicate));
           273
           2274            bool createParameterCtor = SupportsLinqToObjects(config, source);
           2275            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           276
           2277            return Average(source, lambda);
           2278        }
           279
           280        /// <inheritdoc cref="Average(IQueryable, ParsingConfig, string, object[])"/>
           281        [PublicAPI]
           282        public static double Average([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] params ob
           2283        {
           2284            return Average(source, ParsingConfig.Default, predicate, args);
           2285        }
           286
           287        /// <summary>
           288        /// Computes the average of a sequence of numeric values.
           289        /// </summary>
           290        /// <param name="source">A sequence of numeric values to calculate the average of.</param>
           291        /// <param name="lambda">A Lambda Expression.</param>
           292        /// <returns>The average of the values in the sequence.</returns>
           293        [PublicAPI]
           294        public static double Average([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           2295        {
           2296            Check.NotNull(source, nameof(source));
           2297            Check.NotNull(lambda, nameof(lambda));
           298
           2299            var averageSelector = QueryableMethodFinder.GetMethod(nameof(Queryable.Average), lambda.GetReturnType(), typ
           2300            return Execute<double>(averageSelector, source, lambda);
           2301        }
           302        #endregion Average
           303
           304        #region AsEnumerable
           305#if NET35
           306        /// <summary>
           307        /// Returns the input typed as <see cref="IEnumerable{T}"/> of <see cref="object"/>./>
           308        /// </summary>
           309        /// <param name="source">The sequence to type as <see cref="IEnumerable{T}"/> of <see cref="object"/>.</param>
           310        /// <returns>The input typed as <see cref="IEnumerable{T}"/> of <see cref="object"/>.</returns>
           311        public static IEnumerable<object> AsEnumerable([NotNull] this IQueryable source)
           312#else
           313        /// <summary>
           314        /// Returns the input typed as <see cref="IEnumerable{T}"/> of dynamic.
           315        /// </summary>
           316        /// <param name="source">The sequence to type as <see cref="IEnumerable{T}"/> of dynamic.</param>
           317        /// <returns>The input typed as <see cref="IEnumerable{T}"/> of dynamic.</returns>
           318        public static IEnumerable<dynamic> AsEnumerable([NotNull] this IQueryable source)
           319#endif
           5320        {
           419321            foreach (var obj in source)
           202322            {
           202323                yield return obj;
           202324            }
           5325        }
           326        #endregion AsEnumerable
           327
           328        #region Cast
           1329        private static readonly MethodInfo _cast = QueryableMethodFinder.GetGenericMethod(nameof(Queryable.Cast));
           330
           331        /// <summary>
           332        /// Converts the elements of an <see cref="IQueryable"/> to the specified type.
           333        /// </summary>
           334        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be converted.</param>
           335        /// <param name="type">The type to convert the elements of source to.</param>
           336        /// <returns>An <see cref="IQueryable"/> that contains each element of the source sequence converted to the spec
           337        public static IQueryable Cast([NotNull] this IQueryable source, [NotNull] Type type)
           2338        {
           2339            Check.NotNull(source, nameof(source));
           2340            Check.NotNull(type, nameof(type));
           341
           2342            var optimized = OptimizeExpression(Expression.Call(null, _cast.MakeGenericMethod(new Type[] { type }), new E
           343
           2344            return source.Provider.CreateQuery(optimized);
           2345        }
           346
           347        /// <summary>
           348        /// Converts the elements of an <see cref="IQueryable"/> to the specified type.
           349        /// </summary>
           350        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be converted.</param>
           351        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           352        /// <param name="typeName">The type to convert the elements of source to.</param>
           353        /// <returns>An <see cref="IQueryable"/> that contains each element of the source sequence converted to the spec
           354        public static IQueryable Cast([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string
           1355        {
           1356            Check.NotNull(source, nameof(source));
           1357            Check.NotNull(config, nameof(config));
           1358            Check.NotEmpty(typeName, nameof(typeName));
           359
           1360            var finder = new TypeFinder(config, new KeywordsHelper(config));
           1361            Type type = finder.FindTypeByName(typeName, null, true);
           362
           1363            return Cast(source, type);
           1364        }
           365
           366        /// <summary>
           367        /// Converts the elements of an <see cref="IQueryable"/> to the specified type.
           368        /// </summary>
           369        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be converted.</param>
           370        /// <param name="typeName">The type to convert the elements of source to.</param>
           371        /// <returns>An <see cref="IQueryable"/> that contains each element of the source sequence converted to the spec
           372        public static IQueryable Cast([NotNull] this IQueryable source, [NotNull] string typeName)
           1373        {
           1374            return Cast(source, ParsingConfig.Default, typeName);
           1375        }
           376        #endregion Cast
           377
           378        #region Count
           1379        private static readonly MethodInfo _count = QueryableMethodFinder.GetMethod(nameof(Queryable.Count));
           380
           381        /// <summary>
           382        /// Returns the number of elements in a sequence.
           383        /// </summary>
           384        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           385        /// <example>
           386        /// <code language="cs">
           387        /// IQueryable queryable = employees.AsQueryable();
           388        /// var result = queryable.Count();
           389        /// </code>
           390        /// </example>
           391        /// <returns>The number of elements in the input sequence.</returns>
           392        public static int Count([NotNull] this IQueryable source)
           44393        {
           44394            Check.NotNull(source, nameof(source));
           395
           44396            return Execute<int>(_count, source);
           44397        }
           398
           1399        private static readonly MethodInfo _countPredicate = QueryableMethodFinder.GetMethod(nameof(Queryable.Count), 1)
           400
           401        /// <summary>
           402        /// Returns the number of elements in a sequence.
           403        /// </summary>
           404        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           405        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           406        /// <param name="predicate">A function to test each element for a condition.</param>
           407        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           408        /// <example>
           409        /// <code language="cs">
           410        /// IQueryable queryable = employees.AsQueryable();
           411        /// var result1 = queryable.Count("Income > 50");
           412        /// var result2 = queryable.Count("Income > @0", 50);
           413        /// var result3 = queryable.Select("Roles.Count()");
           414        /// </code>
           415        /// </example>
           416        /// <returns>The number of elements in the specified sequence that satisfies a condition.</returns>
           417        [PublicAPI]
           418        public static int Count([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string predi
           12419        {
           12420            Check.NotNull(source, nameof(source));
           12421            Check.NotNull(config, nameof(config));
           12422            Check.NotEmpty(predicate, nameof(predicate));
           423
           12424            bool createParameterCtor = SupportsLinqToObjects(config, source);
           12425            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           426
           9427            return Execute<int>(_countPredicate, source, lambda);
           9428        }
           429
           430        /// <inheritdoc cref="Count(IQueryable, ParsingConfig, string, object[])"/>
           431        public static int Count([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           11432        {
           11433            return Count(source, ParsingConfig.Default, predicate, args);
           8434        }
           435
           436        /// <summary>
           437        /// Returns the number of elements in a sequence.
           438        /// </summary>
           439        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           440        /// <param name="lambda">A cached Lambda Expression.</param>
           441        /// <returns>The number of elements in the specified sequence that satisfies a condition.</returns>
           442        public static int Count([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1443        {
           1444            Check.NotNull(source, nameof(source));
           1445            Check.NotNull(lambda, nameof(lambda));
           446
           1447            return Execute<int>(_countPredicate, source, lambda);
           1448        }
           449        #endregion Count
           450
           451        #region DefaultIfEmpty
           1452        private static readonly MethodInfo _defaultIfEmpty = QueryableMethodFinder.GetMethod(nameof(Queryable.DefaultIfE
           1453        private static readonly MethodInfo _defaultIfEmptyWithParam = QueryableMethodFinder.GetMethod(nameof(Queryable.D
           454
           455        /// <summary>
           456        /// Returns the elements of the specified sequence or the type parameter's default value in a singleton collecti
           457        /// </summary>
           458        /// <param name="source">The <see cref="IQueryable"/> to return a default value for if empty.</param>
           459        /// <example>
           460        /// <code language="cs">
           461        /// IQueryable queryable = employees.DefaultIfEmpty();
           462        /// </code>
           463        /// </example>
           464        /// <returns>An <see cref="IQueryable"/> that contains default if source is empty; otherwise, source.</returns>
           465        public static IQueryable DefaultIfEmpty([NotNull] this IQueryable source)
           4466        {
           4467            Check.NotNull(source, nameof(source));
           468
           4469            return CreateQuery(_defaultIfEmpty, source);
           4470        }
           471
           472        /// <summary>
           473        /// Returns the elements of the specified sequence or the type parameter's default value in a singleton collecti
           474        /// </summary>
           475        /// <param name="source">The <see cref="IQueryable"/> to return a default value for if empty.</param>
           476        /// <param name="defaultValue">The value to return if the sequence is empty.</param>
           477        /// <example>
           478        /// <code language="cs">
           479        /// IQueryable queryable = employees.DefaultIfEmpty(new Employee());
           480        /// </code>
           481        /// </example>
           482        /// <returns>An <see cref="IQueryable"/> that contains defaultValue if source is empty; otherwise, source.</retu
           483        public static IQueryable DefaultIfEmpty([NotNull] this IQueryable source, [CanBeNull] object defaultValue)
           4484        {
           4485            Check.NotNull(source, nameof(source));
           486
           4487            return CreateQuery(_defaultIfEmptyWithParam, source, Expression.Constant(defaultValue));
           4488        }
           489        #endregion
           490
           491        #region Distinct
           1492        private static readonly MethodInfo _distinct = QueryableMethodFinder.GetMethod(nameof(Queryable.Distinct));
           493
           494        /// <summary>
           495        /// Returns distinct elements from a sequence by using the default equality comparer to compare values.
           496        /// </summary>
           497        /// <param name="source">The sequence to remove duplicate elements from.</param>
           498        /// <example>
           499        /// <code language="cs">
           500        /// IQueryable queryable = employees.AsQueryable();
           501        /// var result1 = queryable.Distinct();
           502        /// var result2 = queryable.Select("Roles.Distinct()");
           503        /// </code>
           504        /// </example>
           505        /// <returns>An <see cref="IQueryable"/> that contains distinct elements from the source sequence.</returns>
           506        public static IQueryable Distinct([NotNull] this IQueryable source)
           2507        {
           2508            Check.NotNull(source, nameof(source));
           509
           2510            return CreateQuery(_distinct, source);
           2511        }
           512        #endregion Distinct
           513
           514        #region First
           1515        private static readonly MethodInfo _first = QueryableMethodFinder.GetMethod(nameof(Queryable.First));
           516
           517        /// <summary>
           518        /// Returns the first element of a sequence.
           519        /// </summary>
           520        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           521        /// <returns>The first element in source.</returns>
           522#if NET35
           523        public static object First([NotNull] this IQueryable source)
           524#else
           525        public static dynamic First([NotNull] this IQueryable source)
           526#endif
           22527        {
           22528            Check.NotNull(source, nameof(source));
           529
           22530            return Execute(_first, source);
           22531        }
           532
           1533        private static readonly MethodInfo _firstPredicate = QueryableMethodFinder.GetMethod(nameof(Queryable.First), 1)
           534
           535        /// <summary>
           536        /// Returns the first element of a sequence that satisfies a specified condition.
           537        /// </summary>
           538        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           539        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           540        /// <param name="predicate">A function to test each element for a condition.</param>
           541        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           542        /// <returns>The first element in source that passes the test in predicate.</returns>
           543        [PublicAPI]
           544#if NET35
           545        public static object First([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pr
           546#else
           547        public static dynamic First([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string p
           548#endif
           5549        {
           5550            Check.NotNull(source, nameof(source));
           5551            Check.NotNull(config, nameof(config));
           5552            Check.NotEmpty(predicate, nameof(predicate));
           553
           5554            bool createParameterCtor = SupportsLinqToObjects(config, source);
           5555            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           556
           5557            return Execute(_firstPredicate, source, lambda);
           5558        }
           559
           560        /// <inheritdoc cref="First(IQueryable, ParsingConfig, string, object[])"/>
           561#if NET35
           562        public static object First([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           563#else
           564        public static dynamic First([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           565#endif
           4566        {
           4567            return First(source, ParsingConfig.Default, predicate, args);
           4568        }
           569
           570        /// <summary>
           571        /// Returns the first element of a sequence that satisfies a specified condition.
           572        /// </summary>
           573        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           574        /// <param name="lambda">A cached Lambda Expression.</param>
           575        /// <returns>The first element in source that passes the test in predicate.</returns>
           576#if NET35
           577        public static object First([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           578#else
           579        public static dynamic First([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           580#endif
           1581        {
           1582            Check.NotNull(source, nameof(source));
           1583            return Execute(_firstPredicate, source, lambda);
           1584        }
           585        #endregion First
           586
           587        #region FirstOrDefault
           1588        private static readonly MethodInfo _firstOrDefault = QueryableMethodFinder.GetMethod(nameof(Queryable.FirstOrDef
           1589        private static readonly MethodInfo _firstOrDefaultPredicate = QueryableMethodFinder.GetMethodWithExpressionParam
           590
           591        /// <summary>
           592        /// Returns the first element of a sequence, or a default value if the sequence contains no elements.
           593        /// </summary>
           594        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           595        /// <returns>default if source is empty; otherwise, the first element in source.</returns>
           596#if NET35
           597        public static object FirstOrDefault([NotNull] this IQueryable source)
           598#else
           599        public static dynamic FirstOrDefault([NotNull] this IQueryable source)
           600#endif
           15601        {
           15602            Check.NotNull(source, nameof(source));
           603
           15604            return Execute(_firstOrDefault, source);
           15605        }
           606
           607        /// <summary>
           608        /// Returns the first element of a sequence that satisfies a specified condition or a default value if no such e
           609        /// </summary>
           610        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           611        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           612        /// <param name="predicate">A function to test each element for a condition.</param>
           613        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           614        /// <returns>default if source is empty or if no element passes the test specified by predicate; otherwise, the 
           615        [PublicAPI]
           616#if NET35
           617        public static object FirstOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           618#else
           619        public static dynamic FirstOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull]
           620#endif
           41621        {
           41622            Check.NotNull(source, nameof(source));
           41623            Check.NotNull(config, nameof(config));
           41624            Check.NotEmpty(predicate, nameof(predicate));
           625
           41626            bool createParameterCtor = SupportsLinqToObjects(config, source);
           41627            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           628
           41629            return Execute(_firstOrDefaultPredicate, source, lambda);
           41630        }
           631
           632        /// <inheritdoc cref="FirstOrDefault(IQueryable, ParsingConfig, string, object[])"/>
           633#if NET35
           634        public static object FirstOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params object[
           635#else
           636        public static dynamic FirstOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params object
           637#endif
           40638        {
           40639            return FirstOrDefault(source, ParsingConfig.Default, predicate, args);
           40640        }
           641
           642        /// <summary>
           643        /// Returns the first element of a sequence that satisfies a specified condition or a default value if no such e
           644        /// </summary>
           645        /// <param name="source">The <see cref="IQueryable"/> to return the first element of.</param>
           646        /// <param name="lambda">A cached Lambda Expression.</param>
           647        /// <returns>default if source is empty or if no element passes the test specified by predicate; otherwise, the 
           648#if NET35
           649        public static object FirstOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           650#else
           651        public static dynamic FirstOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           652#endif
           1653        {
           1654            Check.NotNull(source, nameof(source));
           655
           1656            return Execute(_firstOrDefaultPredicate, source, lambda);
           1657        }
           658        #endregion FirstOrDefault
           659
           660        #region GroupBy
           661        /// <summary>
           662        /// Groups the elements of a sequence according to a specified key string function
           663        /// and creates a result value from each group and its key.
           664        /// </summary>
           665        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           666        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           667        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           668        /// <param name="resultSelector">A string expression to specify a result value from each group.</param>
           669        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           670        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           671        /// <example>
           672        /// <code>
           673        /// var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty");
           674        /// var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1
           675        /// </code>
           676        /// </example>
           677        [PublicAPI]
           678        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           0679        {
           0680            return InternalGroupBy(source, config, keySelector, resultSelector, null, args);
           0681        }
           682
           683        /// <summary>
           684        /// Groups the elements of a sequence according to a specified key string function
           685        /// and creates a result value from each group and its key.
           686        /// </summary>
           687        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           688        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           689        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           690        /// <param name="resultSelector">A string expression to specify a result value from each group.</param>
           691        /// <param name="equalityComparer">The comparer to use.</param>
           692        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           693        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           694        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           8695        {
           8696            return InternalGroupBy(source, config, keySelector, resultSelector, equalityComparer, args);
           5697        }
           698
           699        internal static IQueryable InternalGroupBy([NotNull] IQueryable source, [NotNull] ParsingConfig config, [NotNull
           9700        {
           9701            Check.NotNull(source, nameof(source));
           9702            Check.NotNull(config, nameof(config));
           9703            Check.NotEmpty(keySelector, nameof(keySelector));
           9704            Check.NotEmpty(resultSelector, nameof(resultSelector));
           705
           6706            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           6707            LambdaExpression keyLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.Element
           6708            LambdaExpression elementLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.Ele
           709
           6710            Expression optimized = null;
           6711            if (equalityComparer == null)
           5712            {
           5713                optimized = OptimizeExpression(Expression.Call(
           5714                    typeof(Queryable), nameof(Queryable.GroupBy),
           5715                    new[] { source.ElementType, keyLambda.Body.Type, elementLambda.Body.Type },
           5716                    source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda)));
           5717            }
           718            else
           1719            {
           1720                var equalityComparerGenericType = typeof(IEqualityComparer<>).MakeGenericType(keyLambda.Body.Type);
           1721                optimized = OptimizeExpression(Expression.Call(
           1722                    typeof(Queryable), nameof(Queryable.GroupBy),
           1723                    new[] { source.ElementType, keyLambda.Body.Type, elementLambda.Body.Type },
           1724                    source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda),
           1725                    Expression.Constant(equalityComparer, equalityComparerGenericType)));
           1726            }
           727
           6728            return source.Provider.CreateQuery(optimized);
           6729        }
           730
           731        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, string, object[])"/>
           732        [PublicAPI]
           733        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, [NotNull] strin
           0734        {
           0735            return GroupBy(source, ParsingConfig.Default, keySelector, resultSelector, args);
           0736        }
           737
           738        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, string, IEqualityComparer, object[])"/>
           739        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, [NotNull] strin
           0740        {
           0741            return GroupBy(source, ParsingConfig.Default, keySelector, resultSelector, equalityComparer, args);
           0742        }
           743
           744        /// <summary>
           745        /// Groups the elements of a sequence according to a specified key string function
           746        /// and creates a result value from each group and its key.
           747        /// </summary>
           748        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           749        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           750        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           751        /// <param name="resultSelector">A string expression to specify a result value from each group.</param>
           752        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           753        /// <example>
           754        /// <code>
           755        /// var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty");
           756        /// var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1
           757        /// </code>
           758        /// </example>
           759        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           8760        {
           8761            return GroupBy(source, config, keySelector, resultSelector, null, null);
           5762        }
           763
           764        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, string)"/>
           765        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, [NotNull] strin
           7766        {
           7767            return GroupBy(source, ParsingConfig.Default, keySelector, resultSelector);
           4768        }
           769
           770        /// <summary>
           771        /// Groups the elements of a sequence according to a specified key string function
           772        /// and creates a result value from each group and its key.
           773        /// </summary>
           774        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           775        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           776        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           777        /// <param name="resultSelector">A string expression to specify a result value from each group.</param>
           778        /// <param name="equalityComparer">The comparer to use.</param>
           779        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           780        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           1781        {
           1782            return InternalGroupBy(source, config, keySelector, resultSelector, equalityComparer, null);
           1783        }
           784
           785        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, string, IEqualityComparer)"/>
           786        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, [NotNull] strin
           1787        {
           1788            return GroupBy(source, ParsingConfig.Default, keySelector, resultSelector, equalityComparer);
           1789        }
           790
           791        /// <summary>
           792        /// Groups the elements of a sequence according to a specified key string function
           793        /// and creates a result value from each group and its key.
           794        /// </summary>
           795        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           796        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           797        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           798        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           799        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           800        /// <example>
           801        /// <code>
           802        /// var groupResult1 = queryable.GroupBy("NumberPropertyAsKey");
           803        /// var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)");
           804        /// </code>
           805        /// </example>
           806        [PublicAPI]
           807        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           19808        {
           19809            return InternalGroupBy(source, config, keySelector, null, args);
           10810        }
           811
           812        /// <summary>
           813        /// Groups the elements of a sequence according to a specified key string function
           814        /// and creates a result value from each group and its key.
           815        /// </summary>
           816        /// <param name="source">A <see cref="IQueryable"/> whose elements to group.</param>
           817        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           818        /// <param name="keySelector">A string expression to specify the key for each element.</param>
           819        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           820        /// <param name="equalityComparer">The comparer to use.</param>
           821        /// <returns>A <see cref="IQueryable"/> where each element represents a projection over a group and its key.</re
           822        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] str
           1823        {
           1824            return InternalGroupBy(source, config, keySelector, equalityComparer, args);
           1825        }
           826
           827        internal static IQueryable InternalGroupBy([NotNull] IQueryable source, [NotNull] ParsingConfig config, [NotNull
           20828        {
           20829            Check.NotNull(source, nameof(source));
           19830            Check.NotNull(config, nameof(config));
           19831            Check.NotEmpty(keySelector, nameof(keySelector));
           832
           16833            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           16834            LambdaExpression keyLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.Element
           835
           11836            Expression optimized = null;
           837
           11838            if (equalityComparer == null)
           10839            {
           10840                optimized = OptimizeExpression(Expression.Call(
           10841                    typeof(Queryable), nameof(Queryable.GroupBy),
           10842                    new[] { source.ElementType, keyLambda.Body.Type }, source.Expression, Expression.Quote(keyLambda)));
           10843            }
           844            else
           1845            {
           1846                var equalityComparerGenericType = typeof(IEqualityComparer<>).MakeGenericType(keyLambda.Body.Type);
           1847                optimized = OptimizeExpression(Expression.Call(
           1848                    typeof(Queryable), nameof(Queryable.GroupBy),
           1849                    new[] { source.ElementType, keyLambda.Body.Type }, source.Expression, Expression.Quote(keyLambda),
           1850                    Expression.Constant(equalityComparer, equalityComparerGenericType)));
           1851            }
           852
           11853            return source.Provider.CreateQuery(optimized);
           11854        }
           855
           856        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, object[])"/>
           857        [PublicAPI]
           858        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, [CanBeNull] par
           18859        {
           18860            return GroupBy(source, ParsingConfig.Default, keySelector, args);
           9861        }
           862
           863        /// <inheritdoc cref="GroupBy(IQueryable, ParsingConfig, string, IEqualityComparer, object[])"/>
           864        public static IQueryable GroupBy([NotNull] this IQueryable source, [NotNull] string keySelector, IEqualityCompar
           1865        {
           1866            return GroupBy(source, ParsingConfig.Default, keySelector, equalityComparer, args);
           1867        }
           868
           869        #endregion GroupBy
           870
           871        #region GroupByMany
           872        /// <summary>
           873        /// Groups the elements of a sequence according to multiple specified key string functions
           874        /// and creates a result value from each group (and subgroups) and its key.
           875        /// </summary>
           876        /// <typeparam name="TElement"></typeparam>
           877        /// <param name="source">A <see cref="IEnumerable{T}"/> whose elements to group.</param>
           878        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           879        /// <param name="keySelectors"><see cref="string"/> expressions to specify the keys for each element.</param>
           880        /// <returns>A <see cref="IEnumerable{T}"/> of type <see cref="GroupResult"/> where each element represents a pr
           881        public static IEnumerable<GroupResult> GroupByMany<TElement>([NotNull] this IEnumerable<TElement> source, [NotNu
           1882        {
           1883            Check.NotNull(source, nameof(source));
           1884            Check.NotNull(config, nameof(config));
           1885            Check.HasNoNulls(keySelectors, nameof(keySelectors));
           886
           1887            var selectors = new List<Func<TElement, object>>(keySelectors.Length);
           888
           1889            bool createParameterCtor = true;
           7890            foreach (var selector in keySelectors)
           2891            {
           2892                LambdaExpression l = DynamicExpressionParser.ParseLambda(config, createParameterCtor, typeof(TElement), 
           2893                selectors.Add((Func<TElement, object>)l.Compile());
           2894            }
           895
           1896            return GroupByManyInternal(source, selectors.ToArray(), 0);
           1897        }
           898
           899        /// <inheritdoc cref="GroupByMany{TElement}(IEnumerable{TElement}, ParsingConfig, string[])"/>
           900        public static IEnumerable<GroupResult> GroupByMany<TElement>([NotNull] this IEnumerable<TElement> source, params
           1901        {
           1902            return GroupByMany(source, ParsingConfig.Default, keySelectors);
           1903        }
           904
           905        /// <summary>
           906        /// Groups the elements of a sequence according to multiple specified key functions
           907        /// and creates a result value from each group (and subgroups) and its key.
           908        /// </summary>
           909        /// <typeparam name="TElement"></typeparam>
           910        /// <param name="source">A <see cref="IEnumerable{T}"/> whose elements to group.</param>
           911        /// <param name="keySelectors">Lambda expressions to specify the keys for each element.</param>
           912        /// <returns>A <see cref="IEnumerable{T}"/> of type <see cref="GroupResult"/> where each element represents a pr
           913        public static IEnumerable<GroupResult> GroupByMany<TElement>([NotNull] this IEnumerable<TElement> source, params
           1914        {
           1915            Check.NotNull(source, nameof(source));
           1916            Check.HasNoNulls(keySelectors, nameof(keySelectors));
           917
           1918            return GroupByManyInternal(source, keySelectors, 0);
           1919        }
           920
           921        private static IEnumerable<GroupResult> GroupByManyInternal<TElement>(IEnumerable<TElement> source, Func<TElemen
           15922        {
           15923            if (currentSelector >= keySelectors.Length)
           6924            {
           6925                return null;
           926            }
           927
           9928            var selector = keySelectors[currentSelector];
           929
           9930            var result = source.GroupBy(selector).Select(
           22931                g => new GroupResult
           22932                {
           22933                    Key = g.Key,
           22934                    Count = g.Count(),
           22935                    Items = g,
           22936                    Subgroups = GroupByManyInternal(g, keySelectors, currentSelector + 1)
           22937                });
           938
           9939            return result;
           15940        }
           941        #endregion GroupByMany
           942
           943        #region GroupJoin
           944        /// <summary>
           945        /// Correlates the elements of two sequences based on equality of keys and groups the results. The default equal
           946        /// </summary>
           947        /// <param name="outer">The first sequence to join.</param>
           948        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           949        /// <param name="inner">The sequence to join to the first sequence.</param>
           950        /// <param name="outerKeySelector">A dynamic function to extract the join key from each element of the first seq
           951        /// <param name="innerKeySelector">A dynamic function to extract the join key from each element of the second se
           952        /// <param name="resultSelector">A dynamic function to create a result element from an element from the first se
           953        /// <param name="args">An object array that contains zero or more objects to insert into the predicates as param
           954        /// <returns>An <see cref="IQueryable"/> obtained by performing a grouped join on two sequences.</returns>
           955        public static IQueryable GroupJoin([NotNull] this IQueryable outer, [NotNull] ParsingConfig config, [NotNull] IE
           6956        {
           6957            Check.NotNull(outer, nameof(outer));
           6958            Check.NotNull(config, nameof(config));
           6959            Check.NotNull(inner, nameof(inner));
           6960            Check.NotEmpty(outerKeySelector, nameof(outerKeySelector));
           6961            Check.NotEmpty(innerKeySelector, nameof(innerKeySelector));
           6962            Check.NotEmpty(resultSelector, nameof(resultSelector));
           963
           6964            Type outerType = outer.ElementType;
           6965            Type innerType = inner.AsQueryable().ElementType;
           966
           6967            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, outer);
           6968            LambdaExpression outerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, oute
           6969            LambdaExpression innerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, inne
           970
           6971            CheckOuterAndInnerTypes(config, createParameterCtor, outerType, innerType, outerKeySelector, innerKeySelecto
           972
           5973            ParameterExpression[] parameters =
           5974            {
           5975                ParameterExpressionHelper.CreateParameterExpression(outerType, "outer"),
           5976                ParameterExpressionHelper.CreateParameterExpression(typeof(IEnumerable<>).MakeGenericType(innerType), "i
           5977            };
           978
           5979            LambdaExpression resultSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, par
           980
           5981            return outer.Provider.CreateQuery(Expression.Call(
           5982                typeof(Queryable), nameof(Queryable.GroupJoin),
           5983                new[] { outer.ElementType, innerType, outerSelectorLambda.Body.Type, resultSelectorLambda.Body.Type },
           5984                outer.Expression,
           5985                inner.AsQueryable().Expression,
           5986                Expression.Quote(outerSelectorLambda),
           5987                Expression.Quote(innerSelectorLambda),
           5988                Expression.Quote(resultSelectorLambda)));
           5989        }
           990
           991        /// <inheritdoc cref="GroupJoin(IQueryable, ParsingConfig, IEnumerable, string, string, string, object[])"/>
           992        public static IQueryable GroupJoin([NotNull] this IQueryable outer, [NotNull] IEnumerable inner, [NotNull] strin
           6993        {
           6994            return GroupJoin(outer, ParsingConfig.Default, inner, outerKeySelector, innerKeySelector, resultSelector, ar
           5995        }
           996        #endregion
           997
           998        #region Join
           999        /// <summary>
           1000        /// Correlates the elements of two sequences based on matching keys. The default equality comparer is used to co
           1001        /// </summary>
           1002        /// <param name="outer">The first sequence to join.</param>
           1003        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1004        /// <param name="inner">The sequence to join to the first sequence.</param>
           1005        /// <param name="outerKeySelector">A dynamic function to extract the join key from each element of the first seq
           1006        /// <param name="innerKeySelector">A dynamic function to extract the join key from each element of the second se
           1007        /// <param name="resultSelector">A dynamic function to create a result element from two matching elements.</para
           1008        /// <param name="args">An object array that contains zero or more objects to insert into the predicates as param
           1009        /// <returns>An <see cref="IQueryable"/> obtained by performing an inner join on two sequences.</returns>
           1010        public static IQueryable Join([NotNull] this IQueryable outer, [NotNull] ParsingConfig config, [NotNull] IEnumer
           41011        {
           1012            //http://stackoverflow.com/questions/389094/how-to-create-a-dynamic-linq-join-extension-method
           1013
           41014            Check.NotNull(outer, nameof(outer));
           41015            Check.NotNull(config, nameof(config));
           41016            Check.NotNull(inner, nameof(inner));
           41017            Check.NotEmpty(outerKeySelector, nameof(outerKeySelector));
           41018            Check.NotEmpty(innerKeySelector, nameof(innerKeySelector));
           41019            Check.NotEmpty(resultSelector, nameof(resultSelector));
           1020
           41021            Type outerType = outer.ElementType;
           41022            Type innerType = inner.AsQueryable().ElementType;
           1023
           41024            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, outer);
           41025            LambdaExpression outerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, oute
           41026            LambdaExpression innerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, inne
           1027
           41028            CheckOuterAndInnerTypes(config, createParameterCtor, outerType, innerType, outerKeySelector, innerKeySelecto
           1029
           31030            ParameterExpression[] parameters =
           31031            {
           31032                ParameterExpressionHelper.CreateParameterExpression(outerType, "outer"),
           31033                ParameterExpressionHelper.CreateParameterExpression(innerType, "inner")
           31034            };
           1035
           31036            LambdaExpression resultSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, par
           1037
           31038            var optimized = OptimizeExpression(Expression.Call(
           31039                typeof(Queryable), "Join",
           31040                new[] { outerType, innerType, outerSelectorLambda.Body.Type, resultSelectorLambda.Body.Type },
           31041                outer.Expression, // outer: The first sequence to join.
           31042                inner.AsQueryable().Expression, // inner: The sequence to join to the first sequence.
           31043                Expression.Quote(outerSelectorLambda), // outerKeySelector: A function to extract the join key from each
           31044                Expression.Quote(innerSelectorLambda), // innerKeySelector: A function to extract the join key from each
           31045                Expression.Quote(resultSelectorLambda) // resultSelector: A function to create a result element from two
           31046            ));
           1047
           31048            return outer.Provider.CreateQuery(optimized);
           31049        }
           1050
           1051        /// <inheritdoc cref="Join(IQueryable, ParsingConfig, IEnumerable, string, string, string, object[])"/>
           1052        public static IQueryable Join([NotNull] this IQueryable outer, [NotNull] IEnumerable inner, [NotNull] string out
           41053        {
           41054            return Join(outer, ParsingConfig.Default, inner, outerKeySelector, innerKeySelector, resultSelector, args);
           31055        }
           1056
           1057        /// <summary>
           1058        /// Correlates the elements of two sequences based on matching keys. The default equality comparer is used to co
           1059        /// </summary>
           1060        /// <typeparam name="TElement">The type of the elements of both sequences, and the result.</typeparam>
           1061        /// <param name="outer">The first sequence to join.</param>
           1062        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1063        /// <param name="inner">The sequence to join to the first sequence.</param>
           1064        /// <param name="outerKeySelector">A dynamic function to extract the join key from each element of the first seq
           1065        /// <param name="innerKeySelector">A dynamic function to extract the join key from each element of the second se
           1066        /// <param name="resultSelector">A dynamic function to create a result element from two matching elements.</para
           1067        /// <param name="args">An object array that contains zero or more objects to insert into the predicates as param
           1068        /// <remarks>This overload only works on elements where both sequences and the resulting element match.</remarks
           1069        /// <returns>An <see cref="IQueryable{T}"/> that has elements of type TResult obtained by performing an inner jo
           1070        public static IQueryable<TElement> Join<TElement>([NotNull] this IQueryable<TElement> outer, [NotNull] ParsingCo
           01071        {
           01072            return (IQueryable<TElement>)Join(outer, config, (IEnumerable)inner, outerKeySelector, innerKeySelector, res
           01073        }
           1074
           1075        /// <inheritdoc cref="Join{TElement}(IQueryable{TElement}, ParsingConfig, IEnumerable{TElement}, string, string,
           1076        public static IQueryable<TElement> Join<TElement>([NotNull] this IQueryable<TElement> outer, [NotNull] IEnumerab
           01077        {
           01078            return Join(outer, ParsingConfig.Default, inner, outerKeySelector, innerKeySelector, resultSelector, args);
           01079        }
           1080        #endregion Join
           1081
           1082        #region Last
           11083        private static readonly MethodInfo _last = QueryableMethodFinder.GetMethod(nameof(Queryable.Last));
           11084        private static readonly MethodInfo _lastPredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(nameo
           1085
           1086        /// <summary>
           1087        /// Returns the last element of a sequence.
           1088        /// </summary>
           1089        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1090        /// <returns>The last element in source.</returns>
           1091#if NET35
           1092        public static object Last([NotNull] this IQueryable source)
           1093#else
           1094        public static dynamic Last([NotNull] this IQueryable source)
           1095#endif
           101096        {
           101097            Check.NotNull(source, nameof(source));
           1098
           101099            return Execute(_last, source);
           101100        }
           1101
           1102        /// <summary>
           1103        /// Returns the last element of a sequence that satisfies a specified condition.
           1104        /// </summary>
           1105        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1106        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1107        /// <param name="predicate">A function to test each element for a condition.</param>
           1108        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1109        /// <returns>The first element in source that passes the test in predicate.</returns>
           1110#if NET35
           1111        public static object Last([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pre
           1112#else
           1113        public static dynamic Last([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pr
           1114#endif
           31115        {
           31116            Check.NotNull(source, nameof(source));
           31117            Check.NotNull(config, nameof(config));
           31118            Check.NotEmpty(predicate, nameof(predicate));
           1119
           31120            bool createParameterCtor = SupportsLinqToObjects(config, source);
           31121            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1122
           31123            return Execute(_lastPredicate, source, lambda);
           31124        }
           1125
           1126        /// <inheritdoc cref="Last(IQueryable, ParsingConfig, string, object[])"/>
           1127#if NET35
           1128        public static object Last([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           1129#else
           1130        public static dynamic Last([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           1131#endif
           21132        {
           21133            return Last(source, ParsingConfig.Default, predicate, args);
           21134        }
           1135
           1136
           1137        /// <summary>
           1138        /// Returns the last element of a sequence that satisfies a specified condition.
           1139        /// </summary>
           1140        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1141        /// <param name="lambda">A cached Lambda Expression.</param>
           1142        /// <returns>The first element in source that passes the test in predicate.</returns>
           1143#if NET35
           1144        public static object Last([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1145#else
           1146        public static dynamic Last([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1147#endif
           11148        {
           11149            Check.NotNull(source, nameof(source));
           11150            return Execute(_lastPredicate, source, lambda);
           11151        }
           1152        #endregion Last
           1153
           1154        #region LastOrDefault
           11155        private static readonly MethodInfo _lastDefault = QueryableMethodFinder.GetMethod(nameof(Queryable.LastOrDefault
           11156        private static readonly MethodInfo _lastDefaultPredicate = QueryableMethodFinder.GetMethodWithExpressionParamete
           1157
           1158        /// <summary>
           1159        /// Returns the last element of a sequence, or a default value if the sequence contains no elements.
           1160        /// </summary>
           1161        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1162        /// <returns>default if source is empty; otherwise, the last element in source.</returns>
           1163#if NET35
           1164        public static object LastOrDefault([NotNull] this IQueryable source)
           1165#else
           1166        public static dynamic LastOrDefault([NotNull] this IQueryable source)
           1167#endif
           11168        {
           11169            Check.NotNull(source, nameof(source));
           1170
           11171            return Execute(_lastDefault, source);
           11172        }
           1173
           1174        /// <summary>
           1175        /// Returns the last element of a sequence that satisfies a specified condition, or a default value if the seque
           1176        /// </summary>
           1177        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1178        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1179        /// <param name="predicate">A function to test each element for a condition.</param>
           1180        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1181        /// <returns>The first element in source that passes the test in predicate.</returns>
           1182#if NET35
           1183        public static object LastOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] s
           1184#else
           1185        public static dynamic LastOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           1186#endif
           31187        {
           31188            Check.NotNull(source, nameof(source));
           31189            Check.NotNull(config, nameof(config));
           31190            Check.NotEmpty(predicate, nameof(predicate));
           1191
           31192            bool createParameterCtor = SupportsLinqToObjects(config, source);
           31193            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1194
           31195            return Execute(_lastDefaultPredicate, source, lambda);
           31196        }
           1197
           1198        /// <inheritdoc cref="LastOrDefault(IQueryable, ParsingConfig, string, object[])"/>
           1199#if NET35
           1200        public static object LastOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params object[]
           1201#else
           1202        public static dynamic LastOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params object[
           1203#endif
           31204        {
           31205            return LastOrDefault(source, ParsingConfig.Default, predicate, args);
           31206        }
           1207
           1208        /// <summary>
           1209        /// Returns the last element of a sequence that satisfies a specified condition, or a default value if the seque
           1210        /// </summary>
           1211        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           1212        /// <param name="lambda">A cached Lambda Expression.</param>
           1213        /// <returns>The first element in source that passes the test in predicate.</returns>
           1214#if NET35
           1215        public static object LastOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1216#else
           1217        public static dynamic LastOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           1218#endif
           11219        {
           11220            Check.NotNull(source, nameof(source));
           11221            return Execute(_lastDefaultPredicate, source, lambda);
           11222        }
           1223        #endregion LastOrDefault
           1224
           1225        #region LongCount
           11226        private static readonly MethodInfo _longCount = QueryableMethodFinder.GetMethod(nameof(Queryable.LongCount));
           11227        private static readonly MethodInfo _longCountPredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(
           1228
           1229        /// <summary>
           1230        /// Returns the number of elements in a sequence.
           1231        /// </summary>
           1232        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           1233        /// <example>
           1234        /// <code language="cs">
           1235        /// IQueryable queryable = employees.AsQueryable();
           1236        /// var result = queryable.LongCount();
           1237        /// </code>
           1238        /// </example>
           1239        /// <returns>The number of elements in the input sequence.</returns>
           1240        public static long LongCount([NotNull] this IQueryable source)
           31241        {
           31242            Check.NotNull(source, nameof(source));
           1243
           31244            return Execute<long>(_longCount, source);
           31245        }
           1246
           1247        /// <summary>
           1248        /// Returns the number of elements in a sequence.
           1249        /// </summary>
           1250        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           1251        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1252        /// <param name="predicate">A function to test each element for a condition.</param>
           1253        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1254        /// <example>
           1255        /// <code language="cs">
           1256        /// IQueryable queryable = employees.AsQueryable();
           1257        /// var result1 = queryable.LongCount("Income > 50");
           1258        /// var result2 = queryable.LongCount("Income > @0", 50);
           1259        /// var result3 = queryable.Select("Roles.LongCount()");
           1260        /// </code>
           1261        /// </example>
           1262        /// <returns>The number of elements in the specified sequence that satisfies a condition.</returns>
           1263        [PublicAPI]
           1264        public static long LongCount([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string 
           81265        {
           81266            Check.NotNull(source, nameof(source));
           81267            Check.NotNull(config, nameof(config));
           81268            Check.NotEmpty(predicate, nameof(predicate));
           1269
           81270            bool createParameterCtor = SupportsLinqToObjects(config, source);
           81271            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1272
           81273            return Execute<long>(_longCountPredicate, source, lambda);
           81274        }
           1275
           1276        /// <inheritdoc cref="LongCount(IQueryable, ParsingConfig, string, object[])"/>
           1277        public static long LongCount([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           81278        {
           81279            return LongCount(source, ParsingConfig.Default, predicate, args);
           81280        }
           1281
           1282        /// <summary>
           1283        /// Returns the number of elements in a sequence.
           1284        /// </summary>
           1285        /// <param name="source">The <see cref="IQueryable"/> that contains the elements to be counted.</param>
           1286        /// <param name="lambda">A cached Lambda Expression.</param>
           1287        /// <returns>The number of elements in the specified sequence that satisfies a condition.</returns>
           1288        public static long LongCount([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           01289        {
           01290            Check.NotNull(source, nameof(source));
           01291            Check.NotNull(lambda, nameof(lambda));
           1292
           01293            return Execute<long>(_longCountPredicate, source, lambda);
           01294        }
           1295        #endregion LongCount
           1296
           1297        #region Max
           11298        private static readonly MethodInfo _max = QueryableMethodFinder.GetMethod(nameof(Queryable.Max));
           11299        private static readonly MethodInfo _maxPredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(nameof
           1300
           1301        /// <summary>
           1302        /// Computes the max element of a sequence.
           1303        /// </summary>
           1304        /// <param name="source">A sequence of values to calculate find the max for.</param>
           1305        /// <example>
           1306        /// <code language="cs">
           1307        /// IQueryable queryable = employees.AsQueryable();
           1308        /// var result1 = queryable.Max();
           1309        /// var result2 = queryable.Select("Roles.Max()");
           1310        /// </code>
           1311        /// </example>
           1312        /// <returns>The max element in the sequence.</returns>
           1313        [PublicAPI]
           1314        public static object Max([NotNull] this IQueryable source)
           11315        {
           11316            Check.NotNull(source, nameof(source));
           1317
           11318            return Execute(_max, source);
           11319        }
           1320
           1321        /// <summary>
           1322        /// Computes the max element of a sequence.
           1323        /// </summary>
           1324        /// <param name="source">A sequence of values to calculate find the max for.</param>
           1325        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1326        /// <param name="predicate">A function to test each element for a condition.</param>
           1327        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1328        /// <example>
           1329        /// <code language="cs">
           1330        /// IQueryable queryable = employees.AsQueryable();
           1331        /// var result = queryable.Max("Income");
           1332        /// </code>
           1333        /// </example>
           1334        /// <returns>The max element in the sequence.</returns>
           1335        [PublicAPI]
           1336        public static object Max([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pred
           11337        {
           11338            Check.NotNull(source, nameof(source));
           11339            Check.NotNull(config, nameof(config));
           11340            Check.NotEmpty(predicate, nameof(predicate));
           1341
           11342            bool createParameterCtor = SupportsLinqToObjects(config, source);
           11343            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1344
           11345            return Execute(_maxPredicate, source, lambda);
           11346        }
           1347
           1348        /// <inheritdoc cref="Max(IQueryable, ParsingConfig, string, object[])"/>
           1349        [PublicAPI]
           1350        public static object Max([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] params object
           11351        {
           11352            return Max(source, ParsingConfig.Default, predicate, args);
           11353        }
           1354
           1355        /// <summary>
           1356        /// Computes the max element of a sequence.
           1357        /// </summary>
           1358        /// <param name="source">A sequence of values to calculate find the max for.</param>
           1359        /// <param name="lambda">A Lambda Expression.</param>
           1360        /// <returns>The max element in the sequence.</returns>
           1361        [PublicAPI]
           1362        public static object Max([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           01363        {
           01364            Check.NotNull(source, nameof(source));
           01365            return Execute(_maxPredicate, source, lambda);
           01366        }
           1367        #endregion Max
           1368
           1369        #region Min
           11370        private static readonly MethodInfo _min = QueryableMethodFinder.GetMethod(nameof(Queryable.Min));
           11371        private static readonly MethodInfo _minPredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(nameof
           1372
           1373        /// <summary>
           1374        /// Computes the min element of a sequence.
           1375        /// </summary>
           1376        /// <param name="source">A sequence of values to calculate find the min for.</param>
           1377        /// <example>
           1378        /// <code language="cs">
           1379        /// IQueryable queryable = employees.AsQueryable();
           1380        /// var result1 = queryable.Min();
           1381        /// var result2 = queryable.Select("Roles.Min()");
           1382        /// </code>
           1383        /// </example>
           1384        /// <returns>The min element in the sequence.</returns>
           1385        [PublicAPI]
           1386        public static object Min([NotNull] this IQueryable source)
           11387        {
           11388            Check.NotNull(source, nameof(source));
           1389
           11390            return Execute(_min, source);
           11391        }
           1392
           1393        /// <summary>
           1394        /// Computes the min element of a sequence.
           1395        /// </summary>
           1396        /// <param name="source">A sequence of values to calculate find the min for.</param>
           1397        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1398        /// <param name="predicate">A function to test each element for a condition.</param>
           1399        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1400        /// <example>
           1401        /// <code language="cs">
           1402        /// IQueryable queryable = employees.AsQueryable();
           1403        /// var result = queryable.Min("Income");
           1404        /// </code>
           1405        /// </example>
           1406        /// <returns>The min element in the sequence.</returns>
           1407        [PublicAPI]
           1408        public static object Min([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pred
           11409        {
           11410            Check.NotNull(source, nameof(source));
           11411            Check.NotNull(config, nameof(config));
           11412            Check.NotEmpty(predicate, nameof(predicate));
           1413
           11414            bool createParameterCtor = SupportsLinqToObjects(config, source);
           11415            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1416
           11417            return Execute(_minPredicate, source, lambda);
           11418        }
           1419
           1420        /// <inheritdoc cref="Min(IQueryable, ParsingConfig, string, object[])"/>
           1421        [PublicAPI]
           1422        public static object Min([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] params object
           11423        {
           11424            return Min(source, ParsingConfig.Default, predicate, args);
           11425        }
           1426
           1427        /// <summary>
           1428        /// Computes the min element of a sequence.
           1429        /// </summary>
           1430        /// <param name="source">A sequence of values to calculate find the min for.</param>
           1431        /// <param name="lambda">A Lambda Expression.</param>
           1432        /// <returns>The min element in the sequence.</returns>
           1433        [PublicAPI]
           1434        public static object Min([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           01435        {
           01436            Check.NotNull(source, nameof(source));
           01437            return Execute(_minPredicate, source, lambda);
           01438        }
           1439        #endregion Min
           1440
           1441        #region OfType
           11442        private static readonly MethodInfo _ofType = QueryableMethodFinder.GetGenericMethod(nameof(Queryable.OfType));
           1443
           1444        /// <summary>
           1445        /// Filters the elements of an <see cref="IQueryable"/> based on a specified type.
           1446        /// </summary>
           1447        /// <param name="source">An <see cref="IQueryable"/> whose elements to filter.</param>
           1448        /// <param name="type">The type to filter the elements of the sequence on.</param>
           1449        /// <returns>A collection that contains the elements from source that have the type.</returns>
           1450        public static IQueryable OfType([NotNull] this IQueryable source, [NotNull] Type type)
           21451        {
           21452            Check.NotNull(source, nameof(source));
           21453            Check.NotNull(type, nameof(type));
           1454
           21455            var optimized = OptimizeExpression(Expression.Call(null, _ofType.MakeGenericMethod(new Type[] { type }), new
           1456
           21457            return source.Provider.CreateQuery(optimized);
           21458        }
           1459
           1460        /// <summary>
           1461        /// Filters the elements of an <see cref="IQueryable"/> based on a specified type.
           1462        /// </summary>
           1463        /// <param name="source">An <see cref="IQueryable"/> whose elements to filter.</param>
           1464        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1465        /// <param name="typeName">The type to filter the elements of the sequence on.</param>
           1466        /// <returns>A collection that contains the elements from source that have the type.</returns>
           1467        public static IQueryable OfType([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] stri
           11468        {
           11469            Check.NotNull(source, nameof(source));
           11470            Check.NotNull(config, nameof(config));
           11471            Check.NotEmpty(typeName, nameof(typeName));
           1472
           11473            var finder = new TypeFinder(config, new KeywordsHelper(config));
           11474            Type type = finder.FindTypeByName(typeName, null, true);
           1475
           11476            return OfType(source, type);
           11477        }
           1478
           1479        /// <summary>
           1480        /// Filters the elements of an <see cref="IQueryable"/> based on a specified type.
           1481        /// </summary>
           1482        /// <param name="source">An <see cref="IQueryable"/> whose elements to filter.</param>
           1483        /// <param name="typeName">The type to filter the elements of the sequence on.</param>
           1484        /// <returns>A collection that contains the elements from source that have the type.</returns>
           1485        public static IQueryable OfType([NotNull] this IQueryable source, [NotNull] string typeName)
           11486        {
           11487            return OfType(source, ParsingConfig.Default, typeName);
           11488        }
           1489        #endregion OfType
           1490
           1491        #region OrderBy
           1492        /// <summary>
           1493        /// Sorts the elements of a sequence in ascending or descending order according to a key.
           1494        /// </summary>
           1495        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           1496        /// <param name="source">A sequence of values to order.</param>
           1497        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1498        /// <param name="ordering">An expression string to indicate values to order by.</param>
           1499        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1500        /// <returns>A <see cref="IQueryable{T}"/> whose elements are sorted according to the specified <paramref name="
           1501        /// <example>
           1502        /// <code>
           1503        /// <![CDATA[
           1504        /// var resultSingle = queryable.OrderBy<User>("NumberProperty");
           1505        /// var resultSingleDescending = queryable.OrderBy<User>("NumberProperty DESC");
           1506        /// var resultMultiple = queryable.OrderBy<User>("NumberProperty, StringProperty");
           1507        /// ]]>
           1508        /// </code>
           1509        /// </example>
           1510        public static IOrderedQueryable<TSource> OrderBy<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] P
           291511        {
           291512            return (IOrderedQueryable<TSource>)OrderBy((IQueryable)source, config, ordering, args);
           221513        }
           1514
           1515        /// <inheritdoc cref="OrderBy{TSource}(IQueryable{TSource}, ParsingConfig, string, object[])"/>
           1516        public static IOrderedQueryable<TSource> OrderBy<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] s
           291517        {
           291518            return OrderBy(source, ParsingConfig.Default, ordering, args);
           221519        }
           1520
           1521        /// <summary>
           1522        /// Sorts the elements of a sequence in ascending or descending order according to a key.
           1523        /// </summary>
           1524        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           1525        /// <param name="source">A sequence of values to order.</param>
           1526        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1527        /// <param name="ordering">An expression string to indicate values to order by.</param>
           1528        /// <param name="comparer">The comparer to use.</param>
           1529        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1530        /// <returns>A <see cref="IQueryable{T}"/> whose elements are sorted according to the specified <paramref name="
           1531        public static IOrderedQueryable<TSource> OrderBy<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] P
           31532        {
           31533            return (IOrderedQueryable<TSource>)InternalOrderBy((IQueryable)source, config, ordering, comparer, args);
           31534        }
           1535
           1536        /// <summary>
           1537        /// Sorts the elements of a sequence in ascending or descending order according to a key.
           1538        /// </summary>
           1539        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           1540        /// <param name="source">A sequence of values to order.</param>
           1541        /// <param name="ordering">An expression string to indicate values to order by.</param>
           1542        /// <param name="comparer">The comparer to use.</param>
           1543        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1544        /// <returns>A <see cref="IQueryable{T}"/> whose elements are sorted according to the specified <paramref name="
           1545        public static IOrderedQueryable<TSource> OrderBy<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] s
           31546        {
           31547            return OrderBy(source, ParsingConfig.Default, ordering, comparer, args);
           31548        }
           1549
           1550        /// <summary>
           1551        /// Sorts the elements of a sequence in ascending or descending order according to a key.
           1552        /// </summary>
           1553        /// <param name="source">A sequence of values to order.</param>
           1554        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1555        /// <param name="ordering">An expression string to indicate values to order by.</param>
           1556        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1557        /// <returns>A <see cref="IQueryable"/> whose elements are sorted according to the specified <paramref name="ord
           1558        /// <example>
           1559        /// <code>
           1560        /// var resultSingle = queryable.OrderBy("NumberProperty");
           1561        /// var resultSingleDescending = queryable.OrderBy("NumberProperty DESC");
           1562        /// var resultMultiple = queryable.OrderBy("NumberProperty, StringProperty DESC");
           1563        /// </code>
           1564        /// </example>
           1565        public static IOrderedQueryable OrderBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNu
           401566        {
           711567            if (args.Length > 0 && args[0] != null && args[0].GetType().GetInterfaces().Any(i => i.Name.Contains("ICompa
           31568            {
           31569                return InternalOrderBy(source, ParsingConfig.Default, ordering, args[0], args);
           1570            }
           1571
           371572            return InternalOrderBy(source, config, ordering, null, args);
           311573        }
           1574
           1575        /// <summary>
           1576        /// Sorts the elements of a sequence in ascending or descending order according to a key.
           1577        /// </summary>
           1578        /// <param name="source">A sequence of values to order.</param>
           1579        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1580        /// <param name="ordering">An expression string to indicate values to order by.</param>
           1581        /// <param name="comparer">The comparer to use.</param>
           1582        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1583        /// <returns>A <see cref="IQueryable"/> whose elements are sorted according to the specified <paramref name="ord
           1584        public static IOrderedQueryable OrderBy([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNu
           01585        {
           01586            return InternalOrderBy(source, config, ordering, comparer, args);
           01587        }
           1588
           1589        internal static IOrderedQueryable InternalOrderBy([NotNull] IQueryable source, [NotNull] ParsingConfig config, [
           431590        {
           431591            Check.NotNull(source, nameof(source));
           411592            Check.NotNull(config, nameof(config));
           411593            Check.NotEmpty(ordering, nameof(ordering));
           1594
           361595            ParameterExpression[] parameters = { ParameterExpressionHelper.CreateParameterExpression(source.ElementType,
           361596            ExpressionParser parser = new ExpressionParser(parameters, ordering, args, config);
           361597            IList<DynamicOrdering> dynamicOrderings = parser.ParseOrdering();
           1598
           341599            Expression queryExpr = source.Expression;
           1600
           1761601            foreach (DynamicOrdering dynamicOrdering in dynamicOrderings)
           371602            {
           371603                if (comparer == null)
           311604                {
           311605                    queryExpr = Expression.Call(
           311606                        typeof(Queryable), dynamicOrdering.MethodName,
           311607                        new[] { source.ElementType, dynamicOrdering.Selector.Type },
           311608                        queryExpr, Expression.Quote(Expression.Lambda(dynamicOrdering.Selector, parameters)));
           311609                }
           1610                else
           61611                {
           61612                    var comparerGenericType = typeof(IComparer<>).MakeGenericType(dynamicOrdering.Selector.Type);
           1613
           1614                    ConstantExpression constant;
           61615                    if (comparerGenericType.IsInstanceOfType(comparer))
           51616                    {
           51617                        constant = Expression.Constant(comparer, comparerGenericType);
           51618                    }
           1619                    else
           11620                    {
           1621#if !UAP10_0
           11622                        var newType = DynamicClassFactory.CreateGenericComparerType(comparerGenericType, comparer.GetTyp
           11623                        constant = Expression.Constant(Activator.CreateInstance(newType), comparerGenericType);
           1624#else
           1625                        constant = Expression.Constant(comparer, comparerGenericType);
           1626#endif
           11627                    }
           1628
           61629                    queryExpr = Expression.Call(
           61630                        typeof(Queryable), dynamicOrdering.MethodName,
           61631                        new[] { source.ElementType, dynamicOrdering.Selector.Type },
           61632                        queryExpr, Expression.Quote(Expression.Lambda(dynamicOrdering.Selector, parameters)),
           61633                        constant);
           61634                }
           371635            }
           1636
           341637            var optimized = OptimizeExpression(queryExpr);
           341638            return (IOrderedQueryable)source.Provider.CreateQuery(optimized);
           341639        }
           1640
           1641        /// <inheritdoc cref="OrderBy(IQueryable, ParsingConfig, string, object[])"/>
           1642        public static IOrderedQueryable OrderBy([NotNull] this IQueryable source, [NotNull] string ordering, params obje
           111643        {
           111644            return OrderBy(source, ParsingConfig.Default, ordering, args);
           91645        }
           1646
           1647        /// <inheritdoc cref="OrderBy(IQueryable, ParsingConfig, string, IComparer, object[])"/>
           1648        public static IOrderedQueryable OrderBy([NotNull] this IQueryable source, [NotNull] string ordering, IComparer c
           01649        {
           01650            return OrderBy(source, ParsingConfig.Default, ordering, comparer, args);
           01651        }
           1652
           1653        #endregion OrderBy
           1654
           1655        #region Page/PageResult
           1656        /// <summary>
           1657        /// Returns the elements as paged.
           1658        /// </summary>
           1659        /// <param name="source">The IQueryable to return elements from.</param>
           1660        /// <param name="page">The page to return.</param>
           1661        /// <param name="pageSize">The number of elements per page.</param>
           1662        /// <returns>A <see cref="IQueryable"/> that contains the paged elements.</returns>
           1663        public static IQueryable Page([NotNull] this IQueryable source, int page, int pageSize)
           41664        {
           41665            Check.NotNull(source, nameof(source));
           81666            Check.Condition(page, p => p > 0, nameof(page));
           81667            Check.Condition(pageSize, ps => ps > 0, nameof(pageSize));
           1668
           41669            return source.Skip((page - 1) * pageSize).Take(pageSize);
           41670        }
           1671
           1672        /// <summary>
           1673        /// Returns the elements as paged.
           1674        /// </summary>
           1675        /// <typeparam name="TSource">The type of the source.</typeparam>
           1676        /// <param name="source">The IQueryable to return elements from.</param>
           1677        /// <param name="page">The page to return.</param>
           1678        /// <param name="pageSize">The number of elements per page.</param>
           1679        /// <returns>A <see cref="IQueryable{TSource}"/> that contains the paged elements.</returns>
           1680        public static IQueryable<TSource> Page<TSource>([NotNull] this IQueryable<TSource> source, int page, int pageSiz
           41681        {
           41682            Check.NotNull(source, nameof(source));
           81683            Check.Condition(page, p => p > 0, nameof(page));
           81684            Check.Condition(pageSize, ps => ps > 0, nameof(pageSize));
           1685
           41686            return Queryable.Take(Queryable.Skip(source, (page - 1) * pageSize), pageSize);
           41687        }
           1688
           1689        /// <summary>
           1690        /// Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
           1691        /// </summary>
           1692        /// <param name="source">The IQueryable to return elements from.</param>
           1693        /// <param name="page">The page to return.</param>
           1694        /// <param name="pageSize">The number of elements per page.</param>
           1695        /// <param name="rowCount">If this optional parameter has been defined, this value is used as the RowCount inste
           1696        /// <returns>PagedResult</returns>
           1697        public static PagedResult PageResult([NotNull] this IQueryable source, int page, int pageSize, int? rowCount = n
           21698        {
           21699            Check.NotNull(source, nameof(source));
           41700            Check.Condition(page, p => p > 0, nameof(page));
           41701            Check.Condition(pageSize, ps => ps > 0, nameof(pageSize));
           41702            Check.Condition(rowCount, rc => rc == null || rc >= 0, nameof(rowCount));
           1703
           21704            var result = new PagedResult
           21705            {
           21706                CurrentPage = page,
           21707                PageSize = pageSize,
           21708                RowCount = rowCount ?? source.Count()
           21709            };
           1710
           21711            result.PageCount = (int)Math.Ceiling((double)result.RowCount / pageSize);
           21712            result.Queryable = Page(source, page, pageSize);
           1713
           21714            return result;
           21715        }
           1716
           1717        /// <summary>
           1718        /// Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
           1719        /// </summary>
           1720        /// <typeparam name="TSource">The type of the source.</typeparam>
           1721        /// <param name="source">The IQueryable to return elements from.</param>
           1722        /// <param name="page">The page to return.</param>
           1723        /// <param name="pageSize">The number of elements per page.</param>
           1724        /// <param name="rowCount">If this optional parameter has been defined, this value is used as the RowCount inste
           1725        /// <returns>PagedResult{TSource}</returns>
           1726        public static PagedResult<TSource> PageResult<TSource>([NotNull] this IQueryable<TSource> source, int page, int 
           21727        {
           21728            Check.NotNull(source, nameof(source));
           41729            Check.Condition(page, p => p > 0, nameof(page));
           41730            Check.Condition(pageSize, ps => ps > 0, nameof(pageSize));
           41731            Check.Condition(rowCount, rc => rc == null || rc >= 0, nameof(rowCount));
           1732
           21733            var result = new PagedResult<TSource>
           21734            {
           21735                CurrentPage = page,
           21736                PageSize = pageSize,
           21737                RowCount = rowCount ?? Queryable.Count(source)
           21738            };
           1739
           21740            result.PageCount = (int)Math.Ceiling((double)result.RowCount / pageSize);
           21741            result.Queryable = Page(source, page, pageSize);
           1742
           21743            return result;
           21744        }
           1745        #endregion Page/PageResult
           1746
           1747        #region Reverse
           1748        /// <summary>
           1749        /// Inverts the order of the elements in a sequence.
           1750        /// </summary>
           1751        /// <param name="source">A sequence of values to reverse.</param>
           1752        /// <returns>A <see cref="IQueryable"/> whose elements correspond to those of the input sequence in reverse orde
           1753        public static IQueryable Reverse([NotNull] this IQueryable source)
           11754        {
           11755            Check.NotNull(source, nameof(source));
           1756
           11757            return Queryable.Reverse((IQueryable<object>)source);
           11758        }
           1759        #endregion Reverse
           1760
           1761        #region Select
           1762        /// <summary>
           1763        /// Projects each element of a sequence into a new form.
           1764        /// </summary>
           1765        /// <param name="source">A sequence of values to project.</param>
           1766        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1767        /// <param name="selector">A projection string expression to apply to each element.</param>
           1768        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1769        /// <returns>An <see cref="IQueryable"/> whose elements are the result of invoking a projection string on each e
           1770        /// <example>
           1771        /// <code>
           1772        /// var singleField = queryable.Select("StringProperty");
           1773        /// var dynamicObject = queryable.Select("new (StringProperty1, StringProperty2 as OtherStringPropertyName)");
           1774        /// </code>
           1775        /// </example>
           1776        public static IQueryable Select([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] stri
           1981777        {
           1981778            Check.NotNull(source, nameof(source));
           1971779            Check.NotNull(config, nameof(config));
           1971780            Check.NotEmpty(selector, nameof(selector));
           1781
           1941782            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           1941783            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1784
           1751785            var optimized = OptimizeExpression(Expression.Call(
           1751786                typeof(Queryable), nameof(Queryable.Select),
           1751787                new[] { source.ElementType, lambda.Body.Type },
           1751788                source.Expression, Expression.Quote(lambda))
           1751789            );
           1790
           1751791            return source.Provider.CreateQuery(optimized);
           1751792        }
           1793
           1794        /// <inheritdoc cref="Select(IQueryable, ParsingConfig, string, object[])"/>
           1795        public static IQueryable Select([NotNull] this IQueryable source, [NotNull] string selector, params object[] arg
           1891796        {
           1891797            return Select(source, ParsingConfig.Default, selector, args);
           1671798        }
           1799
           1800        /// <summary>
           1801        /// Projects each element of a sequence into a new class of type TResult.
           1802        /// Details see <see href="http://solutionizing.net/category/linq/"/>.
           1803        /// </summary>
           1804        /// <typeparam name="TResult">The type of the result.</typeparam>
           1805        /// <param name="source">A sequence of values to project.</param>
           1806        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1807        /// <param name="selector">A projection string expression to apply to each element.</param>
           1808        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1809        /// <returns>An <see cref="IQueryable{TResult}"/> whose elements are the result of invoking a projection string 
           1810        /// <example>
           1811        /// <code language="cs">
           1812        /// <![CDATA[
           1813        /// var users = queryable.Select<User>("new (Username, Pwd as Password)");
           1814        /// ]]>
           1815        /// </code>
           1816        /// </example>
           1817        public static IQueryable<TResult> Select<TResult>([NotNull] this IQueryable source, [NotNull] ParsingConfig conf
           401818        {
           401819            Check.NotNull(source, nameof(source));
           401820            Check.NotNull(config, nameof(config));
           401821            Check.NotEmpty(selector, nameof(selector));
           1822
           401823            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           401824            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1825
           391826            var optimized = OptimizeExpression(Expression.Call(
           391827                typeof(Queryable), nameof(Queryable.Select),
           391828                new[] { source.ElementType, typeof(TResult) },
           391829                source.Expression, Expression.Quote(lambda)));
           1830
           391831            return source.Provider.CreateQuery<TResult>(optimized);
           391832        }
           1833
           1834        /// <inheritdoc cref="Select{TResult}(IQueryable, ParsingConfig, string, object[])"/>
           1835        public static IQueryable<TResult> Select<TResult>([NotNull] this IQueryable source, [NotNull] string selector, p
           311836        {
           311837            return Select<TResult>(source, ParsingConfig.Default, selector, args);
           301838        }
           1839
           1840        /// <summary>
           1841        /// Projects each element of a sequence into a new class of type TResult.
           1842        /// Details see http://solutionizing.net/category/linq/
           1843        /// </summary>
           1844        /// <param name="source">A sequence of values to project.</param>
           1845        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1846        /// <param name="resultType">The result type.</param>
           1847        /// <param name="selector">A projection string expression to apply to each element.</param>
           1848        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1849        /// <returns>An <see cref="IQueryable"/> whose elements are the result of invoking a projection string on each e
           1850        /// <example>
           1851        /// <code>
           1852        /// var users = queryable.Select(typeof(User), "new (Username, Pwd as Password)");
           1853        /// </code>
           1854        /// </example>
           1855        public static IQueryable Select([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] Type
           31856        {
           31857            Check.NotNull(source, nameof(source));
           31858            Check.NotNull(config, nameof(config));
           31859            Check.NotNull(resultType, nameof(resultType));
           31860            Check.NotEmpty(selector, nameof(selector));
           1861
           31862            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           31863            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1864
           31865            var optimized = OptimizeExpression(Expression.Call(
           31866                typeof(Queryable), nameof(Queryable.Select),
           31867                new[] { source.ElementType, resultType },
           31868                source.Expression, Expression.Quote(lambda)));
           1869
           31870            return source.Provider.CreateQuery(optimized);
           31871        }
           1872
           1873        /// <inheritdoc cref="Select(IQueryable, ParsingConfig, Type, string, object[])"/>
           1874        public static IQueryable Select([NotNull] this IQueryable source, [NotNull] Type resultType, [NotNull] string se
           31875        {
           31876            return Select(source, ParsingConfig.Default, resultType, selector, args);
           31877        }
           1878
           1879        #endregion Select
           1880
           1881        #region SelectMany
           1882        /// <summary>
           1883        /// Projects each element of a sequence to an <see cref="IQueryable"/> and combines the resulting sequences into
           1884        /// </summary>
           1885        /// <param name="source">A sequence of values to project.</param>
           1886        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1887        /// <param name="selector">A projection string expression to apply to each element.</param>
           1888        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1889        /// <returns>An <see cref="IQueryable"/> whose elements are the result of invoking a one-to-many projection func
           1890        /// <example>
           1891        /// <code>
           1892        /// var roles = users.SelectMany("Roles");
           1893        /// </code>
           1894        /// </example>
           1895        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           141896        {
           141897            return SelectManyInternal(source, config, null, selector, args);
           121898        }
           1899
           1900        /// <inheritdoc cref="SelectMany(IQueryable, ParsingConfig, string, object[])"/>
           1901        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] string selector, params object[]
           141902        {
           141903            return SelectMany(source, ParsingConfig.Default, selector, args);
           121904        }
           1905
           1906        /// <summary>
           1907        /// Projects each element of a sequence to an <see cref="IQueryable"/> and combines the resulting sequences into
           1908        /// </summary>
           1909        /// <param name="source">A sequence of values to project.</param>
           1910        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1911        /// <param name="selector">A projection string expression to apply to each element.</param>
           1912        /// <param name="resultType">The result type.</param>
           1913        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1914        /// <returns>An <see cref="IQueryable"/> whose elements are the result of invoking a one-to-many projection func
           1915        /// <example>
           1916        /// <code>
           1917        /// var permissions = users.SelectMany(typeof(Permission), "Roles.SelectMany(Permissions)");
           1918        /// </code>
           1919        /// </example>
           1920        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           21921        {
           21922            Check.NotNull(source, nameof(source));
           21923            Check.NotNull(config, nameof(config));
           21924            Check.NotNull(resultType, nameof(resultType));
           21925            Check.NotEmpty(selector, nameof(selector));
           1926
           21927            return SelectManyInternal(source, config, resultType, selector, args);
           21928        }
           1929
           1930        /// <inheritdoc cref="SelectMany(IQueryable, ParsingConfig, Type, string, object[])"/>
           1931        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] Type resultType, [NotNull] strin
           21932        {
           21933            return SelectMany(source, ParsingConfig.Default, resultType, selector, args);
           21934        }
           1935
           1936        private static IQueryable SelectManyInternal(IQueryable source, ParsingConfig config, Type resultType, string se
           161937        {
           161938            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           161939            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           1940
           1941            //Extra help to get SelectMany to work from StackOverflow Answer
           1942            //http://stackoverflow.com/a/3001674/2465182
           1943
           1944            // if resultType is not specified, create one based on the lambda.Body.Type
           141945            if (resultType == null)
           121946            {
           1947                // SelectMany assumes that lambda.Body.Type is a generic type and throws an exception on
           1948                // lambda.Body.Type.GetGenericArguments()[0] when used over an array as GetGenericArguments() returns an
           121949                if (lambda.Body.Type.IsArray)
           61950                {
           1951                    // In case of an Array, get the type via GetElementType().
           61952                    resultType = lambda.Body.Type.GetElementType();
           61953                }
           1954                else
           61955                {
           61956                    var genericArguments = lambda.Body.Type.GetGenericArguments();
           61957                    resultType = genericArguments.Any() ? genericArguments[0] : typeof(object);
           61958                }
           121959            }
           1960
           1961            //we have to adjust to lambda to return an IEnumerable<T> instead of whatever the actual property is.
           141962            Type enumerableType = typeof(IEnumerable<>).MakeGenericType(resultType);
           141963            Type inputType = source.Expression.Type.GetTypeInfo().GetGenericTypeArguments()[0];
           141964            Type delegateType = typeof(Func<,>).MakeGenericType(inputType, enumerableType);
           141965            lambda = Expression.Lambda(delegateType, lambda.Body, lambda.Parameters);
           1966
           141967            var optimized = OptimizeExpression(Expression.Call(
           141968                typeof(Queryable), nameof(Queryable.SelectMany),
           141969                new[] { source.ElementType, resultType },
           141970                source.Expression, Expression.Quote(lambda))
           141971            );
           1972
           141973            return source.Provider.CreateQuery(optimized);
           141974        }
           1975
           1976        /// <summary>
           1977        /// Projects each element of a sequence to an <see cref="IQueryable{TResult}"/> and combines the resulting seque
           1978        /// </summary>
           1979        /// <typeparam name="TResult">The type of the result.</typeparam>
           1980        /// <param name="source">A sequence of values to project.</param>
           1981        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           1982        /// <param name="selector">A projection string expression to apply to each element.</param>
           1983        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           1984        /// <returns>An <see cref="IQueryable{TResult}"/> whose elements are the result of invoking a one-to-many projec
           1985        /// <example>
           1986        /// <code>
           1987        /// <![CDATA[
           1988        /// var permissions = users.SelectMany<Permission>("Roles.SelectMany(Permissions)");
           1989        /// ]]>
           1990        /// </code>
           1991        /// </example>
           1992        public static IQueryable<TResult> SelectMany<TResult>([NotNull] this IQueryable source, [NotNull] ParsingConfig 
           31993        {
           31994            Check.NotNull(source, nameof(source));
           31995            Check.NotNull(config, nameof(config));
           31996            Check.NotEmpty(selector, nameof(selector));
           1997
           31998            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           31999            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(createParameterCtor, source.ElementType, null,
           2000
           2001            //we have to adjust to lambda to return an IEnumerable<T> instead of whatever the actual property is.
           32002            Type inputType = source.Expression.Type.GetTypeInfo().GetGenericTypeArguments()[0];
           32003            Type enumerableType = typeof(IEnumerable<>).MakeGenericType(typeof(TResult));
           32004            Type delegateType = typeof(Func<,>).MakeGenericType(inputType, enumerableType);
           32005            lambda = Expression.Lambda(delegateType, lambda.Body, lambda.Parameters);
           2006
           32007            var optimized = OptimizeExpression(Expression.Call(
           32008                typeof(Queryable), nameof(Queryable.SelectMany),
           32009                new[] { source.ElementType, typeof(TResult) },
           32010                source.Expression, Expression.Quote(lambda))
           32011            );
           2012
           32013            return source.Provider.CreateQuery<TResult>(optimized);
           32014        }
           2015
           2016        /// <inheritdoc cref="SelectMany{TResult}(IQueryable, ParsingConfig, string, object[])"/>
           2017        public static IQueryable<TResult> SelectMany<TResult>([NotNull] this IQueryable source, [NotNull] string selecto
           32018        {
           32019            return SelectMany<TResult>(source, ParsingConfig.Default, selector, args);
           32020        }
           2021
           2022        /// <summary>
           2023        /// Projects each element of a sequence to an <see cref="IQueryable"/>
           2024        /// and invokes a result selector function on each element therein. The resulting
           2025        /// values from each intermediate sequence are combined into a single, one-dimensional
           2026        /// sequence and returned.
           2027        /// </summary>
           2028        /// <param name="source">A sequence of values to project.</param>
           2029        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2030        /// <param name="collectionSelector">A projection function to apply to each element of the input sequence.</para
           2031        /// <param name="resultSelector">A projection function to apply to each element of each intermediate sequence. S
           2032        /// <param name="collectionSelectorArgs">An object array that contains zero or more objects to insert into the p
           2033        /// <param name="resultSelectorArgs">An object array that contains zero or more objects to insert into the predi
           2034        /// <returns>
           2035        /// An <see cref="IQueryable"/> whose elements are the result of invoking the one-to-many
           2036        /// projection function <paramref name="collectionSelector"/> on each element of source and then mapping
           2037        /// each of those sequence elements and their corresponding source element to a result element.
           2038        /// </returns>
           2039        /// <example>
           2040        /// <code>
           2041        /// <![CDATA[
           2042        /// // TODO
           2043        /// ]]>
           2044        /// </code>
           2045        /// </example>
           2046        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           02047        {
           02048            return SelectMany(source, collectionSelector, resultSelector, "x", "y", collectionSelectorArgs, resultSelect
           02049        }
           2050
           2051        /// <inheritdoc cref="SelectMany(IQueryable, ParsingConfig, string, string, string, string, object[], object[])"
           2052        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] string collectionSelector, [NotN
           12053        {
           12054            return SelectMany(source, ParsingConfig.Default, collectionSelector, resultSelector, "x", "y", collectionSel
           12055        }
           2056
           2057        /// <summary>
           2058        /// Projects each element of a sequence to an <see cref="IQueryable"/>
           2059        /// and invokes a result selector function on each element therein. The resulting
           2060        /// values from each intermediate sequence are combined into a single, one-dimensional
           2061        /// sequence and returned.
           2062        /// </summary>
           2063        /// <param name="source">A sequence of values to project.</param>
           2064        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2065        /// <param name="collectionSelector">A projection function to apply to each element of the input sequence.</para
           2066        /// <param name="collectionParameterName">The name from collectionParameter to use. Default is x.</param>
           2067        /// <param name="resultSelector">A projection function to apply to each element of each intermediate sequence.</
           2068        /// <param name="resultParameterName">The name from resultParameterName to use. Default is y.</param>
           2069        /// <param name="collectionSelectorArgs">An object array that contains zero or more objects to insert into the p
           2070        /// <param name="resultSelectorArgs">An object array that contains zero or more objects to insert into the predi
           2071        /// <returns>
           2072        /// An <see cref="IQueryable"/> whose elements are the result of invoking the one-to-many
           2073        /// projection function <paramref name="collectionSelector"/> on each element of source and then mapping
           2074        /// each of those sequence elements and their corresponding source element to a result element.
           2075        /// </returns>
           2076        /// <example>
           2077        /// <code>
           2078        /// <![CDATA[
           2079        /// // TODO
           2080        /// ]]>
           2081        /// </code>
           2082        /// </example>
           2083        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           22084        {
           22085            Check.NotNull(source, nameof(source));
           22086            Check.NotNull(config, nameof(config));
           22087            Check.NotEmpty(collectionSelector, nameof(collectionSelector));
           22088            Check.NotEmpty(collectionParameterName, nameof(collectionParameterName));
           22089            Check.NotEmpty(resultSelector, nameof(resultSelector));
           22090            Check.NotEmpty(resultParameterName, nameof(resultParameterName));
           2091
           22092            bool createParameterCtor = config?.EvaluateGroupByAtDatabase ?? SupportsLinqToObjects(config, source);
           22093            LambdaExpression sourceSelectLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, sourc
           2094
           2095            //we have to adjust to lambda to return an IEnumerable<T> instead of whatever the actual property is.
           22096            Type sourceLambdaInputType = source.Expression.Type.GetGenericArguments()[0];
           22097            Type sourceLambdaResultType = sourceSelectLambda.Body.Type.GetGenericArguments()[0];
           22098            Type sourceLambdaEnumerableType = typeof(IEnumerable<>).MakeGenericType(sourceLambdaResultType);
           22099            Type sourceLambdaDelegateType = typeof(Func<,>).MakeGenericType(sourceLambdaInputType, sourceLambdaEnumerabl
           2100
           22101            sourceSelectLambda = Expression.Lambda(sourceLambdaDelegateType, sourceSelectLambda.Body, sourceSelectLambda
           2102
           2103            //we have to create additional lambda for result selection
           22104            ParameterExpression xParameter = ParameterExpressionHelper.CreateParameterExpression(source.ElementType, col
           22105            ParameterExpression yParameter = ParameterExpressionHelper.CreateParameterExpression(sourceLambdaResultType,
           2106
           22107            LambdaExpression resultSelectLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, new[]
           22108            Type resultLambdaResultType = resultSelectLambda.Body.Type;
           2109
           22110            var optimized = OptimizeExpression(Expression.Call(
           22111                typeof(Queryable), nameof(Queryable.SelectMany),
           22112                new[] { source.ElementType, sourceLambdaResultType, resultLambdaResultType },
           22113                source.Expression, Expression.Quote(sourceSelectLambda), Expression.Quote(resultSelectLambda))
           22114            );
           2115
           22116            return source.Provider.CreateQuery(optimized);
           22117        }
           2118
           2119        /// <inheritdoc cref="SelectMany(IQueryable, ParsingConfig, string, string, string, string, object[], object[])"
           2120        public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] string collectionSelector, [NotN
           12121        {
           12122            return SelectMany(source, ParsingConfig.Default, collectionSelector, resultSelector, collectionParameterName
           12123        }
           2124
           2125        #endregion SelectMany
           2126
           2127        #region Single/SingleOrDefault
           12128        private static readonly MethodInfo _singlePredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(nam
           12129        private static readonly MethodInfo _singleDefaultPredicate = QueryableMethodFinder.GetMethodWithExpressionParame
           2130
           2131        /// <summary>
           2132        /// Returns the only element of a sequence, and throws an exception if there
           2133        /// is not exactly one element in the sequence.
           2134        /// </summary>
           2135        /// <param name="source">A <see cref="IQueryable"/> to return the single element of.</param>
           2136        /// <returns>The single element of the input sequence.</returns>
           2137#if NET35
           2138        public static object Single([NotNull] this IQueryable source)
           2139#else
           2140        public static dynamic Single([NotNull] this IQueryable source)
           2141#endif
           582142        {
           582143            Check.NotNull(source, nameof(source));
           2144
           582145            var optimized = OptimizeExpression(Expression.Call(typeof(Queryable), nameof(Queryable.Single), new[] { sour
           582146            return source.Provider.Execute(optimized);
           582147        }
           2148
           2149        /// <summary>
           2150        /// Returns the only element of a sequence that satisfies a specified condition, and throws an exception if ther
           2151        /// is not exactly one element in the sequence.
           2152        /// </summary>
           2153        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           2154        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2155        /// <param name="predicate">A function to test each element for a condition.</param>
           2156        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2157        /// <returns>The first element in source that passes the test in predicate.</returns>
           2158#if NET35
           2159        public static object Single([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string p
           2160#else
           2161        public static dynamic Single([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string 
           2162#endif
           32163        {
           32164            Check.NotNull(source, nameof(source));
           32165            Check.NotNull(config, nameof(config));
           32166            Check.NotEmpty(predicate, nameof(predicate));
           2167
           32168            bool createParameterCtor = SupportsLinqToObjects(config, source);
           32169            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2170
           32171            return Execute(_singlePredicate, source, lambda);
           32172        }
           2173
           2174        /// <inheritdoc cref="Single(IQueryable, ParsingConfig, string, object[])"/>
           2175#if NET35
           2176        public static object Single([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           2177#else
           2178        public static dynamic Single([NotNull] this IQueryable source, [NotNull] string predicate, params object[] args)
           2179#endif
           22180        {
           22181            return Single(source, ParsingConfig.Default, predicate, args);
           22182        }
           2183
           2184        /// <summary>
           2185        /// Returns the only element of a sequence that satisfies a specified condition, and throws an exception if ther
           2186        /// is not exactly one element in the sequence.
           2187        /// </summary>
           2188        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           2189        /// <param name="lambda">A cached Lambda Expression.</param>
           2190        /// <returns>The first element in source that passes the test in predicate.</returns>
           2191#if NET35
           2192        public static object Single([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           2193#else
           2194        public static dynamic Single([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           2195#endif
           12196        {
           12197            Check.NotNull(source, nameof(source));
           12198            return Execute(_singlePredicate, source, lambda);
           12199        }
           2200
           2201        /// <summary>
           2202        /// Returns the only element of a sequence, or a default value if the sequence
           2203        /// is empty; this method throws an exception if there is more than one element
           2204        /// in the sequence.
           2205        /// </summary>
           2206        /// <param name="source">A <see cref="IQueryable"/> to return the single element of.</param>
           2207        /// <returns>The single element of the input sequence, or default if the sequence contains no elements.</returns
           2208#if NET35
           2209        public static object SingleOrDefault([NotNull] this IQueryable source)
           2210#else
           2211        public static dynamic SingleOrDefault([NotNull] this IQueryable source)
           2212#endif
           22213        {
           22214            Check.NotNull(source, nameof(source));
           2215
           22216            var optimized = OptimizeExpression(Expression.Call(typeof(Queryable), nameof(Queryable.SingleOrDefault), new
           22217            return source.Provider.Execute(optimized);
           22218        }
           2219
           2220        /// <summary>
           2221        /// Returns the only element of a sequence that satisfies a specified condition or a default value if the sequen
           2222        /// is empty; and throws an exception if there is not exactly one element in the sequence.
           2223        /// </summary>
           2224        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           2225        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2226        /// <param name="predicate">A function to test each element for a condition.</param>
           2227        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2228        /// <returns>The first element in source that passes the test in predicate.</returns>
           2229#if NET35
           2230        public static object SingleOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull]
           2231#else
           2232        public static dynamic SingleOrDefault([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull
           2233#endif
           32234        {
           32235            Check.NotNull(source, nameof(source));
           32236            Check.NotNull(config, nameof(config));
           32237            Check.NotEmpty(predicate, nameof(predicate));
           2238
           32239            bool createParameterCtor = SupportsLinqToObjects(config, source);
           32240            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2241
           32242            return Execute(_singleDefaultPredicate, source, lambda);
           32243        }
           2244
           2245        /// <inheritdoc cref="SingleOrDefault(IQueryable, ParsingConfig, string, object[])"/>
           2246#if NET35
           2247        public static object SingleOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params object
           2248#else
           2249        public static dynamic SingleOrDefault([NotNull] this IQueryable source, [NotNull] string predicate, params objec
           2250#endif
           22251        {
           22252            return SingleOrDefault(source, ParsingConfig.Default, predicate, args);
           22253        }
           2254
           2255        /// <summary>
           2256        /// Returns the only element of a sequence that satisfies a specified condition or a default value if the sequen
           2257        /// is empty; and throws an exception if there is not exactly one element in the sequence.
           2258        /// </summary>
           2259        /// <param name="source">The <see cref="IQueryable"/> to return the last element of.</param>
           2260        /// <param name="lambda">A cached Lambda Expression.</param>
           2261        /// <returns>The first element in source that passes the test in predicate.</returns>
           2262#if NET35
           2263        public static object SingleOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           2264#else
           2265        public static dynamic SingleOrDefault([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           2266#endif
           12267        {
           12268            Check.NotNull(source, nameof(source));
           12269            Check.NotNull(lambda, nameof(lambda));
           2270
           12271            return Execute(_singleDefaultPredicate, source, lambda);
           12272        }
           2273        #endregion Single/SingleOrDefault
           2274
           2275        #region Skip
           12276        private static readonly MethodInfo _skip = QueryableMethodFinder.GetMethod(nameof(Queryable.Skip), 1);
           2277
           2278        /// <summary>
           2279        /// Bypasses a specified number of elements in a sequence and then returns the remaining elements.
           2280        /// </summary>
           2281        /// <param name="source">A <see cref="IQueryable"/> to return elements from.</param>
           2282        /// <param name="count">The number of elements to skip before returning the remaining elements.</param>
           2283        /// <returns>A <see cref="IQueryable"/> that contains elements that occur after the specified index in the input
           2284        public static IQueryable Skip([NotNull] this IQueryable source, int count)
           102285        {
           102286            Check.NotNull(source, nameof(source));
           202287            Check.Condition(count, x => x >= 0, nameof(count));
           2288
           2289            //no need to skip if count is zero
           102290            if (count == 0)
           12291                return source;
           2292
           92293            return CreateQuery(_skip, source, Expression.Constant(count));
           102294        }
           2295        #endregion Skip
           2296
           2297        #region SkipWhile
           12298        private static readonly MethodInfo _skipWhilePredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(
           2299
           2300        /// <summary>
           2301        /// Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elem
           2302        /// </summary>
           2303        /// <param name="source">A sequence to check for being empty.</param>
           2304        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2305        /// <param name="predicate">A function to test each element for a condition.</param>
           2306        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2307        /// <example>
           2308        /// <code language="cs">
           2309        /// IQueryable queryable = employees.AsQueryable();
           2310        /// var result1 = queryable.SkipWhile("Income > 50");
           2311        /// var result2 = queryable.SkipWhile("Income > @0", 50);
           2312        /// </code>
           2313        /// </example>
           2314        /// <returns>An <see cref="IQueryable"/> that contains elements from source starting at the first element in the
           2315        public static IQueryable SkipWhile([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] s
           52316        {
           52317            Check.NotNull(source, nameof(source));
           52318            Check.NotNull(config, nameof(config));
           52319            Check.NotNull(predicate, nameof(predicate));
           2320
           52321            bool createParameterCtor = SupportsLinqToObjects(config, source);
           52322            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2323
           52324            return CreateQuery(_skipWhilePredicate, source, lambda);
           52325        }
           2326
           2327        /// <inheritdoc cref="SkipWhile(IQueryable, ParsingConfig, string, object[])"/>
           2328        public static IQueryable SkipWhile([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] par
           42329        {
           42330            return SkipWhile(source, ParsingConfig.Default, predicate, args);
           42331        }
           2332        #endregion SkipWhile
           2333
           2334        #region Sum
           2335        /// <summary>
           2336        /// Computes the sum of a sequence of numeric values.
           2337        /// </summary>
           2338        /// <param name="source">A sequence of numeric values to calculate the sum of.</param>
           2339        /// <example>
           2340        /// <code language="cs">
           2341        /// IQueryable queryable = employees.AsQueryable();
           2342        /// var result1 = queryable.Sum();
           2343        /// var result2 = queryable.Select("Roles.Sum()");
           2344        /// </code>
           2345        /// </example>
           2346        /// <returns>The sum of the values in the sequence.</returns>
           2347        [PublicAPI]
           2348        public static object Sum([NotNull] this IQueryable source)
           72349        {
           72350            Check.NotNull(source, nameof(source));
           2351
           72352            var sum = QueryableMethodFinder.GetMethod(nameof(Queryable.Sum), source.ElementType);
           72353            return Execute<object>(sum, source);
           72354        }
           2355
           2356        /// <summary>
           2357        /// Computes the sum of a sequence of numeric values.
           2358        /// </summary>
           2359        /// <param name="source">A sequence of numeric values to calculate the sum of.</param>
           2360        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2361        /// <param name="predicate">A function to test each element for a condition.</param>
           2362        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2363        /// <example>
           2364        /// <code language="cs">
           2365        /// IQueryable queryable = employees.AsQueryable();
           2366        /// var result = queryable.Sum("Income");
           2367        /// </code>
           2368        /// </example>
           2369        /// <returns>The sum of the values in the sequence.</returns>
           2370        [PublicAPI]
           2371        public static object Sum([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] string pred
           32372        {
           32373            Check.NotNull(source, nameof(source));
           32374            Check.NotNull(config, nameof(config));
           32375            Check.NotEmpty(predicate, nameof(predicate));
           2376
           32377            bool createParameterCtor = SupportsLinqToObjects(config, source);
           32378            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2379
           32380            var sumSelector = QueryableMethodFinder.GetMethod(nameof(Queryable.Sum), lambda.GetReturnType(), 1);
           2381
           32382            return Execute<object>(sumSelector, source, lambda);
           32383        }
           2384
           2385        /// <inheritdoc cref="Sum(IQueryable, ParsingConfig, string, object[])"/>
           2386        [PublicAPI]
           2387        public static object Sum([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] params object
           32388        {
           32389            return Sum(source, ParsingConfig.Default, predicate, args);
           32390        }
           2391
           2392        /// <summary>
           2393        /// Computes the sum of a sequence of numeric values.
           2394        /// </summary>
           2395        /// <param name="source">A sequence of numeric values to calculate the sum of.</param>
           2396        /// <param name="lambda">A Lambda Expression.</param>
           2397        /// <returns>The sum of the values in the sequence.</returns>
           2398        [PublicAPI]
           2399        public static object Sum([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           02400        {
           02401            Check.NotNull(source, nameof(source));
           02402            Check.NotNull(lambda, nameof(lambda));
           2403
           02404            var sumSelector = QueryableMethodFinder.GetMethod(nameof(Queryable.Sum), lambda.GetReturnType(), 1);
           2405
           02406            return Execute<object>(sumSelector, source, lambda);
           02407        }
           2408        #endregion Sum
           2409
           2410        #region Take
           12411        private static readonly MethodInfo _take = QueryableMethodFinder.GetMethodWithIntParameter(nameof(Queryable.Take
           2412        /// <summary>
           2413        /// Returns a specified number of contiguous elements from the start of a sequence.
           2414        /// </summary>
           2415        /// <param name="source">The sequence to return elements from.</param>
           2416        /// <param name="count">The number of elements to return.</param>
           2417        /// <returns>A <see cref="IQueryable"/> that contains the specified number of elements from the start of source.
           2418        public static IQueryable Take([NotNull] this IQueryable source, int count)
           142419        {
           142420            Check.NotNull(source, nameof(source));
           282421            Check.Condition(count, x => x >= 0, nameof(count));
           2422
           142423            return CreateQuery(_take, source, Expression.Constant(count));
           142424        }
           2425        #endregion Take
           2426
           2427        #region TakeWhile
           12428        private static readonly MethodInfo _takeWhilePredicate = QueryableMethodFinder.GetMethodWithExpressionParameter(
           2429
           2430        /// <summary>
           2431        /// Returns elements from a sequence as long as a specified condition is true.
           2432        /// </summary>
           2433        /// <param name="source">A sequence to check for being empty.</param>
           2434        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2435        /// <param name="predicate">A function to test each element for a condition.</param>
           2436        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2437        /// <example>
           2438        /// <code language="cs">
           2439        /// IQueryable queryable = employees.AsQueryable();
           2440        /// var result1 = queryable.TakeWhile("Income > 50");
           2441        /// var result2 = queryable.TakeWhile("Income > @0", 50);
           2442        /// </code>
           2443        /// </example>
           2444        /// <returns>An <see cref="IQueryable"/> that contains elements from the input sequence occurring before the ele
           2445        public static IQueryable TakeWhile([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] s
           52446        {
           52447            Check.NotNull(source, nameof(source));
           52448            Check.NotNull(config, nameof(config));
           52449            Check.NotNull(predicate, nameof(predicate));
           2450
           52451            bool createParameterCtor = SupportsLinqToObjects(config, source);
           52452            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2453
           52454            return CreateQuery(_takeWhilePredicate, source, lambda);
           52455        }
           2456
           2457        /// <inheritdoc cref="TakeWhile(IQueryable, ParsingConfig, string, object[])"/>
           2458        public static IQueryable TakeWhile([NotNull] this IQueryable source, [NotNull] string predicate, [CanBeNull] par
           42459        {
           42460            return TakeWhile(source, ParsingConfig.Default, predicate, args);
           42461        }
           2462
           2463        #endregion TakeWhile
           2464
           2465        #region ThenBy
           2466        /// <summary>
           2467        /// Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
           2468        /// </summary>
           2469        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           2470        /// <param name="source">A sequence of values to order.</param>
           2471        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2472        /// <param name="ordering">An expression string to indicate values to order by.</param>
           2473        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2474        /// <returns>A <see cref="IOrderedQueryable{T}"/> whose elements are sorted according to the specified <paramref
           2475        /// <example>
           2476        /// <code>
           2477        /// <![CDATA[
           2478        /// var result = queryable.OrderBy<User>("LastName");
           2479        /// var resultSingle = result.ThenBy<User>("NumberProperty");
           2480        /// var resultSingleDescending = result.ThenBy<User>("NumberProperty DESC");
           2481        /// var resultMultiple = result.ThenBy<User>("NumberProperty, StringProperty");
           2482        /// ]]>
           2483        /// </code>
           2484        /// </example>
           2485        public static IOrderedQueryable<TSource> ThenBy<TSource>([NotNull] this IOrderedQueryable<TSource> source, [NotN
           92486        {
           92487            return (IOrderedQueryable<TSource>)ThenBy((IOrderedQueryable)source, config, ordering, args);
           22488        }
           2489
           2490        /// <inheritdoc cref="ThenBy{TSource}(IOrderedQueryable{TSource}, ParsingConfig, string, object[])"/>
           2491        public static IOrderedQueryable<TSource> ThenBy<TSource>([NotNull] this IOrderedQueryable<TSource> source, [NotN
           92492        {
           92493            return ThenBy(source, ParsingConfig.Default, ordering, args);
           22494        }
           2495
           2496        /// <summary>
           2497        /// Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
           2498        /// </summary>
           2499        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           2500        /// <param name="source">A sequence of values to order.</param>
           2501        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2502        /// <param name="ordering">An expression string to indicate values to order by.</param>
           2503        /// <param name="comparer">The comparer to use.</param>
           2504        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2505        /// <returns>A <see cref="IOrderedQueryable{T}"/> whose elements are sorted according to the specified <paramref
           2506        public static IOrderedQueryable<TSource> ThenBy<TSource>([NotNull] this IOrderedQueryable<TSource> source, [NotN
           12507        {
           12508            return (IOrderedQueryable<TSource>)InternalThenBy((IOrderedQueryable)source, config, ordering, comparer, arg
           12509        }
           2510
           2511        /// <summary>
           2512        /// Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
           2513        /// </summary>
           2514        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           2515        /// <param name="source">A sequence of values to order.</param>
           2516        /// <param name="ordering">An expression string to indicate values to order by.</param>
           2517        /// <param name="comparer">The comparer to use.</param>
           2518        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2519        /// <returns>A <see cref="IOrderedQueryable{T}"/> whose elements are sorted according to the specified <paramref
           2520        public static IOrderedQueryable<TSource> ThenBy<TSource>([NotNull] this IOrderedQueryable<TSource> source, [NotN
           12521        {
           12522            return ThenBy(source, ParsingConfig.Default, ordering, comparer, args);
           12523        }
           2524
           2525        /// <summary>
           2526        /// Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
           2527        /// </summary>
           2528        /// <param name="source">A sequence of values to order.</param>
           2529        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2530        /// <param name="ordering">An expression string to indicate values to order by.</param>
           2531        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2532        /// <returns>A <see cref="IQueryable"/> whose elements are sorted according to the specified <paramref name="ord
           2533        /// <example>
           2534        /// <code>
           2535        /// var result = queryable.OrderBy("LastName");
           2536        /// var resultSingle = result.OrderBy("NumberProperty");
           2537        /// var resultSingleDescending = result.OrderBy("NumberProperty DESC");
           2538        /// var resultMultiple = result.OrderBy("NumberProperty, StringProperty DESC");
           2539        /// </code>
           2540        /// </example>
           2541        public static IOrderedQueryable ThenBy([NotNull] this IOrderedQueryable source, [NotNull] ParsingConfig config, 
           112542        {
           112543            return InternalThenBy(source, config, ordering, null, args);
           22544        }
           2545
           2546        /// <summary>
           2547        /// Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
           2548        /// </summary>
           2549        /// <param name="source">A sequence of values to order.</param>
           2550        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2551        /// <param name="ordering">An expression string to indicate values to order by.</param>
           2552        /// <param name="comparer">The comparer to use.</param>
           2553        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2554        /// <returns>A <see cref="IQueryable"/> whose elements are sorted according to the specified <paramref name="ord
           2555        public static IOrderedQueryable ThenBy([NotNull] this IOrderedQueryable source, [NotNull] ParsingConfig config, 
           02556        {
           02557            return InternalThenBy(source, config, ordering, comparer, args);
           02558        }
           2559
           2560        internal static IOrderedQueryable InternalThenBy([NotNull] IOrderedQueryable source, [NotNull] ParsingConfig con
           122561        {
           122562            Check.NotNull(source, nameof(source));
           102563            Check.NotNull(config, nameof(config));
           102564            Check.NotEmpty(ordering, nameof(ordering));
           2565
           52566            ParameterExpression[] parameters = { ParameterExpressionHelper.CreateParameterExpression(source.ElementType,
           52567            ExpressionParser parser = new ExpressionParser(parameters, ordering, args, config);
           52568            IList<DynamicOrdering> dynamicOrderings = parser.ParseOrdering(forceThenBy: true);
           2569
           32570            Expression queryExpr = source.Expression;
           2571
           172572            foreach (DynamicOrdering dynamicOrdering in dynamicOrderings)
           42573            {
           42574                if (comparer == null)
           32575                {
           32576                    queryExpr = Expression.Call(
           32577                        typeof(Queryable), dynamicOrdering.MethodName,
           32578                        new[] { source.ElementType, dynamicOrdering.Selector.Type },
           32579                        queryExpr, Expression.Quote(Expression.Lambda(dynamicOrdering.Selector, parameters)));
           32580                }
           2581                else
           12582                {
           12583                    var comparerGenericType = typeof(IComparer<>).MakeGenericType(dynamicOrdering.Selector.Type);
           12584                    queryExpr = Expression.Call(
           12585                        typeof(Queryable), dynamicOrdering.MethodName,
           12586                        new[] { source.ElementType, dynamicOrdering.Selector.Type },
           12587                        queryExpr, Expression.Quote(Expression.Lambda(dynamicOrdering.Selector, parameters)),
           12588                        Expression.Constant(comparer, comparerGenericType));
           12589                }
           42590            }
           2591
           32592            var optimized = OptimizeExpression(queryExpr);
           32593            return (IOrderedQueryable)source.Provider.CreateQuery(optimized);
           32594        }
           2595
           2596        /// <inheritdoc cref="ThenBy(IOrderedQueryable, ParsingConfig, string, object[])"/>
           2597        public static IOrderedQueryable ThenBy([NotNull] this IOrderedQueryable source, [NotNull] string ordering, param
           22598        {
           22599            return ThenBy(source, ParsingConfig.Default, ordering, args);
           02600        }
           2601
           2602        /// <inheritdoc cref="ThenBy(IOrderedQueryable, ParsingConfig, string, IComparer, object[])"/>
           2603        public static IOrderedQueryable ThenBy([NotNull] this IOrderedQueryable source, [NotNull] string ordering, IComp
           02604        {
           02605            return ThenBy(source, ParsingConfig.Default, ordering, comparer, args);
           02606        }
           2607
           2608        #endregion OrderBy
           2609
           2610        #region Where
           2611        /// <summary>
           2612        /// Filters a sequence of values based on a predicate.
           2613        /// </summary>
           2614        /// <typeparam name="TSource">The type of the elements of source.</typeparam>
           2615        /// <param name="source">A <see cref="IQueryable{TSource}"/> to filter.</param>
           2616        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2617        /// <param name="predicate">An expression string to test each element for a condition.</param>
           2618        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2619        /// <returns>A <see cref="IQueryable{TSource}"/> that contains elements from the input sequence that satisfy the
           2620        /// <example>
           2621        /// <code language="cs">
           2622        /// var result1 = queryable.Where("NumberProperty = 1");
           2623        /// var result2 = queryable.Where("NumberProperty = @0", 1);
           2624        /// var result3 = queryable.Where("StringProperty = null");
           2625        /// var result4 = queryable.Where("StringProperty = \"abc\"");
           2626        /// var result5 = queryable.Where("StringProperty = @0", "abc");
           2627        /// </code>
           2628        /// </example>
           2629        public static IQueryable<TSource> Where<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] ParsingCon
           2462630        {
           2462631            return (IQueryable<TSource>)Where((IQueryable)source, config, predicate, args);
           2162632        }
           2633
           2634        /// <inheritdoc cref="DynamicQueryableExtensions.Where{TSource}(IQueryable{TSource}, ParsingConfig, string, obje
           2635        public static IQueryable<TSource> Where<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] string pre
           2252636        {
           2252637            return Where(source, ParsingConfig.Default, predicate, args);
           1962638        }
           2639
           2640        /// <summary>
           2641        /// Filters a sequence of values based on a predicate.
           2642        /// </summary>
           2643        /// <param name="source">A <see cref="IQueryable"/> to filter.</param>
           2644        /// <param name="config">The <see cref="ParsingConfig"/>.</param>
           2645        /// <param name="predicate">An expression string to test each element for a condition.</param>
           2646        /// <param name="args">An object array that contains zero or more objects to insert into the predicate as parame
           2647        /// <returns>A <see cref="IQueryable"/> that contains elements from the input sequence that satisfy the conditio
           2648        /// <example>
           2649        /// <code>
           2650        /// var result1 = queryable.Where("NumberProperty = 1");
           2651        /// var result2 = queryable.Where("NumberProperty = @0", 1);
           2652        /// var result3 = queryable.Where("StringProperty = null");
           2653        /// var result4 = queryable.Where("StringProperty = \"abc\"");
           2654        /// var result5 = queryable.Where("StringProperty = @0", "abc");
           2655        /// </code>
           2656        /// </example>
           2657        public static IQueryable Where([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] strin
           2512658        {
           2512659            Check.NotNull(source, nameof(source));
           2492660            Check.NotNull(config, nameof(config));
           2492661            Check.NotEmpty(predicate, nameof(predicate));
           2662
           2442663            bool createParameterCtor = SupportsLinqToObjects(config, source);
           2442664            LambdaExpression lambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, source.ElementTyp
           2665
           2212666            var optimized = OptimizeExpression(Expression.Call(typeof(Queryable), nameof(Queryable.Where), new[] { sourc
           2192667            return source.Provider.CreateQuery(optimized);
           2192668        }
           2669
           2670        /// <inheritdoc cref="DynamicQueryableExtensions.Where(IQueryable, ParsingConfig, string, object[])"/>
           2671        public static IQueryable Where([NotNull] this IQueryable source, [NotNull] string predicate, params object[] arg
           52672        {
           52673            return Where(source, ParsingConfig.Default, predicate, args);
           32674        }
           2675
           2676        /// <summary>
           2677        /// Filters a sequence of values based on a predicate.
           2678        /// </summary>
           2679        /// <param name="source">A <see cref="IQueryable"/> to filter.</param>
           2680        /// <param name="lambda">A cached Lambda Expression.</param>
           2681        /// <returns>A <see cref="IQueryable"/> that contains elements from the input sequence that satisfy the conditio
           2682        public static IQueryable Where([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda)
           92683        {
           92684            Check.NotNull(source, nameof(source));
           92685            Check.NotNull(lambda, nameof(lambda));
           2686
           92687            var optimized = OptimizeExpression(Expression.Call(typeof(Queryable), nameof(Queryable.Where), new[] { sourc
           92688            return source.Provider.CreateQuery(optimized);
           92689        }
           2690
           2691        /// <inheritdoc cref="DynamicQueryableExtensions.Where(IQueryable, LambdaExpression)"/>
           2692        public static IQueryable<TSource> Where<TSource>([NotNull] this IQueryable<TSource> source, [NotNull] LambdaExpr
           82693        {
           82694            return (IQueryable<TSource>)Where((IQueryable)source, lambda);
           82695        }
           2696        #endregion
           2697
           2698        #region Private Helpers
           2699        private static bool SupportsLinqToObjects(ParsingConfig config, IQueryable query)
           3512700        {
           3512701            return config.QueryableAnalyzer.SupportsLinqToObjects(query);
           3512702        }
           2703
           2704        private static void CheckOuterAndInnerTypes(ParsingConfig config, bool createParameterCtor, Type outerType, Type
           102705        {
           102706            Type outerSelectorReturnType = outerSelectorLambda.Body.Type;
           102707            Type innerSelectorReturnType = innerSelectorLambda.Body.Type;
           2708
           2709            // If types are not the same, try to convert to Nullable and generate new LambdaExpression
           102710            if (outerSelectorReturnType != innerSelectorReturnType)
           62711            {
           62712                if (TypeHelper.IsNullableType(outerSelectorReturnType) && !TypeHelper.IsNullableType(innerSelectorReturn
           22713                {
           22714                    innerSelectorReturnType = ExpressionParser.ToNullableType(innerSelectorReturnType);
           22715                    innerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, innerType, in
           22716                }
           42717                else if (!TypeHelper.IsNullableType(outerSelectorReturnType) && TypeHelper.IsNullableType(innerSelectorR
           22718                {
           22719                    outerSelectorReturnType = ExpressionParser.ToNullableType(outerSelectorReturnType);
           22720                    outerSelectorLambda = DynamicExpressionParser.ParseLambda(config, createParameterCtor, outerType, ou
           22721                }
           2722
           2723                // If types are still not the same, throw an Exception
           62724                if (outerSelectorReturnType != innerSelectorReturnType)
           22725                {
           22726                    throw new ParseException(string.Format(CultureInfo.CurrentCulture, Res.IncompatibleTypes, outerSelec
           2727                }
           42728            }
           82729        }
           2730
           2731        // Code below is based on https://github.com/aspnet/EntityFramework/blob/9186d0b78a3176587eeb0f557c331f635760fe9
           2732        private static IQueryable CreateQuery(MethodInfo operatorMethodInfo, IQueryable source)
           62733        {
           62734            if (operatorMethodInfo.IsGenericMethod)
           62735            {
           62736                operatorMethodInfo = operatorMethodInfo.MakeGenericMethod(source.ElementType);
           62737            }
           2738
           62739            var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression));
           62740            return source.Provider.CreateQuery(optimized);
           62741        }
           2742
           2743        private static IQueryable CreateQuery(MethodInfo operatorMethodInfo, IQueryable source, LambdaExpression express
           102744            => CreateQuery(operatorMethodInfo, source, Expression.Quote(expression));
           2745
           2746        private static IQueryable CreateQuery(MethodInfo operatorMethodInfo, IQueryable source, Expression expression)
           372747        {
           372748            operatorMethodInfo = operatorMethodInfo.GetGenericArguments().Length == 2
           372749                    ? operatorMethodInfo.MakeGenericMethod(source.ElementType, typeof(object))
           372750                    : operatorMethodInfo.MakeGenericMethod(source.ElementType);
           2751
           372752            return source.Provider.CreateQuery(Expression.Call(null, operatorMethodInfo, source.Expression, expression))
           372753        }
           2754
           2755        private static object Execute(MethodInfo operatorMethodInfo, IQueryable source)
           502756        {
           502757            if (operatorMethodInfo.IsGenericMethod)
           502758            {
           502759                operatorMethodInfo = operatorMethodInfo.MakeGenericMethod(source.ElementType);
           502760            }
           2761
           502762            var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression));
           502763            return source.Provider.Execute(optimized);
           502764        }
           2765
           2766        private static TResult Execute<TResult>(MethodInfo operatorMethodInfo, IQueryable source)
           672767        {
           672768            if (operatorMethodInfo.IsGenericMethod)
           572769            {
           572770                operatorMethodInfo = operatorMethodInfo.MakeGenericMethod(source.ElementType);
           572771            }
           2772
           672773            var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression));
           672774            var result = source.Provider.Execute(optimized);
           2775
           672776            return (TResult)Convert.ChangeType(result, typeof(TResult));
           672777        }
           2778        private static object Execute(MethodInfo operatorMethodInfo, IQueryable source, LambdaExpression expression) =>
           662779            Execute(operatorMethodInfo, source, Expression.Quote(expression));
           2780
           2781        private static object Execute(MethodInfo operatorMethodInfo, IQueryable source, Expression expression)
           662782        {
           662783            operatorMethodInfo = operatorMethodInfo.GetGenericArguments().Length == 2
           662784                    ? operatorMethodInfo.MakeGenericMethod(source.ElementType, typeof(object))
           662785                    : operatorMethodInfo.MakeGenericMethod(source.ElementType);
           2786
           662787            var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression, expression))
           662788            return source.Provider.Execute(optimized);
           662789        }
           2790
           2791        private static TResult Execute<TResult>(MethodInfo operatorMethodInfo, IQueryable source, LambdaExpression expre
           312792            => Execute<TResult>(operatorMethodInfo, source, Expression.Quote(expression));
           2793
           2794        private static TResult Execute<TResult>(MethodInfo operatorMethodInfo, IQueryable source, Expression expression)
           362795        {
           362796            operatorMethodInfo = operatorMethodInfo.GetGenericArguments().Length == 2
           362797                    ? operatorMethodInfo.MakeGenericMethod(source.ElementType, typeof(TResult))
           362798                    : operatorMethodInfo.MakeGenericMethod(source.ElementType);
           2799
           362800            var optimized = OptimizeExpression(Expression.Call(null, operatorMethodInfo, source.Expression, expression))
           362801            var result = source.Provider.Execute(optimized);
           2802
           362803            return (TResult)Convert.ChangeType(result, typeof(TResult));
           362804        }
           2805
           2806
           2807        #endregion Private Helpers
           2808    }
           2809}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -OptimizeExpression(System.Linq.Expressions.Expression)
          -Aggregate(System.Linq.IQueryable,System.String,System.String)
          -All(System.Linq.IQueryable,System.String,System.Object[])
          -All(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Any(System.Linq.IQueryable)
          -Any(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Any(System.Linq.IQueryable,System.String,System.Object[])
          -Any(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Average(System.Linq.IQueryable)
          -Average(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Average(System.Linq.IQueryable,System.String,System.Object[])
          -Average(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -AsEnumerable()
          -Cast(System.Linq.IQueryable,System.Type)
          -Cast(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String)
          -Cast(System.Linq.IQueryable,System.String)
          -Count(System.Linq.IQueryable)
          -Count(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Count(System.Linq.IQueryable,System.String,System.Object[])
          -Count(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -DefaultIfEmpty(System.Linq.IQueryable)
          -DefaultIfEmpty(System.Linq.IQueryable,System.Object)
          -Distinct(System.Linq.IQueryable)
          -First(System.Linq.IQueryable)
          -First(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -First(System.Linq.IQueryable,System.String,System.Object[])
          -First(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -FirstOrDefault(System.Linq.IQueryable)
          -FirstOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -FirstOrDefault(System.Linq.IQueryable,System.String,System.Object[])
          -FirstOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer,System.Object[])
          -InternalGroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.String,System.String,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.String,System.String,System.Collections.IEqualityComparer,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String)
          -GroupBy(System.Linq.IQueryable,System.String,System.String)
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Collections.IEqualityComparer)
          -GroupBy(System.Linq.IQueryable,System.String,System.String,System.Collections.IEqualityComparer)
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IEqualityComparer,System.Object[])
          -InternalGroupBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IEqualityComparer,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.String,System.Object[])
          -GroupBy(System.Linq.IQueryable,System.String,System.Collections.IEqualityComparer,System.Object[])
          -GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.Linq.Dynamic.Core.ParsingConfig,System.String[])
          -GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.String[])
          -GroupByMany(System.Collections.Generic.IEnumerable`1<TElement>,System.Func`2<TElement,System.Object>[])
          -GroupByManyInternal(System.Collections.Generic.IEnumerable`1<TElement>,System.Func`2<TElement,System.Object>[],System.Int32)
          -GroupJoin(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[])
          -GroupJoin(System.Linq.IQueryable,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[])
          -Join(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[])
          -Join(System.Linq.IQueryable,System.Collections.IEnumerable,System.String,System.String,System.String,System.Object[])
          -Join(System.Linq.IQueryable`1<TElement>,System.Linq.Dynamic.Core.ParsingConfig,System.Collections.Generic.IEnumerable`1<TElement>,System.String,System.String,System.String,System.Object[])
          -Join(System.Linq.IQueryable`1<TElement>,System.Collections.Generic.IEnumerable`1<TElement>,System.String,System.String,System.String,System.Object[])
          -Last(System.Linq.IQueryable)
          -Last(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Last(System.Linq.IQueryable,System.String,System.Object[])
          -Last(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -LastOrDefault(System.Linq.IQueryable)
          -LastOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -LastOrDefault(System.Linq.IQueryable,System.String,System.Object[])
          -LastOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -LongCount(System.Linq.IQueryable)
          -LongCount(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -LongCount(System.Linq.IQueryable,System.String,System.Object[])
          -LongCount(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Max(System.Linq.IQueryable)
          -Max(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Max(System.Linq.IQueryable,System.String,System.Object[])
          -Max(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Min(System.Linq.IQueryable)
          -Min(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Min(System.Linq.IQueryable,System.String,System.Object[])
          -Min(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -OfType(System.Linq.IQueryable,System.Type)
          -OfType(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String)
          -OfType(System.Linq.IQueryable,System.String)
          -OrderBy(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -OrderBy(System.Linq.IQueryable`1<TSource>,System.String,System.Object[])
          -OrderBy(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[])
          -OrderBy(System.Linq.IQueryable`1<TSource>,System.String,System.Collections.IComparer,System.Object[])
          -OrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -OrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[])
          -InternalOrderBy(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object,System.Object[])
          -OrderBy(System.Linq.IQueryable,System.String,System.Object[])
          -OrderBy(System.Linq.IQueryable,System.String,System.Collections.IComparer,System.Object[])
          -Page(System.Linq.IQueryable,System.Int32,System.Int32)
          -Page(System.Linq.IQueryable`1<TSource>,System.Int32,System.Int32)
          -PageResult(System.Linq.IQueryable,System.Int32,System.Int32,System.Nullable`1<System.Int32>)
          -PageResult(System.Linq.IQueryable`1<TSource>,System.Int32,System.Int32,System.Nullable`1<System.Int32>)
          -Reverse(System.Linq.IQueryable)
          -Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Select(System.Linq.IQueryable,System.String,System.Object[])
          -Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Select(System.Linq.IQueryable,System.String,System.Object[])
          -Select(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[])
          -Select(System.Linq.IQueryable,System.Type,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Type,System.String,System.Object[])
          -SelectManyInternal(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.String,System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.Object[],System.Object[])
          -SelectMany(System.Linq.IQueryable,System.String,System.String,System.Object[],System.Object[])
          -SelectMany(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.String,System.String,System.String,System.Object[],System.Object[])
          -SelectMany(System.Linq.IQueryable,System.String,System.String,System.String,System.String,System.Object[],System.Object[])
          -Single(System.Linq.IQueryable)
          -Single(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Single(System.Linq.IQueryable,System.String,System.Object[])
          -Single(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -SingleOrDefault(System.Linq.IQueryable)
          -SingleOrDefault(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -SingleOrDefault(System.Linq.IQueryable,System.String,System.Object[])
          -SingleOrDefault(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Skip(System.Linq.IQueryable,System.Int32)
          -SkipWhile(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -SkipWhile(System.Linq.IQueryable,System.String,System.Object[])
          -Sum(System.Linq.IQueryable)
          -Sum(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Sum(System.Linq.IQueryable,System.String,System.Object[])
          -Sum(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Take(System.Linq.IQueryable,System.Int32)
          -TakeWhile(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -TakeWhile(System.Linq.IQueryable,System.String,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.String,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable`1<TSource>,System.String,System.Collections.IComparer,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[])
          -InternalThenBy(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Collections.IComparer,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable,System.String,System.Object[])
          -ThenBy(System.Linq.IOrderedQueryable,System.String,System.Collections.IComparer,System.Object[])
          -Where(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Where(System.Linq.IQueryable`1<TSource>,System.String,System.Object[])
          -Where(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.String,System.Object[])
          -Where(System.Linq.IQueryable,System.String,System.Object[])
          -Where(System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Where(System.Linq.IQueryable`1<TSource>,System.Linq.Expressions.LambdaExpression)
          -SupportsLinqToObjects(System.Linq.Dynamic.Core.ParsingConfig,System.Linq.IQueryable)
          -CheckOuterAndInnerTypes(System.Linq.Dynamic.Core.ParsingConfig,System.Boolean,System.Type,System.Type,System.String,System.String,System.Linq.Expressions.LambdaExpression&,System.Linq.Expressions.LambdaExpression&,System.Object[])
          -CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable)
          -CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -CreateQuery(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.LambdaExpression)
          -Execute(System.Reflection.MethodInfo,System.Linq.IQueryable,System.Linq.Expressions.Expression)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableWithFormattableStringExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableWithFormattableStringExtensions.html deleted file mode 100644 index a4eadd0a..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_DynamicQueryableWithFormattableStringExtensions.html +++ /dev/null @@ -1,659 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicQueryableWithFormattableStringExtensions.cs
          Covered lines:63
          Uncovered lines:204
          Coverable lines:267
          Total lines:430
          Line coverage:23.5% (63 of 267)
          Covered branches:0
          Total branches:0
          Covered methods:17
          Total methods:67
          Method coverage:25.3% (17 of 67)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          WhereInterpolated(...)100%110%
          WhereInterpolated(...)100%110%
          WhereInterpolated(...)100%110%
          WhereInterpolated(...)100%11100%
          AllInterpolated(...)100%11100%
          AllInterpolated(...)100%110%
          AnyInterpolated(...)100%110%
          AnyInterpolated(...)100%11100%
          AverageInterpolated(...)100%110%
          AverageInterpolated(...)100%110%
          SingleInterpolated(...)100%110%
          SingleInterpolated(...)100%11100%
          SingleOrDefaultInterpolated(...)100%110%
          SingleOrDefaultInterpolated(...)100%11100%
          SkipWhileInterpolated(...)100%110%
          SkipWhileInterpolated(...)100%11100%
          TakeWhileInterpolated(...)100%110%
          TakeWhileInterpolated(...)100%11100%
          SumInterpolated(...)100%110%
          SumInterpolated(...)100%110%
          CountInterpolated(...)100%110%
          CountInterpolated(...)100%11100%
          FirstInterpolated(...)100%110%
          FirstInterpolated(...)100%11100%
          FirstOrDefaultInterpolated(...)100%110%
          FirstOrDefaultInterpolated(...)100%11100%
          LastInterpolated(...)100%110%
          LastInterpolated(...)100%11100%
          LastOrDefaultInterpolated(...)100%110%
          LastOrDefaultInterpolated(...)100%11100%
          LongCountInterpolated(...)100%110%
          LongCountInterpolated(...)100%11100%
          MaxInterpolated(...)100%110%
          MaxInterpolated(...)100%110%
          MinInterpolated(...)100%110%
          MinInterpolated(...)100%110%
          SelectInterpolated(...)100%110%
          SelectInterpolated(...)100%110%
          SelectInterpolated(...)100%110%
          SelectInterpolated(...)100%110%
          SelectInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          SelectManyInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%110%
          OrderByInterpolated(...)100%1175%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%110%
          ThenByInterpolated(...)100%1175%
          ParseFormattableString(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\DynamicQueryableWithFormattableStringExtensions.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections;
           2using System.Text.RegularExpressions;
           3using JetBrains.Annotations;
           4
           5namespace System.Linq.Dynamic.Core
           6{
           7#if NET46_OR_GREATER || NET5_0_OR_GREATER || NETCOREAPP2_1_OR_GREATER  || NETSTANDARD1_3_OR_GREATER || UAP10_0
           8    /// <summary>
           9    /// Provides a set of static extension methods for querying data structures that implement <see cref="IQueryable"/>.
           10    /// It supports a FormattableString string as predicate.
           11    /// <seealso cref="DynamicQueryableExtensions"/>
           12    /// </summary>
           13    public static class DynamicQueryableWithFormattableStringExtensions
           14    {
           115        private static Regex ReplaceArgumentsRegex = new Regex(@"{(\d+)}", RegexOptions.Compiled);
           16
           17        public static IQueryable WhereInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [No
           018        {
           019            var predicateStr = ParseFormattableString(predicate, out var args);
           020            return DynamicQueryableExtensions.Where(source, config, predicateStr, args);
           021        }
           22
           23        public static IQueryable WhereInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predica
           024        {
           025            var predicateStr = ParseFormattableString(predicate, out var args);
           026            return DynamicQueryableExtensions.Where(source, predicateStr, args);
           027        }
           28
           29        public static IQueryable<TSource> WhereInterpolated<TSource>([NotNull] this IQueryable<TSource> source, [NotNull
           030        {
           031            var predicateStr = ParseFormattableString(predicate, out var args);
           032            return DynamicQueryableExtensions.Where(source, config, predicateStr, args);
           033        }
           34
           35        public static IQueryable<TSource> WhereInterpolated<TSource>([NotNull] this IQueryable<TSource> source, [NotNull
           2036        {
           2037            var predicateStr = ParseFormattableString(predicate, out var args);
           2038            return DynamicQueryableExtensions.Where(source, predicateStr, args);
           1339        }
           40
           41        [PublicAPI]
           42        public static bool AllInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           243        {
           244            var predicateStr = ParseFormattableString(predicate, out var args);
           245            return DynamicQueryableExtensions.All(source, predicateStr, args);
           246        }
           47
           48        [PublicAPI]
           49        public static bool AllInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] F
           050        {
           051            var predicateStr = ParseFormattableString(predicate, out var args);
           052            return DynamicQueryableExtensions.All(source, config, predicateStr, args);
           053        }
           54
           55        [PublicAPI]
           56        public static bool AnyInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] F
           057        {
           058            var predicateStr = ParseFormattableString(predicate, out var args);
           059            return DynamicQueryableExtensions.Any(source, config, predicateStr, args);
           060        }
           61
           62        public static bool AnyInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           263        {
           264            var predicateStr = ParseFormattableString(predicate, out var args);
           265            return DynamicQueryableExtensions.Any(source, predicateStr, args);
           266        }
           67
           68        [PublicAPI]
           69        public static double AverageInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotN
           070        {
           071            var predicateStr = ParseFormattableString(predicate, out var args);
           072            return DynamicQueryableExtensions.Average(source, config, predicateStr, args);
           073        }
           74
           75        [PublicAPI]
           76        public static double AverageInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate
           077        {
           078            var predicateStr = ParseFormattableString(predicate, out var args);
           079            return DynamicQueryableExtensions.Average(source, predicateStr, args);
           080        }
           81
           82        public static dynamic SingleInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotN
           083        {
           084            var predicateStr = ParseFormattableString(predicate, out var args);
           085            return DynamicQueryableExtensions.Single(source, config, predicateStr, args);
           086        }
           87
           88        public static dynamic SingleInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate
           189        {
           190            var predicateStr = ParseFormattableString(predicate, out var args);
           191            return DynamicQueryableExtensions.Single(source, predicateStr, args);
           192        }
           93
           94        public static dynamic SingleOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig conf
           095        {
           096            var predicateStr = ParseFormattableString(predicate, out var args);
           097            return DynamicQueryableExtensions.SingleOrDefault(source, config, predicateStr, args);
           098        }
           99
           100        public static dynamic SingleOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString 
           1101        {
           1102            var predicateStr = ParseFormattableString(predicate, out var args);
           1103            return DynamicQueryableExtensions.SingleOrDefault(source, predicateStr, args);
           1104        }
           105
           106        public static IQueryable SkipWhileInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config,
           0107        {
           0108            var predicateStr = ParseFormattableString(predicate, out var args);
           0109            return DynamicQueryableExtensions.SkipWhile(source, config, predicateStr, args);
           0110        }
           111
           112        public static IQueryable SkipWhileInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString pre
           2113        {
           2114            var predicateStr = ParseFormattableString(predicate, out var args);
           2115            return DynamicQueryableExtensions.SkipWhile(source, predicateStr, args);
           2116        }
           117
           118        public static IQueryable TakeWhileInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config,
           0119        {
           0120            var predicateStr = ParseFormattableString(predicate, out var args);
           0121            return DynamicQueryableExtensions.TakeWhile(source, config, predicateStr, args);
           0122        }
           123
           124        public static IQueryable TakeWhileInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString pre
           2125        {
           2126            var predicateStr = ParseFormattableString(predicate, out var args);
           2127            return DynamicQueryableExtensions.TakeWhile(source, predicateStr, args);
           2128        }
           129
           130        [PublicAPI]
           131        public static object SumInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull]
           0132        {
           0133            var predicateStr = ParseFormattableString(predicate, out var args);
           0134            return DynamicQueryableExtensions.Sum(source, config, predicateStr, args);
           0135        }
           136
           137        [PublicAPI]
           138        public static object SumInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           0139        {
           0140            var predicateStr = ParseFormattableString(predicate, out var args);
           0141            return DynamicQueryableExtensions.Sum(source, predicateStr, args);
           0142        }
           143
           144        [PublicAPI]
           145        public static int CountInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull] 
           0146        {
           0147            var predicateStr = ParseFormattableString(predicate, out var args);
           0148            return DynamicQueryableExtensions.Count(source, config, predicateStr, args);
           0149        }
           150
           151        public static int CountInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           1152        {
           1153            var predicateStr = ParseFormattableString(predicate, out var args);
           1154            return DynamicQueryableExtensions.Count(source, predicateStr, args);
           1155        }
           156
           157        public static dynamic FirstInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNu
           0158        {
           0159            var predicateStr = ParseFormattableString(predicate, out var args);
           0160            return DynamicQueryableExtensions.First(source, config, predicateStr, args);
           0161        }
           162
           163        public static dynamic FirstInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           2164        {
           2165            var predicateStr = ParseFormattableString(predicate, out var args);
           2166            return DynamicQueryableExtensions.First(source, predicateStr, args);
           2167        }
           168
           169        public static dynamic FirstOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig confi
           0170        {
           0171            var predicateStr = ParseFormattableString(predicate, out var args);
           0172            return DynamicQueryableExtensions.FirstOrDefault(source, config, predicateStr, args);
           0173        }
           174
           175        public static dynamic FirstOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString p
           2176        {
           2177            var predicateStr = ParseFormattableString(predicate, out var args);
           2178            return DynamicQueryableExtensions.FirstOrDefault(source, predicateStr, args);
           2179        }
           180
           181        public static dynamic LastInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNul
           0182        {
           0183            var predicateStr = ParseFormattableString(predicate, out var args);
           0184            return DynamicQueryableExtensions.Last(source, config, predicateStr, args);
           0185        }
           186
           187        public static dynamic LastInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           1188        {
           1189            var predicateStr = ParseFormattableString(predicate, out var args);
           1190            return DynamicQueryableExtensions.Last(source, predicateStr, args);
           1191        }
           192
           193        public static dynamic LastOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config
           0194        {
           0195            var predicateStr = ParseFormattableString(predicate, out var args);
           0196            return DynamicQueryableExtensions.LastOrDefault(source, config, predicateStr, args);
           0197        }
           198
           199        public static dynamic LastOrDefaultInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString pr
           1200        {
           1201            var predicateStr = ParseFormattableString(predicate, out var args);
           1202            return DynamicQueryableExtensions.LastOrDefault(source, predicateStr, args);
           1203        }
           204
           205        [PublicAPI]
           206        public static long LongCountInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotN
           0207        {
           0208            var predicateStr = ParseFormattableString(predicate, out var args);
           0209            return DynamicQueryableExtensions.LongCount(source, config, predicateStr, args);
           0210        }
           211
           212        public static long LongCountInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate
           3213        {
           3214            var predicateStr = ParseFormattableString(predicate, out var args);
           3215            return DynamicQueryableExtensions.LongCount(source, predicateStr, args);
           3216        }
           217
           218        [PublicAPI]
           219        public static object MaxInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull]
           0220        {
           0221            var predicateStr = ParseFormattableString(predicate, out var args);
           0222            return DynamicQueryableExtensions.Max(source, config, predicateStr, args);
           0223        }
           224
           225        [PublicAPI]
           226        public static object MaxInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           0227        {
           0228            var predicateStr = ParseFormattableString(predicate, out var args);
           0229            return DynamicQueryableExtensions.Max(source, predicateStr, args);
           0230        }
           231
           232        [PublicAPI]
           233        public static object MinInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [NotNull]
           0234        {
           0235            var predicateStr = ParseFormattableString(predicate, out var args);
           0236            return DynamicQueryableExtensions.Min(source, config, predicateStr, args);
           0237        }
           238
           239        [PublicAPI]
           240        public static object MinInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString predicate)
           0241        {
           0242            var predicateStr = ParseFormattableString(predicate, out var args);
           0243            return DynamicQueryableExtensions.Min(source, predicateStr, args);
           0244        }
           245
           246        public static IQueryable SelectInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [N
           0247        {
           0248            var selectorStr = ParseFormattableString(selector, out var args);
           0249            return DynamicQueryableExtensions.Select(source, config, selectorStr, args);
           0250        }
           251
           252        public static IQueryable SelectInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config, [N
           0253        {
           0254            var selectorStr = ParseFormattableString(selector, out var args);
           0255            return DynamicQueryableExtensions.Select(source, config, resultType, selectorStr, args);
           0256        }
           257
           258        public static IQueryable SelectInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString select
           0259        {
           0260            var selectorStr = ParseFormattableString(selector, out var args);
           0261            return DynamicQueryableExtensions.Select(source, selectorStr, args);
           0262        }
           263
           264        public static IQueryable<TResult> SelectInterpolated<TResult>([NotNull] this IQueryable source, [NotNull] Parsin
           0265        {
           0266            var selectorStr = ParseFormattableString(selector, out var args);
           0267            return DynamicQueryableExtensions.Select<TResult>(source, config, selectorStr, args);
           0268        }
           269
           270        public static IQueryable<TResult> SelectInterpolated<TResult>([NotNull] this IQueryable source, [NotNull] Format
           0271        {
           0272            var selectorStr = ParseFormattableString(selector, out var args);
           0273            return DynamicQueryableExtensions.Select<TResult>(source, selectorStr, args);
           0274        }
           275
           276        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config
           0277        {
           0278            var collectionSelectorStr = ParseFormattableString(collectionSelector, out var collectionSelectorArgs);
           0279            var resultSelectorStr = ParseFormattableString(resultSelector, out var resultSelectorArgs);
           0280            return DynamicQueryableExtensions.SelectMany(source, config, collectionSelectorStr, resultSelectorStr, colle
           0281        }
           282
           283        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config
           0284        {
           0285            var selectorStr = ParseFormattableString(selector, out var args);
           0286            return DynamicQueryableExtensions.SelectMany(source, config, selectorStr, args);
           0287        }
           288
           289        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig config
           0290        {
           0291            var selectorStr = ParseFormattableString(selector, out var args);
           0292            return DynamicQueryableExtensions.SelectMany(source, config, resultType, selectorStr, args);
           0293        }
           294
           295        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString co
           0296        {
           0297            var collectionSelectorStr = ParseFormattableString(collectionSelector, out var collectionSelectorArgs);
           0298            var resultSelectorStr = ParseFormattableString(resultSelector, out var resultSelectorArgs);
           0299            return DynamicQueryableExtensions.SelectMany(source, collectionSelectorStr, collectionSelectorArgs, resultSe
           0300        }
           301
           302        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] FormattableString se
           0303        {
           0304            var selectorStr = ParseFormattableString(selector, out var args);
           0305            return DynamicQueryableExtensions.SelectMany(source, selectorStr, args);
           0306        }
           307
           308        public static IQueryable SelectManyInterpolated([NotNull] this IQueryable source, [NotNull] Type resultType, [No
           0309        {
           0310            var selectorStr = ParseFormattableString(selector, out var args);
           0311            return DynamicQueryableExtensions.SelectMany(source, resultType, selectorStr, args);
           0312        }
           313
           314        public static IQueryable<TResult> SelectManyInterpolated<TResult>([NotNull] this IQueryable source, [NotNull] Pa
           0315        {
           0316            var selectorStr = ParseFormattableString(selector, out var args);
           0317            return DynamicQueryableExtensions.SelectMany<TResult>(source, config, selectorStr, args);
           0318        }
           319
           320        public static IQueryable<TResult> SelectManyInterpolated<TResult>([NotNull] this IQueryable source, [NotNull] Fo
           0321        {
           0322            var selectorStr = ParseFormattableString(selector, out var args);
           0323            return DynamicQueryableExtensions.SelectMany<TResult>(source, selectorStr, args);
           0324        }
           325
           326        public static IOrderedQueryable OrderByInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig co
           0327        {
           0328            var orderingStr = ParseFormattableString(ordering, out var args);
           0329            return DynamicQueryableExtensions.OrderBy(source, config, orderingStr, comparer, args);
           0330        }
           331
           332        public static IOrderedQueryable OrderByInterpolated([NotNull] this IQueryable source, [NotNull] ParsingConfig co
           0333        {
           0334            var orderingStr = ParseFormattableString(ordering, out var args);
           0335            return DynamicQueryableExtensions.OrderBy(source, config, orderingStr, args);
           0336        }
           337
           338        public static IOrderedQueryable OrderByInterpolated([NotNull] this IQueryable source, [NotNull] FormattableStrin
           0339        {
           0340            var orderingStr = ParseFormattableString(ordering, out var args);
           0341            return DynamicQueryableExtensions.OrderBy(source, orderingStr, comparer, args);
           0342        }
           343
           344        public static IOrderedQueryable OrderByInterpolated([NotNull] this IQueryable source, [NotNull] FormattableStrin
           0345        {
           0346            var orderingStr = ParseFormattableString(ordering, out var args);
           0347            return DynamicQueryableExtensions.OrderBy(source, orderingStr, args);
           0348        }
           349
           350        public static IOrderedQueryable<TSource> OrderByInterpolated<TSource>([NotNull] this IQueryable<TSource> source,
           0351        {
           0352            var orderingStr = ParseFormattableString(ordering, out var args);
           0353            return DynamicQueryableExtensions.OrderBy(source, config, orderingStr, comparer, args);
           0354        }
           355
           356        public static IOrderedQueryable<TSource> OrderByInterpolated<TSource>([NotNull] this IQueryable<TSource> source,
           0357        {
           0358            var orderingStr = ParseFormattableString(ordering, out var args);
           0359            return DynamicQueryableExtensions.OrderBy(source, config, orderingStr, args);
           0360        }
           361
           362        public static IOrderedQueryable<TSource> OrderByInterpolated<TSource>([NotNull] this IQueryable<TSource> source,
           0363        {
           0364            var orderingStr = ParseFormattableString(ordering, out var args);
           0365            return DynamicQueryableExtensions.OrderBy(source, orderingStr, comparer, args);
           0366        }
           367
           368        public static IOrderedQueryable<TSource> OrderByInterpolated<TSource>([NotNull] this IQueryable<TSource> source,
           3369        {
           3370            var orderingStr = ParseFormattableString(ordering, out var args);
           3371            return DynamicQueryableExtensions.OrderBy(source, orderingStr, args);
           0372        }
           373
           374        public static IOrderedQueryable ThenByInterpolated([NotNull] this IOrderedQueryable source, [NotNull] ParsingCon
           0375        {
           0376            var orderingStr = ParseFormattableString(ordering, out var args);
           0377            return DynamicQueryableExtensions.ThenBy(source, config, orderingStr, comparer, args);
           0378        }
           379
           380        public static IOrderedQueryable ThenByInterpolated([NotNull] this IOrderedQueryable source, [NotNull] ParsingCon
           0381        {
           0382            var orderingStr = ParseFormattableString(ordering, out var args);
           0383            return DynamicQueryableExtensions.ThenBy(source, config, orderingStr, args);
           0384        }
           385
           386        public static IOrderedQueryable ThenByInterpolated([NotNull] this IOrderedQueryable source, [NotNull] Formattabl
           0387        {
           0388            var orderingStr = ParseFormattableString(ordering, out var args);
           0389            return DynamicQueryableExtensions.ThenBy(source, orderingStr, comparer, args);
           0390        }
           391
           392        public static IOrderedQueryable ThenByInterpolated([NotNull] this IOrderedQueryable source, [NotNull] Formattabl
           0393        {
           0394            var orderingStr = ParseFormattableString(ordering, out var args);
           0395            return DynamicQueryableExtensions.ThenBy(source, orderingStr, args);
           0396        }
           397
           398        public static IOrderedQueryable<TSource> ThenByInterpolated<TSource>([NotNull] this IOrderedQueryable<TSource> s
           0399        {
           0400            var orderingStr = ParseFormattableString(ordering, out var args);
           0401            return DynamicQueryableExtensions.ThenBy(source, config, orderingStr, comparer, args);
           0402        }
           403
           404        public static IOrderedQueryable<TSource> ThenByInterpolated<TSource>([NotNull] this IOrderedQueryable<TSource> s
           0405        {
           0406            var orderingStr = ParseFormattableString(ordering, out var args);
           0407            return DynamicQueryableExtensions.ThenBy(source, config, orderingStr, args);
           0408        }
           409
           410        public static IOrderedQueryable<TSource> ThenByInterpolated<TSource>([NotNull] this IOrderedQueryable<TSource> s
           0411        {
           0412            var orderingStr = ParseFormattableString(ordering, out var args);
           0413            return DynamicQueryableExtensions.ThenBy(source, orderingStr, comparer, args);
           0414        }
           415
           416        public static IOrderedQueryable<TSource> ThenByInterpolated<TSource>([NotNull] this IOrderedQueryable<TSource> s
           3417        {
           3418            var orderingStr = ParseFormattableString(ordering, out var args);
           3419            return DynamicQueryableExtensions.ThenBy(source, orderingStr, args);
           0420        }
           421
           422        private static string ParseFormattableString(FormattableString predicate, out object[] args)
           46423        {
           46424            args = predicate.GetArguments();
           46425            return ReplaceArgumentsRegex.Replace(predicate.Format, "@$1"); // replace {0} with @0
           46426        }
           427    }
           428#endif
           429
           430}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -WhereInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -WhereInterpolated(System.Linq.IQueryable,System.FormattableString)
          -WhereInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -WhereInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString)
          -AllInterpolated(System.Linq.IQueryable,System.FormattableString)
          -AllInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -AnyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -AnyInterpolated(System.Linq.IQueryable,System.FormattableString)
          -AverageInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -AverageInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SingleInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SingleInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SingleOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SingleOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SkipWhileInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SkipWhileInterpolated(System.Linq.IQueryable,System.FormattableString)
          -TakeWhileInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -TakeWhileInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SumInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SumInterpolated(System.Linq.IQueryable,System.FormattableString)
          -CountInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -CountInterpolated(System.Linq.IQueryable,System.FormattableString)
          -FirstInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -FirstInterpolated(System.Linq.IQueryable,System.FormattableString)
          -FirstOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -FirstOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString)
          -LastInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -LastInterpolated(System.Linq.IQueryable,System.FormattableString)
          -LastOrDefaultInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -LastOrDefaultInterpolated(System.Linq.IQueryable,System.FormattableString)
          -LongCountInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -LongCountInterpolated(System.Linq.IQueryable,System.FormattableString)
          -MaxInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -MaxInterpolated(System.Linq.IQueryable,System.FormattableString)
          -MinInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -MinInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.FormattableString)
          -SelectInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SelectInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SelectInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.Type,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.Type,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -SelectManyInterpolated(System.Linq.IQueryable,System.FormattableString)
          -OrderByInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer)
          -OrderByInterpolated(System.Linq.IQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -OrderByInterpolated(System.Linq.IQueryable,System.FormattableString,System.Collections.IComparer)
          -OrderByInterpolated(System.Linq.IQueryable,System.FormattableString)
          -OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer)
          -OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString,System.Collections.IComparer)
          -OrderByInterpolated(System.Linq.IQueryable`1<TSource>,System.FormattableString)
          -ThenByInterpolated(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer)
          -ThenByInterpolated(System.Linq.IOrderedQueryable,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -ThenByInterpolated(System.Linq.IOrderedQueryable,System.FormattableString,System.Collections.IComparer)
          -ThenByInterpolated(System.Linq.IOrderedQueryable,System.FormattableString)
          -ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString,System.Collections.IComparer)
          -ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.Linq.Dynamic.Core.ParsingConfig,System.FormattableString)
          -ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.FormattableString,System.Collections.IComparer)
          -ThenByInterpolated(System.Linq.IOrderedQueryable`1<TSource>,System.FormattableString)
          -ParseFormattableString(System.FormattableString,System.Object[]&)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_EnumerationsFromMscorlib.html b/report/coverlet/System.Linq.Dynamic.Core_EnumerationsFromMscorlib.html deleted file mode 100644 index 13814ce8..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_EnumerationsFromMscorlib.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\EnumerationsFromMscorlib.cs
          Covered lines:22
          Uncovered lines:9
          Coverable lines:31
          Total lines:59
          Line coverage:70.9% (22 of 31)
          Covered branches:5
          Total branches:8
          Branch coverage:62.5% (5 of 8)
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          Metrics

          - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%22100%
          AddEnumsFromAssembly(...)100%2257.14%
          Add(...)25%4457.14%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\EnumerationsFromMscorlib.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Concurrent;
           2using System.Collections.Generic;
           3using System.Reflection;
           4
           5namespace System.Linq.Dynamic.Core.Parser
           6{
           7    internal static class EnumerationsFromMscorlib
           8    {
           9        /// <summary>
           10        /// All Enum types from mscorlib/netstandard.
           11        /// </summary>
           112        public static readonly IDictionary<string, Type> PredefinedEnumerationTypes = new ConcurrentDictionary<string, T
           13
           14        static EnumerationsFromMscorlib()
           115        {
           116            var list = new List<Type>(AddEnumsFromAssembly(typeof(UriFormat).GetTypeInfo().Assembly.FullName));
           17
           18#if !(UAP10_0 || NETSTANDARD || NET35 || NETCOREAPP)
           19            list.AddRange(AddEnumsFromAssembly("mscorlib"));
           20#else
           121            list.AddRange(AddEnumsFromAssembly("System.Runtime"));
           122            list.AddRange(AddEnumsFromAssembly("System.Private.Corelib"));
           23#endif
           44724            foreach (var group in list.GroupBy(t => t.Name))
           14825            {
           14826                Add(group);
           14827            }
           128        }
           29
           30        private static IEnumerable<Type> AddEnumsFromAssembly(string assemblyName)
           331        {
           32            try
           333            {
           239534                return Assembly.Load(new AssemblyName(assemblyName)).GetTypes().Where(t => t.GetTypeInfo().IsEnum && t.G
           35            }
           036            catch
           037            {
           038                return Enumerable.Empty<Type>();
           39            }
           340        }
           41
           42        private static void Add(IGrouping<string, Type> group)
           14843        {
           14844            if (group.Count() == 1)
           14845            {
           14846                var singleType = group.Single();
           14847                PredefinedEnumerationTypes.Add(group.Key, singleType);
           14848                PredefinedEnumerationTypes.Add(singleType.FullName, singleType);
           14849            }
           50            else
           051            {
           052                foreach (var fullType in group)
           053                {
           054                    PredefinedEnumerationTypes.Add(fullType.FullName, fullType);
           055                }
           056            }
           14857        }
           58    }
           59}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ExpressionHelper.html b/report/coverlet/System.Linq.Dynamic.Core_ExpressionHelper.html deleted file mode 100644 index 3088c491..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ExpressionHelper.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.ExpressionHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.ExpressionHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionHelper.cs
          Covered lines:233
          Uncovered lines:10
          Coverable lines:243
          Total lines:406
          Line coverage:95.8% (233 of 243)
          Covered branches:130
          Total branches:164
          Branch coverage:79.2% (130 of 164)
          Covered methods:25
          Total methods:26
          Method coverage:96.1% (25 of 26)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          WrapConstantExpression(...)100%22100%
          ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(...)68.96%5858100%
          GenerateAdd(...)100%11100%
          GenerateStringConcat(...)100%11100%
          GenerateSubtract(...)100%11100%
          GenerateEqual(...)100%11100%
          GenerateNotEqual(...)100%11100%
          GenerateGreaterThan(...)80%1010100%
          GenerateGreaterThanEqual(...)80%1010100%
          GenerateLessThan(...)80%1010100%
          GenerateLessThanEqual(...)80%1010100%
          OptimizeForEqualityIfPossible(...)100%1212100%
          OptimizeStringForEqualityIfPossible(...)75%8877.77%
          MemberExpressionIsDynamic(...)0%220%
          ConvertToExpandoObjectAndCreateDynamicExpression(...)100%11100%
          GetStaticMethod(...)100%22100%
          GenerateStaticMethodCall(...)100%11100%
          WrapConstantExpressions(...)100%22100%
          TryGenerateAndAlsoNotNullExpression(...)66.66%6683.33%
          ExpressionQualifiesForNullPropagation(...)100%66100%
          GenerateDefaultExpression(...)100%11100%
          GetMemberExpression(...)75%8886.66%
          CollectExpressions(...)100%1616100%
          GetMethodCallExpression(...)100%22100%
          GetUnaryExpression(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Globalization;
           3using System.Linq.Dynamic.Core.Validation;
           4using System.Linq.Expressions;
           5using System.Reflection;
           6using System.Runtime.CompilerServices;
           7using JetBrains.Annotations;
           8
           9namespace System.Linq.Dynamic.Core.Parser
           10{
           11    internal class ExpressionHelper : IExpressionHelper
           12    {
           98913        private readonly IConstantExpressionWrapper _constantExpressionWrapper = new ConstantExpressionWrapper();
           14        private readonly ParsingConfig _parsingConfig;
           15
           98916        internal ExpressionHelper([NotNull] ParsingConfig parsingConfig)
           98917        {
           98918            Check.NotNull(parsingConfig, nameof(parsingConfig));
           19
           98920            _parsingConfig = parsingConfig;
           98921        }
           22
           23        public void WrapConstantExpression(ref Expression argument)
           255324        {
           255325            if (_parsingConfig.UseParameterizedNamesInDynamicQuery)
           1026            {
           1027                _constantExpressionWrapper.Wrap(ref argument);
           1028            }
           255329        }
           30
           31        public void ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(ref Expression left, ref Expression right)
           3732        {
           3733            if (left.Type == right.Type)
           934            {
           935                return;
           36            }
           37
           2838            if (left.Type == typeof(ulong) || right.Type == typeof(ulong))
           439            {
           440                right = right.Type != typeof(ulong) ? Expression.Convert(right, typeof(ulong)) : right;
           441                left = left.Type != typeof(ulong) ? Expression.Convert(left, typeof(ulong)) : left;
           442            }
           2443            else if (left.Type == typeof(long) || right.Type == typeof(long))
           444            {
           445                right = right.Type != typeof(long) ? Expression.Convert(right, typeof(long)) : right;
           446                left = left.Type != typeof(long) ? Expression.Convert(left, typeof(long)) : left;
           447            }
           2048            else if (left.Type == typeof(uint) || right.Type == typeof(uint))
           449            {
           450                right = right.Type != typeof(uint) ? Expression.Convert(right, typeof(uint)) : right;
           451                left = left.Type != typeof(uint) ? Expression.Convert(left, typeof(uint)) : left;
           452            }
           1653            else if (left.Type == typeof(int) || right.Type == typeof(int))
           1054            {
           1055                right = right.Type != typeof(int) ? Expression.Convert(right, typeof(int)) : right;
           1056                left = left.Type != typeof(int) ? Expression.Convert(left, typeof(int)) : left;
           1057            }
           658            else if (left.Type == typeof(ushort) || right.Type == typeof(ushort))
           259            {
           260                right = right.Type != typeof(ushort) ? Expression.Convert(right, typeof(ushort)) : right;
           261                left = left.Type != typeof(ushort) ? Expression.Convert(left, typeof(ushort)) : left;
           262            }
           463            else if (left.Type == typeof(short) || right.Type == typeof(short))
           264            {
           265                right = right.Type != typeof(short) ? Expression.Convert(right, typeof(short)) : right;
           266                left = left.Type != typeof(short) ? Expression.Convert(left, typeof(short)) : left;
           267            }
           268            else if (left.Type == typeof(byte) || right.Type == typeof(byte))
           269            {
           270                right = right.Type != typeof(byte) ? Expression.Convert(right, typeof(byte)) : right;
           271                left = left.Type != typeof(byte) ? Expression.Convert(left, typeof(byte)) : left;
           272            }
           3773        }
           74
           75        public Expression GenerateAdd(Expression left, Expression right)
           1676        {
           1677            return Expression.Add(left, right);
           1678        }
           79
           80        public Expression GenerateStringConcat(Expression left, Expression right)
           2281        {
           2282            return GenerateStaticMethodCall("Concat", left, right);
           2283        }
           84
           85        public Expression GenerateSubtract(Expression left, Expression right)
           186        {
           187            return Expression.Subtract(left, right);
           188        }
           89
           90        public Expression GenerateEqual(Expression left, Expression right)
           31991        {
           31992            OptimizeForEqualityIfPossible(ref left, ref right);
           93
           31994            WrapConstantExpressions(ref left, ref right);
           95
           31996            return Expression.Equal(left, right);
           31997        }
           98
           99        public Expression GenerateNotEqual(Expression left, Expression right)
           40100        {
           40101            OptimizeForEqualityIfPossible(ref left, ref right);
           102
           40103            WrapConstantExpressions(ref left, ref right);
           104
           40105            return Expression.NotEqual(left, right);
           40106        }
           107
           108        public Expression GenerateGreaterThan(Expression left, Expression right)
           83109        {
           83110            if (left.Type == typeof(string))
           1111            {
           1112                return Expression.GreaterThan(GenerateStaticMethodCall("Compare", left, right), Expression.Constant(0));
           113            }
           114
           82115            if (left.Type.GetTypeInfo().IsEnum || right.Type.GetTypeInfo().IsEnum)
           2116            {
           2117                var leftPart = left.Type.GetTypeInfo().IsEnum ? Expression.Convert(left, Enum.GetUnderlyingType(left.Typ
           2118                var rightPart = right.Type.GetTypeInfo().IsEnum ? Expression.Convert(right, Enum.GetUnderlyingType(right
           2119                return Expression.GreaterThan(leftPart, rightPart);
           120            }
           121
           80122            WrapConstantExpressions(ref left, ref right);
           123
           80124            return Expression.GreaterThan(left, right);
           83125        }
           126
           127        public Expression GenerateGreaterThanEqual(Expression left, Expression right)
           17128        {
           17129            if (left.Type == typeof(string))
           1130            {
           1131                return Expression.GreaterThanOrEqual(GenerateStaticMethodCall("Compare", left, right), Expression.Consta
           132            }
           133
           16134            if (left.Type.GetTypeInfo().IsEnum || right.Type.GetTypeInfo().IsEnum)
           1135            {
           1136                return Expression.GreaterThanOrEqual(left.Type.GetTypeInfo().IsEnum ? Expression.Convert(left, Enum.GetU
           1137                    right.Type.GetTypeInfo().IsEnum ? Expression.Convert(right, Enum.GetUnderlyingType(right.Type)) : ri
           138            }
           139
           15140            WrapConstantExpressions(ref left, ref right);
           141
           15142            return Expression.GreaterThanOrEqual(left, right);
           17143        }
           144
           145        public Expression GenerateLessThan(Expression left, Expression right)
           17146        {
           17147            if (left.Type == typeof(string))
           1148            {
           1149                return Expression.LessThan(GenerateStaticMethodCall("Compare", left, right), Expression.Constant(0));
           150            }
           151
           16152            if (left.Type.GetTypeInfo().IsEnum || right.Type.GetTypeInfo().IsEnum)
           4153            {
           4154                return Expression.LessThan(left.Type.GetTypeInfo().IsEnum ? Expression.Convert(left, Enum.GetUnderlyingT
           4155                    right.Type.GetTypeInfo().IsEnum ? Expression.Convert(right, Enum.GetUnderlyingType(right.Type)) : ri
           156            }
           157
           12158            WrapConstantExpressions(ref left, ref right);
           159
           12160            return Expression.LessThan(left, right);
           17161        }
           162
           163        public Expression GenerateLessThanEqual(Expression left, Expression right)
           14164        {
           14165            if (left.Type == typeof(string))
           1166            {
           1167                return Expression.LessThanOrEqual(GenerateStaticMethodCall("Compare", left, right), Expression.Constant(
           168            }
           169
           13170            if (left.Type.GetTypeInfo().IsEnum || right.Type.GetTypeInfo().IsEnum)
           1171            {
           1172                return Expression.LessThanOrEqual(left.Type.GetTypeInfo().IsEnum ? Expression.Convert(left, Enum.GetUnde
           1173                    right.Type.GetTypeInfo().IsEnum ? Expression.Convert(right, Enum.GetUnderlyingType(right.Type)) : ri
           174            }
           175
           12176            WrapConstantExpressions(ref left, ref right);
           177
           12178            return Expression.LessThanOrEqual(left, right);
           14179        }
           180
           181        public void OptimizeForEqualityIfPossible(ref Expression left, ref Expression right)
           359182        {
           183            // The goal here is to provide the way to convert some types from the string form in a way that is compatibl
           184            // The Expression.Call(typeof(Guid).GetMethod("Parse"), right); does the job only for Linq to Object but Lin
           359185            Type leftType = left.Type;
           359186            Type rightType = right.Type;
           187
           359188            if (rightType == typeof(string) && right.NodeType == ExpressionType.Constant)
           51189            {
           51190                right = OptimizeStringForEqualityIfPossible((string)((ConstantExpression)right).Value, leftType) ?? righ
           51191            }
           192
           359193            if (leftType == typeof(string) && left.NodeType == ExpressionType.Constant)
           1194            {
           1195                left = OptimizeStringForEqualityIfPossible((string)((ConstantExpression)left).Value, rightType) ?? left;
           1196            }
           359197        }
           198
           199        public Expression OptimizeStringForEqualityIfPossible(string text, Type type)
           54200        {
           54201            if (type == typeof(DateTime) && DateTime.TryParse(text, CultureInfo.InvariantCulture, DateTimeStyles.None, o
           0202            {
           0203                return Expression.Constant(dateTime, typeof(DateTime));
           204            }
           205#if !NET35
           54206            if (type == typeof(Guid) && Guid.TryParse(text, out Guid guid))
           1207            {
           1208                return Expression.Constant(guid, typeof(Guid));
           209            }
           210#else
           211            try
           212            {
           213                return Expression.Constant(new Guid(text));
           214            }
           215            catch
           216            {
           217                // Doing it in old fashion way when no TryParse interface was provided by .NET
           218            }
           219#endif
           53220            return null;
           54221        }
           222
           223        public bool MemberExpressionIsDynamic(Expression expression)
           0224        {
           225#if NET35
           226            return false;
           227#else
           0228            return expression is MemberExpression memberExpression && memberExpression.Member.GetCustomAttribute<Dynamic
           229#endif
           0230        }
           231
           232        public Expression ConvertToExpandoObjectAndCreateDynamicExpression(Expression expression, Type type, string prop
           11233        {
           234#if !NET35 && !UAP10_0 && !NETSTANDARD1_3
           11235            return Expression.Dynamic(new DynamicGetMemberBinder(propertyName, _parsingConfig), type, expression);
           236#else
           237            throw new NotSupportedException(Res.DynamicExpandoObjectIsNotSupported);
           238#endif
           11239        }
           240
           241        private MethodInfo GetStaticMethod(string methodName, Expression left, Expression right)
           26242        {
           26243            var methodInfo = left.Type.GetMethod(methodName, new[] { left.Type, right.Type });
           26244            if (methodInfo == null)
           1245            {
           1246                methodInfo = right.Type.GetMethod(methodName, new[] { left.Type, right.Type });
           1247            }
           248
           26249            return methodInfo;
           26250        }
           251
           252        private Expression GenerateStaticMethodCall(string methodName, Expression left, Expression right)
           26253        {
           26254            return Expression.Call(null, GetStaticMethod(methodName, left, right), new[] { left, right });
           26255        }
           256
           257        private void WrapConstantExpressions(ref Expression left, ref Expression right)
           478258        {
           478259            if (_parsingConfig.UseParameterizedNamesInDynamicQuery)
           3260            {
           3261                _constantExpressionWrapper.Wrap(ref left);
           3262                _constantExpressionWrapper.Wrap(ref right);
           3263            }
           478264        }
           265
           266        public bool TryGenerateAndAlsoNotNullExpression(Expression sourceExpression, bool addSelf, out Expression genera
           66267        {
           66268            var expressions = CollectExpressions(addSelf, sourceExpression);
           269
           66270            if (expressions.Count == 1 && !(expressions[0] is MethodCallExpression))
           0271            {
           0272                generatedExpression = sourceExpression;
           0273                return false;
           274            }
           275
           276            // Reverse the list
           66277            expressions.Reverse();
           278
           279            // Convert all expressions into '!= null' expressions (only if the type can be null)
           66280            var binaryExpressions = expressions
           198281                .Where(expression => TypeHelper.TypeCanBeNull(expression.Type))
           162282                .Select(expression => Expression.NotEqual(expression, Expression.Constant(null)))
           66283                .ToArray();
           284
           285            // Convert all binary expressions into `AndAlso(...)`
           66286            generatedExpression = binaryExpressions[0];
           324287            for (int i = 1; i < binaryExpressions.Length; i++)
           96288            {
           96289                generatedExpression = Expression.AndAlso(generatedExpression, binaryExpressions[i]);
           96290            }
           291
           66292            return true;
           66293        }
           294
           295        public bool ExpressionQualifiesForNullPropagation(Expression expression)
           384296        {
           384297            return
           384298                expression is MemberExpression ||
           384299                expression is ParameterExpression ||
           384300                expression is MethodCallExpression ||
           384301                expression is UnaryExpression;
           384302        }
           303
           304        public Expression GenerateDefaultExpression(Type type)
           4305        {
           306#if NET35
           307            return Expression.Constant(Activator.CreateInstance(type));
           308#else
           4309            return Expression.Default(type);
           310#endif
           4311        }
           312
           313        private Expression GetMemberExpression(Expression expression)
           188314        {
           188315            if (ExpressionQualifiesForNullPropagation(expression))
           181316            {
           181317                return expression;
           318            }
           319
           7320            if (expression is LambdaExpression lambdaExpression)
           7321            {
           7322                if (lambdaExpression.Body is MemberExpression bodyAsMemberExpression)
           6323                {
           6324                    return bodyAsMemberExpression;
           325                }
           326
           1327                if (lambdaExpression.Body is UnaryExpression bodyAsUnaryExpression)
           1328                {
           1329                    return bodyAsUnaryExpression.Operand;
           330                }
           0331            }
           332
           0333            return null;
           188334        }
           335
           336        private List<Expression> CollectExpressions(bool addSelf, Expression sourceExpression)
           66337        {
           66338            Expression expression = GetMemberExpression(sourceExpression);
           339
           66340            var list = new List<Expression>();
           341
           66342            if (addSelf)
           65343            {
           65344                switch (expression)
           345                {
           346                    case MemberExpression _:
           62347                        list.Add(sourceExpression);
           62348                        break;
           349
           350                    default:
           3351                        break;
           352                }
           65353            }
           354
           355            bool expressionRecognized;
           356            do
           202357            {
           202358                switch (expression)
           359                {
           360                    case MemberExpression memberExpression:
           122361                        expression = GetMemberExpression(memberExpression.Expression);
           122362                        expressionRecognized = expression != null;
           122363                        break;
           364
           365                    case MethodCallExpression methodCallExpression:
           13366                        expression = GetMethodCallExpression(methodCallExpression);
           13367                        expressionRecognized = expression != null;
           13368                        break;
           369
           370                    case UnaryExpression unaryExpression:
           1371                        expression = GetUnaryExpression(unaryExpression);
           1372                        expressionRecognized = expression != null;
           1373                        break;
           374
           375                    default:
           66376                        expressionRecognized = false;
           66377                        break;
           378                }
           379
           202380                if (expressionRecognized && ExpressionQualifiesForNullPropagation(expression))
           136381                {
           136382                    list.Add(expression);
           136383                }
           404384            } while (expressionRecognized);
           385
           66386            return list;
           66387        }
           388
           389        private static Expression GetMethodCallExpression(MethodCallExpression methodCallExpression)
           13390        {
           13391            if (methodCallExpression.Object != null)
           6392            {
           393                // Something like: "np(FooValue.Zero().Length)"
           6394                return methodCallExpression.Object;
           395            }
           396
           397            // Something like: "np(MyClasses.FirstOrDefault())"
           7398            return methodCallExpression.Arguments.FirstOrDefault();
           13399        }
           400
           401        private static Expression GetUnaryExpression(UnaryExpression unaryExpression)
           1402        {
           1403            return unaryExpression.Operand;
           1404        }
           405    }
           406}
          -
          -
          -
          -

          Methods/Properties

          -.ctor(System.Linq.Dynamic.Core.ParsingConfig)
          -WrapConstantExpression(System.Linq.Expressions.Expression&)
          -ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&)
          -GenerateAdd(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateStringConcat(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateSubtract(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateNotEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateGreaterThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateGreaterThanEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateLessThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateLessThanEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -OptimizeForEqualityIfPossible(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&)
          -OptimizeStringForEqualityIfPossible(System.String,System.Type)
          -MemberExpressionIsDynamic(System.Linq.Expressions.Expression)
          -ConvertToExpandoObjectAndCreateDynamicExpression(System.Linq.Expressions.Expression,System.Type,System.String)
          -GetStaticMethod(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -GenerateStaticMethodCall(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression)
          -WrapConstantExpressions(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&)
          -TryGenerateAndAlsoNotNullExpression(System.Linq.Expressions.Expression,System.Boolean,System.Linq.Expressions.Expression&)
          -ExpressionQualifiesForNullPropagation(System.Linq.Expressions.Expression)
          -GenerateDefaultExpression(System.Type)
          -GetMemberExpression(System.Linq.Expressions.Expression)
          -CollectExpressions(System.Boolean,System.Linq.Expressions.Expression)
          -GetMethodCallExpression(System.Linq.Expressions.MethodCallExpression)
          -GetUnaryExpression(System.Linq.Expressions.UnaryExpression)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ExpressionParser.html b/report/coverlet/System.Linq.Dynamic.Core_ExpressionParser.html deleted file mode 100644 index d94e7752..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ExpressionParser.html +++ /dev/null @@ -1,2397 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.ExpressionParser - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.ExpressionParser
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionParser.cs
          Covered lines:1214
          Uncovered lines:162
          Coverable lines:1376
          Total lines:2167
          Line coverage:88.2% (1214 of 1376)
          Covered branches:722
          Total branches:825
          Branch coverage:87.5% (722 of 825)
          Covered methods:65
          Total methods:68
          Method coverage:95.5% (65 of 68)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          .ctor(...)100%1010100%
          ProcessParameters(...)100%66100%
          ProcessValues(...)100%66100%
          AddSymbol(...)100%22100%
          Parse(...)75%4485.71%
          ParseOrdering(...)100%1818100%
          ParseConditionalOperator()100%22100%
          ParseNullCoalescingOperator()100%22100%
          ParseLambdaOperator()25%8838.46%
          ParseOrOperator()100%22100%
          ParseAndOperator()100%22100%
          ParseIn()81.81%222285.18%
          ParseLogicalAndOrOperator()96.87%323292.3%
          ParseComparisonOperator()96.61%11811896.58%
          HasImplicitConversion(...)80%1010100%
          ParseEnumToConstantExpression(...)100%11100%
          ParseConstantExpressionToEnum(...)100%2260%
          ParseShiftOperator()100%88100%
          ParseAdditive()100%1212100%
          ParseMultiplicative()100%1818100%
          ParseUnary()71.42%141452.17%
          ParsePrimary()100%66100%
          ParsePrimaryStart()100%99100%
          ParseStringLiteral()75%4484.61%
          ParseIntegerLiteral()100%11100%
          ParseRealLiteral()100%11100%
          ParseParenExpression()100%11100%
          ParseIdentifier()96.51%868693.18%
          ParseIt()50%2271.42%
          ParseParent()50%2271.42%
          ParseRoot()50%2271.42%
          ParseFunctionIsNull()100%22100%
          ParseFunctionIif()50%2277.77%
          ParseFunctionNullPropagation()90%101094.11%
          ParseFunctionIs()83.33%6689.47%
          ParseFunctionAs()50%6668.42%
          ParseFunctionCast()83.33%6689.47%
          GenerateConditional(...)69.56%464669.11%
          ParseNew()75.92%545482.02%
          CreateArrayInitializerExpression(...)87.5%88100%
          CreateNewExpression(...)93.33%303095.52%
          ParseLambdaInvocation(...)0%220%
          ParseTypeAccess(...)88.23%343492.5%
          TryGenerateConversion(...)86.84%383889.74%
          ParseMemberAccess(...)95.45%444498.41%
          ParseAsLambda(...)100%22100%
          ParseAsEnum(...)93.75%161693.33%
          ParseEnumerable(...)97.05%343497.46%
          ResolveTypeFromArgumentExpression(...)80%101077.77%
          ResolveTypeStringFromArgument(...)100%22100%
          ParseArgumentList()100%22100%
          ParseArguments()100%22100%
          ParseElementAccess(...)28.57%141450%
          ToNullableType(...)50%4471.42%
          TryGetMemberName(...)37.5%8861.53%
          CheckAndPromoteOperand(...)0%220%
          GetOverloadedOperationName(...)100%66100%
          CheckAndPromoteOperands(...)100%88100%
          IncompatibleOperandError(...)100%110%
          IncompatibleOperandsError(...)100%11100%
          FindPropertyOrField(...)90%1010100%
          TokenIdentifierIs(...)100%22100%
          GetIdentifier()100%44100%
          ParseError(...)100%22100%
          ParseError(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionParser.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections;
           2using System.Collections.Generic;
           3using System.ComponentModel;
           4using System.Globalization;
           5using System.Linq.Dynamic.Core.Exceptions;
           6using System.Linq.Dynamic.Core.Parser.SupportedMethods;
           7using System.Linq.Dynamic.Core.Parser.SupportedOperands;
           8using System.Linq.Dynamic.Core.Tokenizer;
           9using System.Linq.Dynamic.Core.TypeConverters;
           10using System.Linq.Dynamic.Core.Validation;
           11using System.Linq.Expressions;
           12using System.Reflection;
           13using JetBrains.Annotations;
           14
           15namespace System.Linq.Dynamic.Core.Parser
           16{
           17    /// <summary>
           18    /// ExpressionParser
           19    /// </summary>
           20    public class ExpressionParser
           21    {
           122        static readonly string methodOrderBy = nameof(Queryable.OrderBy);
           123        static readonly string methodOrderByDescending = nameof(Queryable.OrderByDescending);
           124        static readonly string methodThenBy = nameof(Queryable.ThenBy);
           125        static readonly string methodThenByDescending = nameof(Queryable.ThenByDescending);
           26
           27        private readonly ParsingConfig _parsingConfig;
           28        private readonly MethodFinder _methodFinder;
           29        private readonly IKeywordsHelper _keywordsHelper;
           30        private readonly TextParser _textParser;
           31        private readonly NumberParser _numberParser;
           32        private readonly IExpressionHelper _expressionHelper;
           33        private readonly ITypeFinder _typeFinder;
           34        private readonly ITypeConverterFactory _typeConverterFactory;
           35        private readonly Dictionary<string, object> _internals;
           36        private readonly Dictionary<string, object> _symbols;
           37
           38        private IDictionary<string, object> _externals;
           39        private ParameterExpression _it;
           40        private ParameterExpression _parent;
           41        private ParameterExpression _root;
           42        private Type _resultType;
           43        private bool _createParameterCtor;
           44
           45        /// <summary>
           46        /// Gets name for the `it` field. By default this is set to the KeyWord value "it".
           47        /// </summary>
           111948        public string ItName { get; private set; } = KeywordsHelper.KEYWORD_IT;
           49
           50        /// <summary>
           51        /// There was a problem when an expression contained multiple lambdas where
           52        /// the ItName was not cleared and freed for the next lambda. This variable
           53        /// stores the ItName of the last parsed lambda.
           54        /// Not used internally by ExpressionParser, but used to preserve compatiblity of parsingConfig.RenameParameterE
           55        /// which was designed to only work with mono-lambda expressions.
           56        /// </summary>
           100557        public string LastLambdaItName { get; private set; } = KeywordsHelper.KEYWORD_IT;
           58
           59        /// <summary>
           60        /// Initializes a new instance of the <see cref="ExpressionParser"/> class.
           61        /// </summary>
           62        /// <param name="parameters">The parameters.</param>
           63        /// <param name="expression">The expression.</param>
           64        /// <param name="values">The values.</param>
           65        /// <param name="parsingConfig">The parsing configuration.</param>
           97266        public ExpressionParser([CanBeNull] ParameterExpression[] parameters, [NotNull] string expression, [CanBeNull] o
           97267        {
           97268            Check.NotEmpty(expression, nameof(expression));
           69
           97270            _symbols = new Dictionary<string, object>(parsingConfig != null && parsingConfig.IsCaseSensitive ? StringCom
           97271            _internals = new Dictionary<string, object>();
           72
           97273            if (parameters != null)
           97274            {
           97275                ProcessParameters(parameters);
           97176            }
           77
           97178            if (values != null)
           82979            {
           82980                ProcessValues(values);
           82981            }
           82
           97183            _parsingConfig = parsingConfig ?? ParsingConfig.Default;
           84
           97185            _keywordsHelper = new KeywordsHelper(_parsingConfig);
           97186            _textParser = new TextParser(_parsingConfig, expression);
           97187            _numberParser = new NumberParser(parsingConfig);
           97188            _methodFinder = new MethodFinder(_parsingConfig);
           97189            _expressionHelper = new ExpressionHelper(_parsingConfig);
           97190            _typeFinder = new TypeFinder(_parsingConfig, _keywordsHelper);
           97191            _typeConverterFactory = new TypeConverterFactory(_parsingConfig);
           97192        }
           93
           94        void ProcessParameters(ParameterExpression[] parameters)
           97295        {
           416396            foreach (ParameterExpression pe in parameters.Where(p => !string.IsNullOrEmpty(p.Name)))
           15097            {
           15098                AddSymbol(pe.Name, pe);
           14999            }
           100
           101            // If there is only 1 ParameterExpression, do also allow access using 'it'
           971102            if (parameters.Length == 1)
           918103            {
           918104                _parent = _it;
           918105                _it = parameters[0];
           106
           918107                if (_root == null)
           918108                {
           918109                    _root = _it;
           918110                }
           918111            }
           971112        }
           113
           114        void ProcessValues(object[] values)
           829115        {
           2136116            for (int i = 0; i < values.Length; i++)
           239117            {
           239118                object value = values[i];
           119                IDictionary<string, object> externals;
           120
           239121                if (i == values.Length - 1 && (externals = value as IDictionary<string, object>) != null)
           4122                {
           4123                    _externals = externals;
           4124                }
           125                else
           235126                {
           235127                    AddSymbol("@" + i.ToString(CultureInfo.InvariantCulture), value);
           235128                }
           239129            }
           829130        }
           131
           132        private void AddSymbol(string name, object value)
           385133        {
           385134            if (_symbols.ContainsKey(name))
           1135            {
           1136                throw ParseError(Res.DuplicateIdentifier, name);
           137            }
           138
           384139            _symbols.Add(name, value);
           384140        }
           141
           142        /// <summary>
           143        /// Uses the TextParser to parse the string into the specified result type.
           144        /// </summary>
           145        /// <param name="resultType">Type of the result.</param>
           146        /// <param name="createParameterCtor">if set to <c>true</c> [create parameter ctor].</param>
           147        /// <returns>Expression</returns>
           148        public Expression Parse([CanBeNull] Type resultType, bool createParameterCtor = true)
           930149        {
           930150            _resultType = resultType;
           930151            _createParameterCtor = createParameterCtor;
           152
           930153            int exprPos = _textParser.CurrentToken.Pos;
           930154            Expression expr = ParseConditionalOperator();
           155
           875156            if (resultType != null)
           132157            {
           132158                if ((expr = _parsingConfig.ExpressionPromoter.Promote(expr, resultType, true, false)) == null)
           0159                {
           0160                    throw ParseError(exprPos, Res.ExpressionTypeMismatch, TypeHelper.GetTypeName(resultType));
           161                }
           132162            }
           163
           875164            _textParser.ValidateToken(TokenId.End, Res.SyntaxError);
           165
           872166            return expr;
           872167        }
           168
           169#pragma warning disable 0219
           170        internal IList<DynamicOrdering> ParseOrdering(bool forceThenBy = false)
           41171        {
           41172            var orderings = new List<DynamicOrdering>();
           45173            while (true)
           45174            {
           45175                Expression expr = ParseConditionalOperator();
           41176                bool ascending = true;
           41177                if (TokenIdentifierIs("asc") || TokenIdentifierIs("ascending"))
           2178                {
           2179                    _textParser.NextToken();
           2180                }
           39181                else if (TokenIdentifierIs("desc") || TokenIdentifierIs("descending"))
           5182                {
           5183                    _textParser.NextToken();
           5184                    ascending = false;
           5185                }
           186
           187                string methodName;
           41188                if (forceThenBy || orderings.Count > 0)
           7189                {
           7190                    methodName = ascending ? methodThenBy : methodThenByDescending;
           7191                }
           192                else
           34193                {
           34194                    methodName = ascending ? methodOrderBy : methodOrderByDescending;
           34195                }
           196
           41197                orderings.Add(new DynamicOrdering { Selector = expr, Ascending = ascending, MethodName = methodName });
           198
           41199                if (_textParser.CurrentToken.Id != TokenId.Comma)
           37200                {
           37201                    break;
           202                }
           203
           4204                _textParser.NextToken();
           4205            }
           206
           37207            _textParser.ValidateToken(TokenId.End, Res.SyntaxError);
           37208            return orderings;
           37209        }
           210#pragma warning restore 0219
           211
           212        // ?: operator
           213        Expression ParseConditionalOperator()
           1556214        {
           1556215            int errorPos = _textParser.CurrentToken.Pos;
           1556216            Expression expr = ParseNullCoalescingOperator();
           1493217            if (_textParser.CurrentToken.Id == TokenId.Question)
           7218            {
           7219                _textParser.NextToken();
           7220                Expression expr1 = ParseConditionalOperator();
           7221                _textParser.ValidateToken(TokenId.Colon, Res.ColonExpected);
           7222                _textParser.NextToken();
           7223                Expression expr2 = ParseConditionalOperator();
           7224                expr = GenerateConditional(expr, expr1, expr2, false, errorPos);
           7225            }
           1493226            return expr;
           1493227        }
           228
           229        // ?? (null-coalescing) operator
           230        Expression ParseNullCoalescingOperator()
           1556231        {
           1556232            Expression expr = ParseLambdaOperator();
           1493233            if (_textParser.CurrentToken.Id == TokenId.NullCoalescing)
           6234            {
           6235                _textParser.NextToken();
           6236                Expression right = ParseConditionalOperator();
           6237                expr = Expression.Coalesce(expr, right);
           6238            }
           1493239            return expr;
           1493240        }
           241
           242        // => operator - Added Support for projection operator
           243        Expression ParseLambdaOperator()
           1556244        {
           1556245            Expression expr = ParseOrOperator();
           1493246            if (_textParser.CurrentToken.Id == TokenId.Lambda && _it.Type == expr.Type)
           0247            {
           0248                _textParser.NextToken();
           0249                if (_textParser.CurrentToken.Id == TokenId.Identifier || _textParser.CurrentToken.Id == TokenId.OpenPare
           0250                {
           0251                    var right = ParseConditionalOperator();
           0252                    return Expression.Lambda(right, new[] { (ParameterExpression)expr });
           253                }
           0254                _textParser.ValidateToken(TokenId.OpenParen, Res.OpenParenExpected);
           0255            }
           1493256            return expr;
           1493257        }
           258
           259        // Or operator
           260        // - ||
           261        // - Or
           262        // - OrElse
           263        Expression ParseOrOperator()
           1556264        {
           1556265            Expression left = ParseAndOperator();
           1529266            while (_textParser.CurrentToken.Id == TokenId.DoubleBar)
           36267            {
           36268                Token op = _textParser.CurrentToken;
           36269                _textParser.NextToken();
           36270                Expression right = ParseAndOperator();
           36271                CheckAndPromoteOperands(typeof(ILogicalSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
           36272                left = Expression.OrElse(left, right);
           36273            }
           1493274            return left;
           1493275        }
           276
           277        // And operator
           278        // - &&
           279        // - And
           280        // - AndAlso
           281        Expression ParseAndOperator()
           1592282        {
           1592283            Expression left = ParseIn();
           1557284            while (_textParser.CurrentToken.Id == TokenId.DoubleAmpersand)
           28285            {
           28286                Token op = _textParser.CurrentToken;
           28287                _textParser.NextToken();
           28288                Expression right = ParseIn();
           28289                CheckAndPromoteOperands(typeof(ILogicalSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
           28290                left = Expression.AndAlso(left, right);
           28291            }
           1529292            return left;
           1529293        }
           294
           295        // in operator for literals - example: "x in (1,2,3,4)"
           296        // in operator to mimic contains - example: "x in @0", compare to @0.Contains(x)
           297        // Adapted from ticket submitted by github user mlewis9548
           298        Expression ParseIn()
           1620299        {
           1620300            Expression left = ParseLogicalAndOrOperator();
           1561301            Expression accumulate = left;
           302
           1579303            while (TokenIdentifierIs("in"))
           22304            {
           22305                var op = _textParser.CurrentToken;
           306
           22307                _textParser.NextToken();
           22308                if (_textParser.CurrentToken.Id == TokenId.OpenParen) // literals (or other inline list)
           18309                {
           51310                    while (_textParser.CurrentToken.Id != TokenId.CloseParen)
           37311                    {
           37312                        _textParser.NextToken();
           313
           314                        // we need to parse unary expressions because otherwise 'in' clause will fail in use cases like 
           33315                        Expression right = ParseUnary();
           316
           317                        // if the identifier is an Enum, try to convert the right-side also to an Enum.
           33318                        if (left.Type.GetTypeInfo().IsEnum && right is ConstantExpression)
           4319                        {
           4320                            right = ParseEnumToConstantExpression(op.Pos, left.Type, right as ConstantExpression);
           4321                        }
           322
           323                        // else, check for direct type match
           29324                        else if (left.Type != right.Type)
           4325                        {
           4326                            CheckAndPromoteOperands(typeof(IEqualitySignatures), TokenId.DoubleEqual, "==", ref left, re
           4327                        }
           328
           33329                        if (accumulate.Type != typeof(bool))
           14330                        {
           14331                            accumulate = _expressionHelper.GenerateEqual(left, right);
           14332                        }
           333                        else
           19334                        {
           19335                            accumulate = Expression.OrElse(accumulate, _expressionHelper.GenerateEqual(left, right));
           19336                        }
           337
           33338                        if (_textParser.CurrentToken.Id == TokenId.End)
           0339                        {
           0340                            throw ParseError(op.Pos, Res.CloseParenOrCommaExpected);
           341                        }
           33342                    }
           343
           344                    // Since this started with an open paren, make sure to move off the close
           14345                    _textParser.NextToken();
           14346                }
           4347                else if (_textParser.CurrentToken.Id == TokenId.Identifier) // a single argument
           4348                {
           4349                    Expression right = ParsePrimary();
           350
           4351                    if (!typeof(IEnumerable).IsAssignableFrom(right.Type))
           0352                    {
           0353                        throw ParseError(_textParser.CurrentToken.Pos, Res.IdentifierImplementingInterfaceExpected, type
           354                    }
           355
           4356                    var args = new[] { left };
           357
           4358                    Expression nullExpressionReference = null;
           4359                    if (_methodFinder.FindMethod(typeof(IEnumerableSignatures), nameof(IEnumerableSignatures.Contains), 
           0360                    {
           0361                        throw ParseError(op.Pos, Res.NoApplicableAggregate, nameof(IEnumerableSignatures.Contains), stri
           362                    }
           363
           4364                    var typeArgs = new[] { left.Type };
           365
           4366                    args = new[] { right, left };
           367
           4368                    accumulate = Expression.Call(typeof(Enumerable), containsSignature.Name, typeArgs, args);
           4369                }
           370                else
           0371                {
           0372                    throw ParseError(op.Pos, Res.OpenParenOrIdentifierExpected);
           373                }
           18374            }
           375
           1557376            return accumulate;
           1557377        }
           378
           379        // &, | bitwise operators
           380        Expression ParseLogicalAndOrOperator()
           1620381        {
           1620382            Expression left = ParseComparisonOperator();
           1603383            while (_textParser.CurrentToken.Id == TokenId.Ampersand || _textParser.CurrentToken.Id == TokenId.Bar)
           42384            {
           42385                Token op = _textParser.CurrentToken;
           42386                _textParser.NextToken();
           42387                Expression right = ParseComparisonOperator();
           388
           42389                if (left.Type.GetTypeInfo().IsEnum)
           32390                {
           32391                    left = Expression.Convert(left, Enum.GetUnderlyingType(left.Type));
           32392                }
           393
           42394                if (right.Type.GetTypeInfo().IsEnum)
           0395                {
           0396                    right = Expression.Convert(right, Enum.GetUnderlyingType(right.Type));
           0397                }
           398
           42399                switch (op.Id)
           400                {
           401                    case TokenId.Ampersand:
           402                        int parseValue;
           26403                        if (left.Type == typeof(string) && left.NodeType == ExpressionType.Constant && int.TryParse((str
           1404                        {
           1405                            left = Expression.Constant(parseValue);
           1406                        }
           25407                        else if (right.Type == typeof(string) && right.NodeType == ExpressionType.Constant && int.TryPar
           2408                        {
           2409                            right = Expression.Constant(parseValue);
           2410                        }
           411
           412                        // When at least one side of the operator is a string, consider it's a VB-style concatenation op
           413                        // Doesn't break any other function since logical AND with a string is invalid anyway.
           26414                        if (left.Type == typeof(string) || right.Type == typeof(string))
           5415                        {
           5416                            left = _expressionHelper.GenerateStringConcat(left, right);
           5417                        }
           418                        else
           21419                        {
           21420                            _expressionHelper.ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(ref left, ref right
           21421                            left = Expression.And(left, right);
           21422                        }
           26423                        break;
           424
           425                    case TokenId.Bar:
           16426                        _expressionHelper.ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(ref left, ref right);
           16427                        left = Expression.Or(left, right);
           16428                        break;
           429                }
           42430            }
           1561431            return left;
           1561432        }
           433
           434        // =, ==, !=, <>, >, >=, <, <= operators
           435        Expression ParseComparisonOperator()
           1662436        {
           1662437            Expression left = ParseShiftOperator();
           2073438            while (_textParser.CurrentToken.Id == TokenId.Equal || _textParser.CurrentToken.Id == TokenId.DoubleEqual ||
           2073439                   _textParser.CurrentToken.Id == TokenId.ExclamationEqual || _textParser.CurrentToken.Id == TokenId.Les
           2073440                   _textParser.CurrentToken.Id == TokenId.GreaterThan || _textParser.CurrentToken.Id == TokenId.GreaterT
           2073441                   _textParser.CurrentToken.Id == TokenId.LessThan || _textParser.CurrentToken.Id == TokenId.LessThanEqu
           470442            {
           443                ConstantExpression constantExpr;
           444                TypeConverter typeConverter;
           470445                Token op = _textParser.CurrentToken;
           470446                _textParser.NextToken();
           468447                Expression right = ParseShiftOperator();
           463448                bool isEquality = op.Id == TokenId.Equal || op.Id == TokenId.DoubleEqual || op.Id == TokenId.Exclamation
           449
           463450                if (isEquality && (!left.Type.GetTypeInfo().IsValueType && !right.Type.GetTypeInfo().IsValueType || left
           81451                {
           452                    // If left or right is NullLiteral, just continue. Else check if the types differ.
           81453                    if (!(Constants.IsNull(left) || Constants.IsNull(right)) && left.Type != right.Type)
           13454                    {
           13455                        if (left.Type.IsAssignableFrom(right.Type) || HasImplicitConversion(right.Type, left.Type))
           11456                        {
           11457                            right = Expression.Convert(right, left.Type);
           11458                        }
           2459                        else if (right.Type.IsAssignableFrom(left.Type) || HasImplicitConversion(left.Type, right.Type))
           2460                        {
           2461                            left = Expression.Convert(left, right.Type);
           2462                        }
           463                        else
           0464                        {
           0465                            throw IncompatibleOperandsError(op.Text, left, right, op.Pos);
           466                        }
           13467                    }
           81468                }
           382469                else if (TypeHelper.IsEnumType(left.Type) || TypeHelper.IsEnumType(right.Type))
           53470                {
           53471                    if (left.Type != right.Type)
           29472                    {
           473                        Expression e;
           29474                        if ((e = _parsingConfig.ExpressionPromoter.Promote(right, left.Type, true, false)) != null)
           9475                        {
           9476                            right = e;
           9477                        }
           20478                        else if ((e = _parsingConfig.ExpressionPromoter.Promote(left, right.Type, true, false)) != null)
           10479                        {
           10480                            left = e;
           10481                        }
           10482                        else if (TypeHelper.IsEnumType(left.Type) && (constantExpr = right as ConstantExpression) != nul
           5483                        {
           5484                            right = ParseEnumToConstantExpression(op.Pos, left.Type, constantExpr);
           5485                        }
           5486                        else if (TypeHelper.IsEnumType(right.Type) && (constantExpr = left as ConstantExpression) != nul
           5487                        {
           5488                            left = ParseEnumToConstantExpression(op.Pos, right.Type, constantExpr);
           5489                        }
           490                        else
           0491                        {
           0492                            throw IncompatibleOperandsError(op.Text, left, right, op.Pos);
           493                        }
           29494                    }
           53495                }
           329496                else if ((constantExpr = right as ConstantExpression) != null && constantExpr.Value is string stringValu
           14497                {
           14498                    right = Expression.Constant(typeConverter.ConvertFromInvariantString(stringValueR), left.Type);
           14499                }
           315500                else if ((constantExpr = left as ConstantExpression) != null && constantExpr.Value is string stringValue
           3501                {
           3502                    left = Expression.Constant(typeConverter.ConvertFromInvariantString(stringValueL), right.Type);
           3503                }
           504                else
           312505                {
           312506                    bool typesAreSameAndImplementCorrectInterface = false;
           312507                    if (left.Type == right.Type)
           234508                    {
           1516509                        var interfaces = left.Type.GetInterfaces().Where(x => x.GetTypeInfo().IsGenericType);
           234510                        if (isEquality)
           120511                        {
           360512                            typesAreSameAndImplementCorrectInterface = interfaces.Any(x => x.GetGenericTypeDefinition() 
           120513                        }
           514                        else
           114515                        {
           228516                            typesAreSameAndImplementCorrectInterface = interfaces.Any(x => x.GetGenericTypeDefinition() 
           114517                        }
           234518                    }
           519
           520
           312521                    if (!typesAreSameAndImplementCorrectInterface)
           78522                    {
           78523                        if ((TypeHelper.IsClass(left.Type) || TypeHelper.IsStruct(left.Type)) && right is ConstantExpres
           13524                        {
           13525                            if (HasImplicitConversion(left.Type, right.Type))
           2526                            {
           2527                                left = Expression.Convert(left, right.Type);
           2528                            }
           11529                            else if (HasImplicitConversion(right.Type, left.Type))
           1530                            {
           1531                                right = Expression.Convert(right, left.Type);
           1532                            }
           13533                        }
           65534                        else if ((TypeHelper.IsClass(right.Type) || TypeHelper.IsStruct(right.Type)) && left is Constant
           3535                        {
           3536                            if (HasImplicitConversion(right.Type, left.Type))
           2537                            {
           2538                                right = Expression.Convert(right, left.Type);
           2539                            }
           1540                            else if (HasImplicitConversion(left.Type, right.Type))
           1541                            {
           1542                                left = Expression.Convert(left, right.Type);
           1543                            }
           3544                        }
           545                        else
           62546                        {
           62547                            CheckAndPromoteOperands(isEquality ? typeof(IEqualitySignatures) : typeof(IRelationalSignatu
           56548                        }
           72549                    }
           306550                }
           551
           457552                switch (op.Id)
           553                {
           554                    case TokenId.Equal:
           555                    case TokenId.DoubleEqual:
           286556                        left = _expressionHelper.GenerateEqual(left, right);
           286557                        break;
           558                    case TokenId.ExclamationEqual:
           559                    case TokenId.LessGreater:
           40560                        left = _expressionHelper.GenerateNotEqual(left, right);
           40561                        break;
           562                    case TokenId.GreaterThan:
           83563                        left = _expressionHelper.GenerateGreaterThan(left, right);
           83564                        break;
           565                    case TokenId.GreaterThanEqual:
           17566                        left = _expressionHelper.GenerateGreaterThanEqual(left, right);
           17567                        break;
           568                    case TokenId.LessThan:
           17569                        left = _expressionHelper.GenerateLessThan(left, right);
           17570                        break;
           571                    case TokenId.LessThanEqual:
           14572                        left = _expressionHelper.GenerateLessThanEqual(left, right);
           14573                        break;
           574                }
           457575            }
           576
           1603577            return left;
           1603578        }
           579
           580        private bool HasImplicitConversion(Type baseType, Type targetType)
           34581        {
           34582            var baseTypeHasConversion = baseType.GetMethods(BindingFlags.Public | BindingFlags.Static)
           326583                .Where(mi => mi.Name == "op_Implicit" && mi.ReturnType == targetType)
           40584                .Any(mi => mi.GetParameters().FirstOrDefault()?.ParameterType == baseType);
           585
           34586            if (baseTypeHasConversion)
           6587            {
           6588                return true;
           589            }
           590
           28591            return targetType.GetMethods(BindingFlags.Public | BindingFlags.Static)
           208592                .Where(mi => mi.Name == "op_Implicit" && mi.ReturnType == targetType)
           34593                .Any(mi => mi.GetParameters().FirstOrDefault()?.ParameterType == baseType);
           34594        }
           595
           596        private ConstantExpression ParseEnumToConstantExpression(int pos, Type leftType, ConstantExpression constantExpr
           14597        {
           14598            return Expression.Constant(ParseConstantExpressionToEnum(pos, leftType, constantExpr), leftType);
           14599        }
           600
           601        private object ParseConstantExpressionToEnum(int pos, Type leftType, ConstantExpression constantExpr)
           14602        {
           603            try
           14604            {
           14605                if (constantExpr.Value is string stringValue)
           12606                {
           12607                    return Enum.Parse(TypeHelper.GetNonNullableType(leftType), stringValue, true);
           608                }
           2609            }
           0610            catch
           0611            {
           0612                throw ParseError(pos, Res.ExpressionTypeMismatch, leftType);
           613            }
           614
           615            try
           2616            {
           2617                return Enum.ToObject(TypeHelper.GetNonNullableType(leftType), constantExpr.Value);
           618            }
           0619            catch
           0620            {
           0621                throw ParseError(pos, Res.ExpressionTypeMismatch, leftType);
           622            }
           14623        }
           624
           625        // <<, >> operators
           626        Expression ParseShiftOperator()
           2130627        {
           2130628            Expression left = ParseAdditive();
           2112629            while (_textParser.CurrentToken.Id == TokenId.DoubleLessThan || _textParser.CurrentToken.Id == TokenId.Doubl
           33630            {
           33631                Token op = _textParser.CurrentToken;
           33632                _textParser.NextToken();
           33633                Expression right = ParseAdditive();
           32634                switch (op.Id)
           635                {
           636                    case TokenId.DoubleLessThan:
           24637                        CheckAndPromoteOperands(typeof(IShiftSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
           24638                        left = Expression.LeftShift(left, right);
           24639                        break;
           640                    case TokenId.DoubleGreaterThan:
           8641                        CheckAndPromoteOperands(typeof(IShiftSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
           8642                        left = Expression.RightShift(left, right);
           8643                        break;
           644                }
           32645            }
           2079646            return left;
           2079647        }
           648
           649        // +, - operators
           650        Expression ParseAdditive()
           2163651        {
           2163652            Expression left = ParseMultiplicative();
           2146653            while (_textParser.CurrentToken.Id == TokenId.Plus || _textParser.CurrentToken.Id == TokenId.Minus)
           34654            {
           34655                Token op = _textParser.CurrentToken;
           34656                _textParser.NextToken();
           34657                Expression right = ParseMultiplicative();
           34658                switch (op.Id)
           659                {
           660                    case TokenId.Plus:
           33661                        if (left.Type == typeof(string) || right.Type == typeof(string))
           17662                        {
           17663                            left = _expressionHelper.GenerateStringConcat(left, right);
           17664                        }
           665                        else
           16666                        {
           16667                            CheckAndPromoteOperands(typeof(IAddSignatures), op.Id, op.Text, ref left, ref right, op.Pos)
           16668                            left = _expressionHelper.GenerateAdd(left, right);
           16669                        }
           33670                        break;
           671                    case TokenId.Minus:
           1672                        CheckAndPromoteOperands(typeof(ISubtractSignatures), op.Id, op.Text, ref left, ref right, op.Pos
           1673                        left = _expressionHelper.GenerateSubtract(left, right);
           1674                        break;
           675                }
           34676            }
           2112677            return left;
           2112678        }
           679
           680        // *, /, %, mod operators
           681        Expression ParseMultiplicative()
           2197682        {
           2197683            Expression left = ParseUnary();
           2169684            while (_textParser.CurrentToken.Id == TokenId.Asterisk || _textParser.CurrentToken.Id == TokenId.Slash ||
           2169685                _textParser.CurrentToken.Id == TokenId.Percent || TokenIdentifierIs("mod"))
           23686            {
           23687                Token op = _textParser.CurrentToken;
           23688                _textParser.NextToken();
           23689                Expression right = ParseUnary();
           23690                CheckAndPromoteOperands(typeof(IArithmeticSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
           22691                switch (op.Id)
           692                {
           693                    case TokenId.Asterisk:
           20694                        left = Expression.Multiply(left, right);
           20695                        break;
           696                    case TokenId.Slash:
           1697                        left = Expression.Divide(left, right);
           1698                        break;
           699                    case TokenId.Percent:
           700                    case TokenId.Identifier:
           1701                        left = Expression.Modulo(left, right);
           1702                        break;
           703                }
           22704            }
           2146705            return left;
           2146706        }
           707
           708        // -, !, not unary operators
           709        Expression ParseUnary()
           2253710        {
           2253711            if (_textParser.CurrentToken.Id == TokenId.Minus || _textParser.CurrentToken.Id == TokenId.Exclamation || To
           35712            {
           35713                Token op = _textParser.CurrentToken;
           35714                _textParser.NextToken();
           31715                if (op.Id == TokenId.Minus && (_textParser.CurrentToken.Id == TokenId.IntegerLiteral || _textParser.Curr
           31716                {
           31717                    _textParser.CurrentToken.Text = "-" + _textParser.CurrentToken.Text;
           31718                    _textParser.CurrentToken.Pos = op.Pos;
           31719                    return ParsePrimary();
           720                }
           721
           0722                Expression expr = ParseUnary();
           0723                if (op.Id == TokenId.Minus)
           0724                {
           0725                    CheckAndPromoteOperand(typeof(INegationSignatures), op.Text, ref expr, op.Pos);
           0726                    expr = Expression.Negate(expr);
           0727                }
           728                else
           0729                {
           0730                    CheckAndPromoteOperand(typeof(INotSignatures), op.Text, ref expr, op.Pos);
           0731                    expr = Expression.Not(expr);
           0732                }
           733
           0734                return expr;
           735            }
           736
           2218737            return ParsePrimary();
           2203738        }
           739
           740        Expression ParsePrimary()
           2253741        {
           2253742            Expression expr = ParsePrimaryStart();
           2217743            _expressionHelper.WrapConstantExpression(ref expr);
           744
           2669745            while (true)
           2669746            {
           2669747                if (_textParser.CurrentToken.Id == TokenId.Dot)
           460748                {
           460749                    _textParser.NextToken();
           460750                    expr = ParseMemberAccess(null, expr);
           451751                }
           2209752                else if (_textParser.CurrentToken.Id == TokenId.NullPropagation)
           1753                {
           1754                    throw new NotSupportedException("An expression tree lambda may not contain a null propagating operat
           755                }
           2208756                else if (_textParser.CurrentToken.Id == TokenId.OpenBracket)
           1757                {
           1758                    expr = ParseElementAccess(expr);
           1759                }
           760                else
           2207761                {
           2207762                    break;
           763                }
           452764            }
           2207765            return expr;
           2207766        }
           767
           768        Expression ParsePrimaryStart()
           2253769        {
           2253770            switch (_textParser.CurrentToken.Id)
           771            {
           772                case TokenId.Identifier:
           1677773                    return ParseIdentifier();
           774                case TokenId.StringLiteral:
           123775                    return ParseStringLiteral();
           776                case TokenId.IntegerLiteral:
           373777                    return ParseIntegerLiteral();
           778                case TokenId.RealLiteral:
           32779                    return ParseRealLiteral();
           780                case TokenId.OpenParen:
           47781                    return ParseParenExpression();
           782                default:
           1783                    throw ParseError(Res.ExpressionExpected);
           784            }
           2217785        }
           786
           787        Expression ParseStringLiteral()
           123788        {
           123789            _textParser.ValidateToken(TokenId.StringLiteral);
           790
           123791            string result = StringParser.ParseString(_textParser.CurrentToken.Text);
           792
           123793            if (_textParser.CurrentToken.Text[0] == '\'')
           3794            {
           3795                if (result.Length > 1)
           0796                {
           0797                    throw ParseError(Res.InvalidCharacterLiteral);
           798                }
           799
           3800                _textParser.NextToken();
           3801                return ConstantExpressionHelper.CreateLiteral(result[0], result);
           802            }
           803
           120804            _textParser.NextToken();
           120805            return ConstantExpressionHelper.CreateLiteral(result, result);
           123806        }
           807
           808        Expression ParseIntegerLiteral()
           373809        {
           373810            _textParser.ValidateToken(TokenId.IntegerLiteral);
           811
           373812            string text = _textParser.CurrentToken.Text;
           813
           373814            var tokenPosition = _textParser.CurrentToken.Pos;
           815
           373816            var constantExpression = _numberParser.ParseIntegerLiteral(tokenPosition, text);
           372817            _textParser.NextToken();
           372818            return constantExpression;
           372819        }
           820
           821        Expression ParseRealLiteral()
           32822        {
           32823            _textParser.ValidateToken(TokenId.RealLiteral);
           824
           32825            string text = _textParser.CurrentToken.Text;
           826
           32827            _textParser.NextToken();
           828
           32829            return _numberParser.ParseRealLiteral(text, text[text.Length - 1], true);
           32830        }
           831
           832        Expression ParseParenExpression()
           47833        {
           47834            _textParser.ValidateToken(TokenId.OpenParen, Res.OpenParenExpected);
           47835            _textParser.NextToken();
           47836            Expression e = ParseConditionalOperator();
           47837            _textParser.ValidateToken(TokenId.CloseParen, Res.CloseParenOrOperatorExpected);
           47838            _textParser.NextToken();
           47839            return e;
           47840        }
           841
           842        Expression ParseIdentifier()
           1677843        {
           1677844            _textParser.ValidateToken(TokenId.Identifier);
           845
           1677846            if (_keywordsHelper.TryGetValue(_textParser.CurrentToken.Text, out object value) &&
           1677847                // Prioritize property or field over the type
           1677848                !(value is Type && _it != null && FindPropertyOrField(_it.Type, _textParser.CurrentToken.Text, false) !=
           804849            {
           804850                Type typeValue = value as Type;
           804851                if (typeValue != null)
           60852                {
           60853                    return ParseTypeAccess(typeValue);
           854                }
           855
           744856                switch (value)
           857                {
           858                    case KeywordsHelper.KEYWORD_IT:
           859                    case KeywordsHelper.SYMBOL_IT:
           484860                        return ParseIt();
           861
           862                    case KeywordsHelper.KEYWORD_PARENT:
           863                    case KeywordsHelper.SYMBOL_PARENT:
           2864                        return ParseParent();
           865
           866                    case KeywordsHelper.KEYWORD_ROOT:
           867                    case KeywordsHelper.SYMBOL_ROOT:
           7868                        return ParseRoot();
           869
           870                    case KeywordsHelper.FUNCTION_IIF:
           7871                        return ParseFunctionIif();
           872
           873                    case KeywordsHelper.FUNCTION_ISNULL:
           6874                        return ParseFunctionIsNull();
           875
           876                    case KeywordsHelper.FUNCTION_NEW:
           85877                        return ParseNew();
           878
           879                    case KeywordsHelper.FUNCTION_NULLPROPAGATION:
           62880                        return ParseFunctionNullPropagation();
           881
           882                    case KeywordsHelper.FUNCTION_IS:
           5883                        return ParseFunctionIs();
           884
           885                    case KeywordsHelper.FUNCTION_AS:
           3886                        return ParseFunctionAs();
           887
           888                    case KeywordsHelper.FUNCTION_CAST:
           5889                        return ParseFunctionCast();
           890                }
           891
           78892                _textParser.NextToken();
           893
           78894                return (Expression)value;
           895            }
           896
           873897            if (_symbols.TryGetValue(_textParser.CurrentToken.Text, out value) ||
           873898                _externals != null && _externals.TryGetValue(_textParser.CurrentToken.Text, out value) ||
           873899                _internals.TryGetValue(_textParser.CurrentToken.Text, out value))
           307900            {
           307901                var expr = value as Expression;
           307902                if (expr == null)
           228903                {
           228904                    expr = Expression.Constant(value);
           228905                }
           906                else
           79907                {
           79908                    if (expr is LambdaExpression lambdaExpression)
           0909                    {
           0910                        return ParseLambdaInvocation(lambdaExpression);
           911                    }
           79912                }
           913
           307914                _textParser.NextToken();
           915
           307916                return expr;
           917            }
           918
           566919            if (_it != null)
           566920            {
           566921                return ParseMemberAccess(null, _it);
           922            }
           923
           0924            throw ParseError(Res.UnknownIdentifier, _textParser.CurrentToken.Text);
           1643925        }
           926
           927        Expression ParseIt()
           484928        {
           484929            if (_it == null)
           0930            {
           0931                throw ParseError(Res.NoItInScope);
           932            }
           484933            _textParser.NextToken();
           484934            return _it;
           484935        }
           936
           937        Expression ParseParent()
           2938        {
           2939            if (_parent == null)
           0940            {
           0941                throw ParseError(Res.NoParentInScope);
           942            }
           2943            _textParser.NextToken();
           2944            return _parent;
           2945        }
           946
           947        Expression ParseRoot()
           7948        {
           7949            if (_root == null)
           0950            {
           0951                throw ParseError(Res.NoRootInScope);
           952            }
           7953            _textParser.NextToken();
           7954            return _root;
           7955        }
           956
           957        // isnull(a,b) function
           958        Expression ParseFunctionIsNull()
           6959        {
           6960            int errorPos = _textParser.CurrentToken.Pos;
           6961            _textParser.NextToken();
           6962            Expression[] args = ParseArgumentList();
           6963            if (args.Length != 2)
           1964            {
           1965                throw ParseError(errorPos, Res.IsNullRequiresTwoArgs);
           966            }
           967
           5968            return Expression.Coalesce(args[0], args[1]);
           5969        }
           970
           971        // iif(test, ifTrue, ifFalse) function
           972        Expression ParseFunctionIif()
           7973        {
           7974            int errorPos = _textParser.CurrentToken.Pos;
           7975            _textParser.NextToken();
           976
           7977            Expression[] args = ParseArgumentList();
           7978            if (args.Length != 3)
           0979            {
           0980                throw ParseError(errorPos, Res.IifRequiresThreeArgs);
           981            }
           982
           7983            return GenerateConditional(args[0], args[1], args[2], false, errorPos);
           7984        }
           985
           986        // np(...) function
           987        Expression ParseFunctionNullPropagation()
           62988        {
           62989            int errorPos = _textParser.CurrentToken.Pos;
           62990            _textParser.NextToken();
           991
           62992            Expression[] args = ParseArgumentList();
           993
           62994            if (args.Length != 1 && args.Length != 2)
           2995            {
           2996                throw ParseError(errorPos, Res.NullPropagationRequiresCorrectArgs);
           997            }
           998
           60999            if (_expressionHelper.ExpressionQualifiesForNullPropagation(args[0]))
           591000            {
           591001                bool hasDefaultParameter = args.Length == 2;
           591002                Expression expressionIfFalse = hasDefaultParameter ? args[1] : Expression.Constant(null);
           1003
           591004                if (_expressionHelper.TryGenerateAndAlsoNotNullExpression(args[0], true, out Expression generatedExpress
           591005                {
           591006                    return GenerateConditional(generatedExpression, args[0], expressionIfFalse, true, errorPos);
           1007                }
           1008
           01009                return args[0];
           1010            }
           1011
           11012            throw ParseError(errorPos, Res.NullPropagationRequiresValidExpression);
           591013        }
           1014
           1015        // Is(...) function
           1016        Expression ParseFunctionIs()
           51017        {
           51018            int errorPos = _textParser.CurrentToken.Pos;
           51019            string functionName = _textParser.CurrentToken.Text;
           51020            _textParser.NextToken();
           1021
           51022            Expression[] args = ParseArgumentList();
           1023
           51024            if (args.Length != 1 && args.Length != 2)
           01025            {
           01026                throw ParseError(errorPos, Res.FunctionRequiresOneOrTwoArgs, functionName);
           1027            }
           1028
           1029            Expression typeArgument;
           1030            Expression it;
           51031            if (args.Length == 1)
           41032            {
           41033                typeArgument = args[0];
           41034                it = _it;
           41035            }
           1036            else
           11037            {
           11038                typeArgument = args[1];
           11039                it = args[0];
           11040            }
           1041
           51042            return Expression.TypeIs(it, ResolveTypeFromArgumentExpression(functionName, typeArgument, args.Length));
           51043        }
           1044
           1045        // As(...) function
           1046        Expression ParseFunctionAs()
           31047        {
           31048            int errorPos = _textParser.CurrentToken.Pos;
           31049            string functionName = _textParser.CurrentToken.Text;
           31050            _textParser.NextToken();
           1051
           31052            Expression[] args = ParseArgumentList();
           1053
           31054            if (args.Length != 1 && args.Length != 2)
           01055            {
           01056                throw ParseError(errorPos, Res.FunctionRequiresOneOrTwoArgs, functionName);
           1057            }
           1058
           1059            Expression typeArgument;
           1060            Expression it;
           31061            if (args.Length == 1)
           31062            {
           31063                typeArgument = args[0];
           31064                it = _it;
           31065            }
           1066            else
           01067            {
           01068                typeArgument = args[1];
           01069                it = args[0];
           01070            }
           1071
           31072            return Expression.TypeAs(it, ResolveTypeFromArgumentExpression(functionName, typeArgument, args.Length));
           31073        }
           1074
           1075        // Cast(...) function
           1076        Expression ParseFunctionCast()
           51077        {
           51078            int errorPos = _textParser.CurrentToken.Pos;
           51079            string functionName = _textParser.CurrentToken.Text;
           51080            _textParser.NextToken();
           1081
           51082            Expression[] args = ParseArgumentList();
           1083
           51084            if (args.Length != 1 && args.Length != 2)
           01085            {
           01086                throw ParseError(errorPos, Res.FunctionRequiresOneOrTwoArgs, functionName);
           1087            }
           1088
           1089            Expression typeArgument;
           1090            Expression it;
           51091            if (args.Length == 1)
           41092            {
           41093                typeArgument = args[0];
           41094                it = _it;
           41095            }
           1096            else
           11097            {
           11098                typeArgument = args[1];
           11099                it = args[0];
           11100            }
           1101
           51102            return Expression.ConvertChecked(it, ResolveTypeFromArgumentExpression(functionName, typeArgument, args.Leng
           51103        }
           1104
           1105        Expression GenerateConditional(Expression test, Expression expressionIfTrue, Expression expressionIfFalse, bool 
           731106        {
           731107            if (test.Type != typeof(bool))
           01108            {
           01109                throw ParseError(errorPos, Res.FirstExprMustBeBool);
           1110            }
           1111
           731112            if (expressionIfTrue.Type != expressionIfFalse.Type)
           541113            {
           1114                // If expressionIfTrue is a null constant and expressionIfFalse is ValueType:
           541115                if (Constants.IsNull(expressionIfTrue) && expressionIfFalse.Type.GetTypeInfo().IsValueType)
           11116                {
           11117                    if (nullPropagating && _parsingConfig.NullPropagatingUseDefaultValueForNonNullableValueTypes)
           01118                    {
           1119                        // If expressionIfFalse is a non-nullable type:
           1120                        //  generate default expression from the expressionIfFalse-type for expressionIfTrue
           1121                        // Else
           1122                        //  create nullable constant from expressionIfTrue with type from expressionIfFalse
           1123
           01124                        if (!TypeHelper.IsNullableType(expressionIfFalse.Type))
           01125                        {
           01126                            expressionIfTrue = _expressionHelper.GenerateDefaultExpression(expressionIfFalse.Type);
           01127                        }
           1128                        else
           01129                        {
           01130                            expressionIfTrue = Expression.Constant(null, expressionIfFalse.Type);
           01131                        }
           01132                    }
           1133                    else
           11134                    {
           1135                        // - create nullable constant from expressionIfTrue with type from expressionIfFalse
           1136                        // - convert expressionIfFalse to nullable (unless it's already nullable)
           11137                        var nullableType = TypeHelper.ToNullableType(expressionIfFalse.Type);
           11138                        expressionIfTrue = Expression.Constant(null, nullableType);
           1139
           11140                        if (!TypeHelper.IsNullableType(expressionIfFalse.Type))
           11141                        {
           11142                            expressionIfFalse = Expression.Convert(expressionIfFalse, nullableType);
           11143                        }
           11144                    }
           1145
           11146                    return Expression.Condition(test, expressionIfTrue, expressionIfFalse);
           1147                }
           1148
           1149                // If expressionIfFalse is a null constant and expressionIfTrue is a ValueType:
           531150                if (Constants.IsNull(expressionIfFalse) && expressionIfTrue.Type.GetTypeInfo().IsValueType)
           371151                {
           371152                    if (nullPropagating && _parsingConfig.NullPropagatingUseDefaultValueForNonNullableValueTypes)
           41153                    {
           1154                        // If expressionIfTrue is a non-nullable type:
           1155                        //  generate default expression from the expressionIfFalse-type for expressionIfFalse
           1156                        // Else
           1157                        //  create nullable constant from expressionIfFalse with type from expressionIfTrue
           1158
           41159                        if (!TypeHelper.IsNullableType(expressionIfTrue.Type))
           41160                        {
           41161                            expressionIfFalse = _expressionHelper.GenerateDefaultExpression(expressionIfTrue.Type);
           41162                        }
           1163                        else
           01164                        {
           01165                            expressionIfFalse = Expression.Constant(null, expressionIfTrue.Type);
           01166                        }
           41167                    }
           1168                    else
           331169                    {
           1170                        // - create nullable constant from expressionIfFalse with type from expressionIfTrue
           1171                        // - convert expressionIfTrue to nullable (unless it's already nullable)
           1172
           331173                        Type nullableType = TypeHelper.ToNullableType(expressionIfTrue.Type);
           331174                        expressionIfFalse = Expression.Constant(null, nullableType);
           331175                        if (!TypeHelper.IsNullableType(expressionIfTrue.Type))
           221176                        {
           221177                            expressionIfTrue = Expression.Convert(expressionIfTrue, nullableType);
           221178                        }
           331179                    }
           1180
           371181                    return Expression.Condition(test, expressionIfTrue, expressionIfFalse);
           1182                }
           1183
           161184                Expression expr1As2 = !Constants.IsNull(expressionIfFalse) ? _parsingConfig.ExpressionPromoter.Promote(e
           161185                Expression expr2As1 = !Constants.IsNull(expressionIfTrue) ? _parsingConfig.ExpressionPromoter.Promote(ex
           161186                if (expr1As2 != null && expr2As1 == null)
           11187                {
           11188                    expressionIfTrue = expr1As2;
           11189                }
           151190                else if (expr2As1 != null && expr1As2 == null)
           151191                {
           151192                    expressionIfFalse = expr2As1;
           151193                }
           1194                else
           01195                {
           01196                    string type1 = !Constants.IsNull(expressionIfTrue) ? expressionIfTrue.Type.Name : "null";
           01197                    string type2 = !Constants.IsNull(expressionIfFalse) ? expressionIfFalse.Type.Name : "null";
           01198                    if (expr1As2 != null)
           01199                    {
           01200                        throw ParseError(errorPos, Res.BothTypesConvertToOther, type1, type2);
           1201                    }
           1202
           01203                    throw ParseError(errorPos, Res.NeitherTypeConvertsToOther, type1, type2);
           1204                }
           161205            }
           1206
           351207            return Expression.Condition(test, expressionIfTrue, expressionIfFalse);
           731208        }
           1209
           1210        // new (...) function
           1211        Expression ParseNew()
           851212        {
           851213            _textParser.NextToken();
           851214            if (_textParser.CurrentToken.Id != TokenId.OpenParen &&
           851215                _textParser.CurrentToken.Id != TokenId.OpenCurlyParen &&
           851216                _textParser.CurrentToken.Id != TokenId.OpenBracket &&
           851217                _textParser.CurrentToken.Id != TokenId.Identifier)
           11218            {
           11219                throw ParseError(Res.OpenParenOrIdentifierExpected);
           1220            }
           1221
           841222            Type newType = null;
           841223            if (_textParser.CurrentToken.Id == TokenId.Identifier)
           111224            {
           111225                var newTypeName = _textParser.CurrentToken.Text;
           111226                _textParser.NextToken();
           1227
           471228                while (_textParser.CurrentToken.Id == TokenId.Dot || _textParser.CurrentToken.Id == TokenId.Plus)
           361229                {
           361230                    var sep = _textParser.CurrentToken.Text;
           361231                    _textParser.NextToken();
           361232                    if (_textParser.CurrentToken.Id != TokenId.Identifier)
           01233                    {
           01234                        throw ParseError(Res.IdentifierExpected);
           1235                    }
           361236                    newTypeName += sep + _textParser.CurrentToken.Text;
           361237                    _textParser.NextToken();
           361238                }
           1239
           111240                newType = _typeFinder.FindTypeByName(newTypeName, new[] { _it, _parent, _root }, false);
           111241                if (newType == null)
           21242                {
           21243                    throw ParseError(_textParser.CurrentToken.Pos, Res.TypeNotFound, newTypeName);
           1244                }
           1245
           91246                if (_textParser.CurrentToken.Id != TokenId.OpenParen &&
           91247                    _textParser.CurrentToken.Id != TokenId.OpenBracket &&
           91248                    _textParser.CurrentToken.Id != TokenId.OpenCurlyParen)
           01249                {
           01250                    throw ParseError(Res.OpenParenExpected);
           1251                }
           91252            }
           1253
           821254            bool arrayInitializer = false;
           821255            if (_textParser.CurrentToken.Id == TokenId.OpenBracket)
           71256            {
           71257                _textParser.NextToken();
           71258                _textParser.ValidateToken(TokenId.CloseBracket, Res.CloseBracketExpected);
           61259                _textParser.NextToken();
           61260                _textParser.ValidateToken(TokenId.OpenCurlyParen, Res.OpenCurlyParenExpected);
           61261                arrayInitializer = true;
           61262            }
           1263
           811264            _textParser.NextToken();
           1265
           811266            var properties = new List<DynamicProperty>();
           811267            var expressions = new List<Expression>();
           1268
           1571269            while (_textParser.CurrentToken.Id != TokenId.CloseParen && _textParser.CurrentToken.Id != TokenId.CloseCurl
           1541270            {
           1541271                int exprPos = _textParser.CurrentToken.Pos;
           1541272                Expression expr = ParseConditionalOperator();
           1501273                if (!arrayInitializer)
           1391274                {
           1275                    string propName;
           1391276                    if (TokenIdentifierIs("as"))
           971277                    {
           971278                        _textParser.NextToken();
           971279                        propName = GetIdentifier();
           971280                        _textParser.NextToken();
           971281                    }
           1282                    else
           421283                    {
           421284                        if (!TryGetMemberName(expr, out propName))
           01285                        {
           01286                            if (expr is MethodCallExpression methodCallExpression
           01287                                && methodCallExpression.Arguments.Count == 1
           01288                                && methodCallExpression.Arguments[0] is ConstantExpression methodCallExpressionArgument
           01289                                && methodCallExpressionArgument.Type == typeof(string)
           01290                                && properties.All(x => x.Name != (string)methodCallExpressionArgument.Value))
           01291                            {
           01292                                propName = (string)methodCallExpressionArgument.Value;
           01293                            }
           1294                            else
           01295                            {
           01296                                throw ParseError(exprPos, Res.MissingAsClause);
           1297                            }
           01298                        }
           421299                    }
           1300
           1391301                    properties.Add(new DynamicProperty(propName, expr.Type));
           1391302                }
           1303
           1501304                expressions.Add(expr);
           1305
           1501306                if (_textParser.CurrentToken.Id != TokenId.Comma)
           741307                {
           741308                    break;
           1309                }
           1310
           761311                _textParser.NextToken();
           761312            }
           1313
           771314            if (_textParser.CurrentToken.Id != TokenId.CloseParen && _textParser.CurrentToken.Id != TokenId.CloseCurlyPa
           21315            {
           21316                throw ParseError(Res.CloseParenOrCommaExpected);
           1317            }
           751318            _textParser.NextToken();
           1319
           751320            if (arrayInitializer)
           61321            {
           61322                return CreateArrayInitializerExpression(expressions, newType);
           1323            }
           1324
           691325            return CreateNewExpression(properties, expressions, newType);
           751326        }
           1327
           1328        private Expression CreateArrayInitializerExpression(List<Expression> expressions, Type newType)
           61329        {
           61330            if (expressions.Count == 0)
           11331            {
           11332                return Expression.NewArrayInit(newType ?? typeof(object));
           1333            }
           1334
           51335            if (newType != null)
           11336            {
           41337                return Expression.NewArrayInit(newType, expressions.Select(expression => _parsingConfig.ExpressionPromot
           1338            }
           1339
           121340            return Expression.NewArrayInit(expressions.All(expression => expression.Type == expressions[0].Type) ? expre
           61341        }
           1342
           1343        private Expression CreateNewExpression(List<DynamicProperty> properties, List<Expression> expressions, Type newT
           691344        {
           1345            // http://solutionizing.net/category/linq/
           691346            Type type = newType ?? _resultType;
           1347
           691348            if (type == null)
           541349            {
           1350#if UAP10_0
           1351                type = typeof(DynamicClass);
           1352                Type typeForKeyValuePair = typeof(KeyValuePair<string, object>);
           1353
           1354                ConstructorInfo constructorForKeyValuePair = typeForKeyValuePair.GetTypeInfo().DeclaredConstructors.Firs
           1355
           1356                var arrayIndexParams = new List<Expression>();
           1357                for (int i = 0; i < expressions.Count; i++)
           1358                {
           1359                    // Just convert the expression always to an object expression.
           1360                    UnaryExpression boxingExpression = Expression.Convert(expressions[i], typeof(object));
           1361                    NewExpression parameter = Expression.New(constructorForKeyValuePair, (Expression)Expression.Constant
           1362
           1363                    arrayIndexParams.Add(parameter);
           1364                }
           1365
           1366                // Create an expression tree that represents creating and initializing a one-dimensional array of type K
           1367                NewArrayExpression newArrayExpression = Expression.NewArrayInit(typeof(KeyValuePair<string, object>), ar
           1368
           1369                // Get the "public DynamicClass(KeyValuePair<string, object>[] propertylist)" constructor
           1370                ConstructorInfo constructor = type.GetTypeInfo().DeclaredConstructors.First();
           1371
           1372                return Expression.New(constructor, newArrayExpression);
           1373#else
           541374                type = DynamicClassFactory.CreateType(properties, _createParameterCtor);
           1375#endif
           541376            }
           1377
           1378            // Option 1. Try to bind via properties (TODO : investigate if this code block is 100% correct and is needed
           691379            var propertyInfos = type.GetProperties();
           691380            if (type.GetTypeInfo().BaseType == typeof(DynamicClass))
           561381            {
           2221382                propertyInfos = propertyInfos.Where(x => x.Name != "Item").ToArray();
           561383            }
           2391384            var propertyTypes = propertyInfos.Select(p => p.PropertyType).ToArray();
           691385            var ctor = type.GetConstructor(propertyTypes);
           691386            if (ctor != null)
           141387            {
           141388                var constructorParameters = ctor.GetParameters();
           141389                if (constructorParameters.Length == expressions.Count)
           141390                {
           321391                    bool bindParametersSequentially = !properties.All(p => constructorParameters
           611392                        .Any(cp => cp.Name == p.Name && (cp.ParameterType == p.Type || p.Type == Nullable.GetUnderlyingT
           141393                    var expressionsPromoted = new List<Expression>();
           1394
           1395                    // Loop all expressions and promote if needed
           721396                    for (int i = 0; i < constructorParameters.Length; i++)
           221397                    {
           221398                        if (bindParametersSequentially)
           51399                        {
           51400                            expressionsPromoted.Add(_parsingConfig.ExpressionPromoter.Promote(expressions[i], propertyTy
           51401                        }
           1402                        else
           171403                        {
           171404                            Type propertyType = constructorParameters[i].ParameterType;
           171405                            string cParameterName = constructorParameters[i].Name;
           411406                            var propertyAndIndex = properties.Select((p, index) => new { p, index })
           411407                                .First(p => p.p.Name == cParameterName && (p.p.Type == propertyType || p.p.Type == Nulla
           1408                            // Promote from Type to Nullable Type if needed
           171409                            expressionsPromoted.Add(_parsingConfig.ExpressionPromoter.Promote(expressions[propertyAndInd
           171410                        }
           221411                    }
           1412
           141413                    return Expression.New(ctor, expressionsPromoted, (IEnumerable<MemberInfo>)propertyInfos);
           1414                }
           01415            }
           1416
           1417            // Option 2. Try to find a constructor with the exact argument-types and exact same order
           1641418            var constructorArgumentTypes = properties.Select(p => p.Type).ToArray();
           551419            var exactConstructor = type.GetConstructor(constructorArgumentTypes);
           551420            if (exactConstructor != null)
           21421            {
           1422                // Promote from Type to Nullable Type if needed
           21423                var expressionsPromoted = exactConstructor.GetParameters()
           21424                    .Select((t, i) => _parsingConfig.ExpressionPromoter.Promote(expressions[i], t.ParameterType, true, t
           21425                    .ToArray();
           1426
           21427                return Expression.New(exactConstructor, expressionsPromoted);
           1428            }
           1429
           1430            // Option 2. Call the default (empty) constructor and set the members
           531431            var memberBindings = new MemberBinding[properties.Count];
           3201432            for (int i = 0; i < memberBindings.Length; i++)
           1071433            {
           1071434                string propertyOrFieldName = properties[i].Name;
           1435                Type propertyOrFieldType;
           1436                MemberInfo memberInfo;
           1071437                PropertyInfo propertyInfo = type.GetProperty(propertyOrFieldName);
           1071438                if (propertyInfo != null)
           1061439                {
           1061440                    memberInfo = propertyInfo;
           1061441                    propertyOrFieldType = propertyInfo.PropertyType;
           1061442                }
           1443                else
           11444                {
           11445                    FieldInfo fieldInfo = type.GetField(propertyOrFieldName);
           11446                    if (fieldInfo == null)
           01447                    {
           01448                        throw ParseError(Res.UnknownPropertyOrField, propertyOrFieldName, TypeHelper.GetTypeName(type));
           1449                    }
           1450
           11451                    memberInfo = fieldInfo;
           11452                    propertyOrFieldType = fieldInfo.FieldType;
           11453                }
           1454
           1455                // Promote from Type to Nullable Type if needed
           1071456                memberBindings[i] = Expression.Bind(memberInfo, _parsingConfig.ExpressionPromoter.Promote(expressions[i]
           1071457            }
           1458
           531459            return Expression.MemberInit(Expression.New(type), memberBindings);
           691460        }
           1461
           1462        Expression ParseLambdaInvocation(LambdaExpression lambda)
           01463        {
           01464            int errorPos = _textParser.CurrentToken.Pos;
           01465            _textParser.NextToken();
           01466            Expression[] args = ParseArgumentList();
           1467
           01468            Expression nullExpressionReference = null;
           01469            if (_methodFinder.FindMethod(lambda.Type, nameof(Expression.Invoke), false, ref nullExpressionReference, ref
           01470            {
           01471                throw ParseError(errorPos, Res.ArgsIncompatibleWithLambda);
           1472            }
           1473
           01474            return Expression.Invoke(lambda, args);
           01475        }
           1476
           1477        Expression ParseTypeAccess(Type type)
           601478        {
           601479            int errorPos = _textParser.CurrentToken.Pos;
           601480            _textParser.NextToken();
           1481
           601482            if (_textParser.CurrentToken.Id == TokenId.Question)
           91483            {
           91484                if (!type.GetTypeInfo().IsValueType || TypeHelper.IsNullableType(type))
           01485                {
           01486                    throw ParseError(errorPos, Res.TypeHasNoNullableForm, TypeHelper.GetTypeName(type));
           1487                }
           1488
           91489                type = typeof(Nullable<>).MakeGenericType(type);
           91490                _textParser.NextToken();
           91491            }
           1492
           601493            Expression generatedExpression = null;
           1494
           1495            // This is a shorthand for explicitly converting a string to something
           601496            bool shorthand = _textParser.CurrentToken.Id == TokenId.StringLiteral;
           601497            if (_textParser.CurrentToken.Id == TokenId.OpenParen || shorthand)
           281498            {
           281499                Expression[] args = shorthand ? new[] { ParseStringLiteral() } : ParseArgumentList();
           1500
           1501                // If only 1 argument and
           1502                // - the arg is ConstantExpression, return the conversion
           1503                // OR
           1504                // - the arg is null, return the conversion (Can't use constructor)
           1505                //
           1506                // Then try to GenerateConversion
           281507                if (args.Length == 1 && (args[0] == null || args[0] is ConstantExpression) && TryGenerateConversion(args
           81508                {
           81509                    return generatedExpression;
           1510                }
           1511
           1512                // If only 1 argument, and if the type is a ValueType and argType is also a ValueType, just Convert
           191513                if (args.Length == 1)
           161514                {
           161515                    Type argType = args[0].Type;
           1516
           161517                    if (type.GetTypeInfo().IsValueType && TypeHelper.IsNullableType(type) && argType.GetTypeInfo().IsVal
           71518                    {
           71519                        return Expression.Convert(args[0], type);
           1520                    }
           91521                }
           1522
           121523                var constructorsWithOutPointerArguments = type.GetConstructors()
           2841524                    .Where(c => !c.GetParameters().Any(p => p.ParameterType.GetTypeInfo().IsPointer))
           121525                    .ToArray();
           121526                switch (_methodFinder.FindBestMethodBasedOnArguments(constructorsWithOutPointerArguments, ref args, out 
           1527                {
           1528                    case 0:
           71529                        if (args.Length == 1 && TryGenerateConversion(args[0], type, out generatedExpression))
           61530                        {
           61531                            return generatedExpression;
           1532                        }
           1533
           11534                        throw ParseError(errorPos, Res.NoMatchingConstructor, TypeHelper.GetTypeName(type));
           1535
           1536                    case 1:
           51537                        return Expression.New((ConstructorInfo)method, args);
           1538
           1539                    default:
           01540                        throw ParseError(errorPos, Res.AmbiguousConstructorInvocation, TypeHelper.GetTypeName(type));
           1541                }
           1542            }
           1543
           321544            _textParser.ValidateToken(TokenId.Dot, Res.DotOrOpenParenOrStringLiteralExpected);
           321545            _textParser.NextToken();
           1546
           321547            return ParseMemberAccess(type, null);
           571548        }
           1549
           1550        private bool TryGenerateConversion(Expression sourceExpression, Type type, out Expression expression)
           171551        {
           171552            Type exprType = sourceExpression.Type;
           171553            if (exprType == type)
           31554            {
           31555                expression = sourceExpression;
           31556                return true;
           1557            }
           1558
           141559            if (exprType.GetTypeInfo().IsValueType && type.GetTypeInfo().IsValueType)
           81560            {
           81561                if ((TypeHelper.IsNullableType(exprType) || TypeHelper.IsNullableType(type)) && TypeHelper.GetNonNullabl
           11562                {
           11563                    expression = Expression.Convert(sourceExpression, type);
           11564                    return true;
           1565                }
           1566
           71567                if ((TypeHelper.IsNumericType(exprType) || TypeHelper.IsEnumType(exprType)) && TypeHelper.IsNumericType(
           51568                {
           51569                    expression = Expression.ConvertChecked(sourceExpression, type);
           51570                    return true;
           1571                }
           21572            }
           1573
           81574            if (exprType.IsAssignableFrom(type) || type.IsAssignableFrom(exprType) || exprType.GetTypeInfo().IsInterface
           31575            {
           31576                expression = Expression.Convert(sourceExpression, type);
           31577                return true;
           1578            }
           1579
           1580            // Try to Parse the string rather than just generate the convert statement
           51581            if (sourceExpression.NodeType == ExpressionType.Constant && exprType == typeof(string))
           31582            {
           31583                string text = (string)((ConstantExpression)sourceExpression).Value;
           1584
           31585                var typeConvertor = _typeConverterFactory.GetConverter(type);
           31586                if (typeConvertor != null && typeConvertor.CanConvertFrom(typeof(string)))
           31587                {
           31588                    var value = typeConvertor.ConvertFromInvariantString(text);
           21589                    expression = Expression.Constant(value, type);
           21590                    return true;
           1591                }
           01592            }
           1593
           1594            // Check if there are any explicit conversion operators on the source type which fit the requirement (cast t
           21595            bool explicitOperatorAvailable = exprType.GetTypeInfo().GetDeclaredMethods("op_Explicit").Any(m => m.ReturnT
           21596            if (explicitOperatorAvailable)
           01597            {
           01598                expression = Expression.Convert(sourceExpression, type);
           01599                return true;
           1600            }
           1601
           21602            expression = null;
           21603            return false;
           161604        }
           1605
           1606        Expression ParseMemberAccess(Type type, Expression expression)
           10581607        {
           10581608            if (expression != null)
           10261609            {
           10261610                type = expression.Type;
           10261611            }
           1612
           10581613            int errorPos = _textParser.CurrentToken.Pos;
           10581614            string id = GetIdentifier();
           10581615            _textParser.NextToken();
           1616
           10581617            if (_textParser.CurrentToken.Id == TokenId.OpenParen)
           2151618            {
           2151619                if (expression != null && type != typeof(string))
           1721620                {
           1721621                    Type enumerableType = TypeHelper.FindGenericType(typeof(IEnumerable<>), type);
           1721622                    if (enumerableType != null)
           1421623                    {
           1421624                        Type elementType = enumerableType.GetTypeInfo().GetGenericTypeArguments()[0];
           1421625                        return ParseEnumerable(expression, elementType, id, errorPos, type);
           1626                    }
           301627                }
           1628
           731629                Expression[] args = ParseArgumentList();
           731630                switch (_methodFinder.FindMethod(type, id, expression == null, ref expression, ref args, out MethodBase 
           1631                {
           1632                    case 0:
           31633                        throw ParseError(errorPos, Res.NoApplicableMethod, id, TypeHelper.GetTypeName(type));
           1634
           1635                    case 1:
           701636                        MethodInfo method = (MethodInfo)mb;
           701637                        if (!PredefinedTypesHelper.IsPredefinedType(_parsingConfig, method.DeclaringType) && !(method.Is
           11638                        {
           11639                            throw ParseError(errorPos, Res.MethodsAreInaccessible, TypeHelper.GetTypeName(method.Declari
           1640                        }
           1641
           691642                        if (method.IsGenericMethod)
           51643                        {
           161644                            var genericParameters = method.GetParameters().Where(p => p.ParameterType.IsGenericParameter
           101645                            var typeArguments = genericParameters.Select(a => args[a.Position].Type);
           51646                            var constructedMethod = method.MakeGenericMethod(typeArguments.ToArray());
           51647                            return Expression.Call(expression, constructedMethod, args);
           1648                        }
           1649                        else
           641650                        {
           641651                            return Expression.Call(expression, method, args);
           1652                        }
           1653
           1654                    default:
           01655                        throw ParseError(errorPos, Res.AmbiguousMethodInvocation, id, TypeHelper.GetTypeName(type));
           1656                }
           1657            }
           1658
           8431659            var @enum = TypeHelper.ParseEnum(id, type);
           8431660            if (@enum != null)
           131661            {
           131662                return Expression.Constant(@enum);
           1663            }
           1664
           1665#if UAP10_0 || NETSTANDARD1_3
           1666            if (type == typeof(DynamicClass))
           1667            {
           1668                return Expression.MakeIndex(expression, typeof(DynamicClass).GetProperty("Item"), new[] { Expression.Con
           1669            }
           1670#endif
           8301671            MemberInfo member = FindPropertyOrField(type, id, expression == null);
           8301672            if (member is PropertyInfo property)
           7581673            {
           7581674                return Expression.Property(expression, property);
           1675            }
           1676
           721677            if (member is FieldInfo field)
           71678            {
           71679                return Expression.Field(expression, field);
           1680            }
           1681
           651682            if (!_parsingConfig.DisableMemberAccessToIndexAccessorFallback && expression != null)
           571683            {
           571684                MethodInfo indexerMethod = expression.Type.GetMethod("get_Item", new[] { typeof(string) });
           571685                if (indexerMethod != null)
           11686                {
           11687                    return Expression.Call(expression, indexerMethod, Expression.Constant(id));
           1688                }
           561689            }
           1690
           1691#if !NET35 && !UAP10_0 && !NETSTANDARD1_3
           641692            if (type == typeof(object))
           111693            {
           1694                // The member is a dynamic or ExpandoObject, so convert this
           111695                return _expressionHelper.ConvertToExpandoObjectAndCreateDynamicExpression(expression, type, id);
           1696            }
           1697#endif
           1698            // Parse as Lambda
           531699            if (_textParser.CurrentToken.Id == TokenId.Lambda && _it.Type == type)
           301700            {
           301701                return ParseAsLambda(id);
           1702            }
           1703
           1704            // This could be enum like "A.B.C.MyEnum.Value1" or "A.B.C+MyEnum.Value1"
           231705            if (_textParser.CurrentToken.Id == TokenId.Dot || _textParser.CurrentToken.Id == TokenId.Plus)
           101706            {
           101707                return ParseAsEnum(id);
           1708            }
           1709
           131710            throw ParseError(errorPos, Res.UnknownPropertyOrField, id, TypeHelper.GetTypeName(type));
           10311711        }
           1712
           1713        private Expression ParseAsLambda(string id)
           301714        {
           1715            // This might be an internal variable for use within a lambda expression, so store it as such
           301716            _internals.Add(id, _it);
           301717            string _previousItName = ItName;
           1718
           1719            // Also store ItName (only once)
           301720            if (string.Equals(ItName, KeywordsHelper.KEYWORD_IT))
           271721            {
           271722                ItName = id;
           271723            }
           1724
           1725            // next
           301726            _textParser.NextToken();
           1727
           301728            LastLambdaItName = ItName;
           301729            var exp = ParseConditionalOperator();
           1730
           1731            // Restore previous context and clear internals
           301732            _internals.Remove(id);
           301733            ItName = _previousItName;
           1734
           301735            return exp;
           301736        }
           1737
           1738        private Expression ParseAsEnum(string id)
           101739        {
           101740            var parts = new List<string> { id };
           1741
           631742            while (_textParser.CurrentToken.Id == TokenId.Dot || _textParser.CurrentToken.Id == TokenId.Plus)
           531743            {
           531744                if (_textParser.CurrentToken.Id == TokenId.Dot || _textParser.CurrentToken.Id == TokenId.Plus)
           531745                {
           531746                    parts.Add(_textParser.CurrentToken.Text);
           531747                    _textParser.NextToken();
           531748                }
           1749
           531750                if (_textParser.CurrentToken.Id == TokenId.Identifier)
           521751                {
           521752                    parts.Add(_textParser.CurrentToken.Text);
           521753                    _textParser.NextToken();
           521754                }
           531755            }
           1756
           101757            var enumTypeAsString = string.Concat(parts.Take(parts.Count - 2).ToArray());
           101758            var enumType = _typeFinder.FindTypeByName(enumTypeAsString, null, true);
           101759            if (enumType == null)
           31760            {
           31761                throw ParseError(_textParser.CurrentToken.Pos, Res.EnumTypeNotFound, enumTypeAsString);
           1762            }
           1763
           71764            string enumValueAsString = parts.LastOrDefault();
           71765            if (enumValueAsString == null)
           01766            {
           01767                throw ParseError(_textParser.CurrentToken.Pos, Res.EnumValueExpected);
           1768            }
           1769
           71770            var enumValue = TypeHelper.ParseEnum(enumValueAsString, enumType);
           71771            if (enumValue == null)
           11772            {
           11773                throw ParseError(_textParser.CurrentToken.Pos, Res.EnumValueNotDefined, enumValueAsString, enumTypeAsStr
           1774            }
           1775
           61776            return Expression.Constant(enumValue);
           61777        }
           1778
           1779        Expression ParseEnumerable(Expression instance, Type elementType, string methodName, int errorPos, Type type)
           1421780        {
           1421781            bool isQueryable = TypeHelper.FindGenericType(typeof(IQueryable<>), type) != null;
           1421782            bool isDictionary = TypeHelper.IsDictionary(type);
           1783
           1421784            var oldParent = _parent;
           1785
           1421786            ParameterExpression outerIt = _it;
           1421787            ParameterExpression innerIt = ParameterExpressionHelper.CreateParameterExpression(elementType, string.Empty,
           1788
           1421789            _parent = _it;
           1790
           1421791            if (methodName == "Contains" || methodName == "ContainsKey" || methodName == "Skip" || methodName == "Take")
           111792            {
           1793                // for any method that acts on the parent element type, we need to specify the outerIt as scope.
           111794                _it = outerIt;
           111795            }
           1796            else
           1311797            {
           1311798                _it = innerIt;
           1311799            }
           1800
           1421801            Expression[] args = ParseArgumentList();
           1802
           1421803            _it = outerIt;
           1421804            _parent = oldParent;
           1805
           1421806            if (isDictionary && _methodFinder.ContainsMethod(typeof(IDictionarySignatures), methodName, false, null, ref
           31807            {
           31808                var method = type.GetMethod(methodName);
           31809                return Expression.Call(instance, method, args);
           1810            }
           1811
           1391812            if (!_methodFinder.ContainsMethod(typeof(IEnumerableSignatures), methodName, false, null, ref args))
           41813            {
           61814                throw ParseError(errorPos, Res.NoApplicableAggregate, methodName, string.Join(",", args.Select(a => a.Ty
           1815            }
           1816
           1351817            Type callType = typeof(Enumerable);
           1351818            if (isQueryable && _methodFinder.ContainsMethod(typeof(IQueryableSignatures), methodName, false, null, ref a
           171819            {
           171820                callType = typeof(Queryable);
           171821            }
           1822
           1823            Type[] typeArgs;
           1351824            if (new[] { "OfType", "Cast" }.Contains(methodName))
           61825            {
           61826                if (args.Length != 1)
           01827                {
           01828                    throw ParseError(_textParser.CurrentToken.Pos, Res.FunctionRequiresOneArg, methodName);
           1829                }
           1830
           61831                typeArgs = new[] { ResolveTypeFromArgumentExpression(methodName, args[0]) };
           41832                args = new Expression[0];
           41833            }
           1291834            else if (new[] { "Min", "Max", "Select", "OrderBy", "OrderByDescending", "ThenBy", "ThenByDescending", "Grou
           241835            {
           241836                if (args.Length == 2)
           11837                {
           11838                    typeArgs = new[] { elementType, args[0].Type, args[1].Type };
           11839                }
           1840                else
           231841                {
           231842                    typeArgs = new[] { elementType, args[0].Type };
           231843                }
           241844            }
           1051845            else if (methodName == "SelectMany")
           31846            {
           31847                var bodyType = Expression.Lambda(args[0], innerIt).Body.Type;
           31848                var interfaces = bodyType.GetInterfaces().Union(new[] { bodyType });
           301849                Type interfaceType = interfaces.Single(i => i.Name == typeof(IEnumerable<>).Name);
           31850                Type resultType = interfaceType.GetTypeInfo().GetGenericTypeArguments()[0];
           31851                typeArgs = new[] { elementType, resultType };
           31852            }
           1853            else
           1021854            {
           1021855                typeArgs = new[] { elementType };
           1021856            }
           1857
           1331858            if (args.Length == 0)
           441859            {
           441860                args = new[] { instance };
           441861            }
           1862            else
           891863            {
           891864                if (new[] { "Concat", "Contains", "DefaultIfEmpty", "Except", "Intersect", "Skip", "Take", "Union" }.Con
           141865                {
           141866                    args = new[] { instance, args[0] };
           141867                }
           1868                else
           751869                {
           751870                    if (args.Length == 2)
           11871                    {
           11872                        args = new[] { instance, Expression.Lambda(args[0], innerIt), Expression.Lambda(args[1], innerIt
           11873                    }
           1874                    else
           741875                    {
           741876                        args = new[] { instance, Expression.Lambda(args[0], innerIt) };
           741877                    }
           751878                }
           891879            }
           1880
           1331881            return Expression.Call(callType, methodName, typeArgs, args);
           1361882        }
           1883
           1884        private Type ResolveTypeFromArgumentExpression(string functionName, Expression argumentExpression, int? argument
           191885        {
           191886            string argument = arguments == null ? string.Empty : arguments == 1 ? "first " : "second ";
           191887            switch (argumentExpression)
           1888            {
           1889                case ConstantExpression constantExpression:
           191890                    switch (constantExpression.Value)
           1891                    {
           1892                        case string typeName:
           141893                            return ResolveTypeStringFromArgument(functionName, typeName);
           1894
           1895                        case Type type:
           51896                            return type;
           1897
           1898                        default:
           01899                            throw ParseError(_textParser.CurrentToken.Pos, Res.FunctionRequiresNotNullArgOfType, functio
           1900                    }
           1901
           1902                default:
           01903                    throw ParseError(_textParser.CurrentToken.Pos, Res.FunctionRequiresNotNullArgOfType, functionName, a
           1904            }
           171905        }
           1906
           1907        private Type ResolveTypeStringFromArgument(string functionName, string typeName)
           141908        {
           141909            Type resultType = _typeFinder.FindTypeByName(typeName, new[] { _it, _parent, _root }, true);
           141910            if (resultType == null)
           21911            {
           21912                throw ParseError(_textParser.CurrentToken.Pos, Res.TypeNotFound, typeName);
           1913            }
           1914
           121915            return resultType;
           121916        }
           1917
           1918        Expression[] ParseArgumentList()
           3311919        {
           3311920            _textParser.ValidateToken(TokenId.OpenParen, Res.OpenParenExpected);
           3311921            _textParser.NextToken();
           3311922            Expression[] args = _textParser.CurrentToken.Id != TokenId.CloseParen ? ParseArguments() : new Expression[0]
           3311923            _textParser.ValidateToken(TokenId.CloseParen, Res.CloseParenOrCommaExpected);
           3311924            _textParser.NextToken();
           3311925            return args;
           3311926        }
           1927
           1928        Expression[] ParseArguments()
           2741929        {
           2741930            var argList = new List<Expression>();
           3301931            while (true)
           3301932            {
           3301933                var argumentExpression = ParseConditionalOperator();
           1934
           3301935                _expressionHelper.WrapConstantExpression(ref argumentExpression);
           1936
           3301937                argList.Add(argumentExpression);
           1938
           3301939                if (_textParser.CurrentToken.Id != TokenId.Comma)
           2741940                {
           2741941                    break;
           1942                }
           1943
           561944                _textParser.NextToken();
           561945            }
           1946
           2741947            return argList.ToArray();
           2741948        }
           1949
           1950        Expression ParseElementAccess(Expression expr)
           11951        {
           11952            int errorPos = _textParser.CurrentToken.Pos;
           11953            _textParser.ValidateToken(TokenId.OpenBracket, Res.OpenParenExpected);
           11954            _textParser.NextToken();
           1955
           11956            Expression[] args = ParseArguments();
           11957            _textParser.ValidateToken(TokenId.CloseBracket, Res.CloseBracketOrCommaExpected);
           11958            _textParser.NextToken();
           1959
           11960            if (expr.Type.IsArray)
           01961            {
           01962                if (expr.Type.GetArrayRank() != 1 || args.Length != 1)
           01963                {
           01964                    throw ParseError(errorPos, Res.CannotIndexMultiDimArray);
           1965                }
           01966                Expression index = _parsingConfig.ExpressionPromoter.Promote(args[0], typeof(int), true, false);
           1967
           01968                if (index == null)
           01969                {
           01970                    throw ParseError(errorPos, Res.InvalidIndex);
           1971                }
           1972
           01973                return Expression.ArrayIndex(expr, index);
           1974            }
           1975
           11976            switch (_methodFinder.FindIndexer(expr.Type, args, out var mb))
           1977            {
           1978                case 0:
           01979                    throw ParseError(errorPos, Res.NoApplicableIndexer,
           01980                        TypeHelper.GetTypeName(expr.Type));
           1981                case 1:
           11982                    var indexMethod = (MethodInfo)mb;
           11983                    var indexParameterType = indexMethod.GetParameters().First().ParameterType;
           1984
           11985                    var indexArgumentExpression = args[0]; // Indexer only has 1 parameter, so we can use args[0] here
           11986                    if (indexParameterType != indexArgumentExpression.Type)
           01987                    {
           01988                        indexArgumentExpression = Expression.Convert(indexArgumentExpression, indexParameterType);
           01989                    }
           1990
           11991                    return Expression.Call(expr, indexMethod, indexArgumentExpression);
           1992
           1993                default:
           01994                    throw ParseError(errorPos, Res.AmbiguousIndexerInvocation, TypeHelper.GetTypeName(expr.Type));
           1995            }
           11996        }
           1997
           1998        internal static Type ToNullableType(Type type)
           41999        {
           42000            Check.NotNull(type, nameof(type));
           2001
           42002            if (!type.GetTypeInfo().IsValueType || TypeHelper.IsNullableType(type))
           02003            {
           02004                throw ParseError(-1, Res.TypeHasNoNullableForm, TypeHelper.GetTypeName(type));
           2005            }
           2006
           42007            return typeof(Nullable<>).MakeGenericType(type);
           42008        }
           2009
           2010        static bool TryGetMemberName(Expression expression, out string memberName)
           422011        {
           422012            var memberExpression = expression as MemberExpression;
           422013            if (memberExpression == null && expression.NodeType == ExpressionType.Coalesce)
           02014            {
           02015                memberExpression = (expression as BinaryExpression)?.Left as MemberExpression;
           02016            }
           2017
           422018            if (memberExpression != null)
           422019            {
           422020                memberName = memberExpression.Member.Name;
           422021                return true;
           2022            }
           2023
           2024#if NETFX_CORE
           2025            var indexExpression = expression as IndexExpression;
           2026            if (indexExpression != null && indexExpression.Indexer.DeclaringType == typeof(DynamicObjectClass))
           2027            {
           2028                memberName = ((ConstantExpression)indexExpression.Arguments.First()).Value as string;
           2029                return true;
           2030            }
           2031#endif
           02032            memberName = null;
           02033            return false;
           422034        }
           2035
           2036        void CheckAndPromoteOperand(Type signatures, string opName, ref Expression expr, int errorPos)
           02037        {
           02038            Expression[] args = { expr };
           2039
           02040            if (!_methodFinder.ContainsMethod(signatures, "F", false, null, ref args))
           02041            {
           02042                throw IncompatibleOperandError(opName, expr, errorPos);
           2043            }
           2044
           02045            expr = args[0];
           02046        }
           2047
           2048        static string GetOverloadedOperationName(TokenId tokenId)
           2022049        {
           2022050            switch (tokenId)
           2051            {
           2052                case TokenId.DoubleEqual:
           2053                case TokenId.Equal:
           602054                    return "op_Equality";
           2055                case TokenId.ExclamationEqual:
           32056                    return "op_Inequality";
           2057                default:
           1392058                    return null;
           2059            }
           2022060        }
           2061
           2062        void CheckAndPromoteOperands(Type signatures, TokenId opId, string opName, ref Expression left, ref Expression r
           2022063        {
           2022064            Expression[] args = { left, right };
           2065
           2066            // support operator overloading
           2022067            var nativeOperation = GetOverloadedOperationName(opId);
           2022068            bool found = false;
           2069
           2022070            if (nativeOperation != null)
           632071            {
           2072                // first try left operand's equality operators
           632073                found = _methodFinder.ContainsMethod(left.Type, nativeOperation, true, null, ref args);
           632074                if (!found)
           562075                {
           562076                    found = _methodFinder.ContainsMethod(right.Type, nativeOperation, true, null, ref args);
           562077                }
           632078            }
           2079
           2022080            if (!found && !_methodFinder.ContainsMethod(signatures, "F", false, null, ref args))
           72081            {
           72082                throw IncompatibleOperandsError(opName, left, right, errorPos);
           2083            }
           2084
           1952085            left = args[0];
           1952086            right = args[1];
           1952087        }
           2088
           2089        static Exception IncompatibleOperandError(string opName, Expression expr, int errorPos)
           02090        {
           02091            return ParseError(errorPos, Res.IncompatibleOperand, opName, TypeHelper.GetTypeName(expr.Type));
           02092        }
           2093
           2094        static Exception IncompatibleOperandsError(string opName, Expression left, Expression right, int errorPos)
           72095        {
           72096            return ParseError(errorPos, Res.IncompatibleOperands, opName, TypeHelper.GetTypeName(left.Type), TypeHelper.
           72097        }
           2098
           2099        private MemberInfo FindPropertyOrField(Type type, string memberName, bool staticAccess)
           8842100        {
           2101#if !(NETFX_CORE || WINDOWS_APP ||  UAP10_0 || NETSTANDARD)
           8842102            BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly | (staticAccess ? BindingFlags.Static :
           39762103            foreach (Type t in TypeHelper.GetSelfAndBaseTypes(type))
           10452104            {
           10452105                MemberInfo[] members = null;
           2106
           10452107                var findMembersType = _parsingConfig?.IsCaseSensitive == true ? Type.FilterName : Type.FilterNameIgnoreC
           10452108                members = t.FindMembers(MemberTypes.Property | MemberTypes.Field, flags, findMembersType, memberName);
           2109
           10452110                if (members.Length != 0)
           7662111                {
           7662112                    return members[0];
           2113                }
           2792114            }
           1182115            return null;
           2116#else
           2117            var isCaseSensitive = _parsingConfig?.IsCaseSensitive == true;
           2118            foreach (Type t in TypeHelper.GetSelfAndBaseTypes(type))
           2119            {
           2120                // Try to find a property with the specified memberName
           2121                MemberInfo member = t.GetTypeInfo().DeclaredProperties.FirstOrDefault(x => (!staticAccess || x.GetAccess
           2122                if (member != null)
           2123                {
           2124                    return member;
           2125                }
           2126
           2127                // If no property is found, try to get a field with the specified memberName
           2128                member = t.GetTypeInfo().DeclaredFields.FirstOrDefault(x => (!staticAccess || x.IsStatic) && ((x.Name ==
           2129                if (member != null)
           2130                {
           2131                    return member;
           2132                }
           2133
           2134                // No property or field is found, try the base type.
           2135            }
           2136            return null;
           2137#endif
           8842138        }
           2139
           2140        bool TokenIdentifierIs(string id)
           62352141        {
           62352142            return _textParser.CurrentToken.Id == TokenId.Identifier && string.Equals(id, _textParser.CurrentToken.Text,
           62352143        }
           2144
           2145        string GetIdentifier()
           11552146        {
           11552147            _textParser.ValidateToken(TokenId.Identifier, Res.IdentifierExpected);
           11552148            string id = _textParser.CurrentToken.Text;
           11552149            if (id.Length > 1 && id[0] == '@')
           22150            {
           22151                id = id.Substring(1);
           22152            }
           2153
           11552154            return id;
           11552155        }
           2156
           2157        Exception ParseError(string format, params object[] args)
           52158        {
           52159            return ParseError(_textParser?.CurrentToken.Pos ?? 0, format, args);
           52160        }
           2161
           2162        static Exception ParseError(int pos, string format, params object[] args)
           462163        {
           462164            return new ParseException(string.Format(CultureInfo.CurrentCulture, format, args), pos);
           462165        }
           2166    }
           2167}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -ItName()
          -LastLambdaItName()
          -.ctor(System.Linq.Expressions.ParameterExpression[],System.String,System.Object[],System.Linq.Dynamic.Core.ParsingConfig)
          -ProcessParameters(System.Linq.Expressions.ParameterExpression[])
          -ProcessValues(System.Object[])
          -AddSymbol(System.String,System.Object)
          -Parse(System.Type,System.Boolean)
          -ParseOrdering(System.Boolean)
          -ParseConditionalOperator()
          -ParseNullCoalescingOperator()
          -ParseLambdaOperator()
          -ParseOrOperator()
          -ParseAndOperator()
          -ParseIn()
          -ParseLogicalAndOrOperator()
          -ParseComparisonOperator()
          -HasImplicitConversion(System.Type,System.Type)
          -ParseEnumToConstantExpression(System.Int32,System.Type,System.Linq.Expressions.ConstantExpression)
          -ParseConstantExpressionToEnum(System.Int32,System.Type,System.Linq.Expressions.ConstantExpression)
          -ParseShiftOperator()
          -ParseAdditive()
          -ParseMultiplicative()
          -ParseUnary()
          -ParsePrimary()
          -ParsePrimaryStart()
          -ParseStringLiteral()
          -ParseIntegerLiteral()
          -ParseRealLiteral()
          -ParseParenExpression()
          -ParseIdentifier()
          -ParseIt()
          -ParseParent()
          -ParseRoot()
          -ParseFunctionIsNull()
          -ParseFunctionIif()
          -ParseFunctionNullPropagation()
          -ParseFunctionIs()
          -ParseFunctionAs()
          -ParseFunctionCast()
          -GenerateConditional(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Int32)
          -ParseNew()
          -CreateArrayInitializerExpression(System.Collections.Generic.List`1<System.Linq.Expressions.Expression>,System.Type)
          -CreateNewExpression(System.Collections.Generic.List`1<System.Linq.Dynamic.Core.DynamicProperty>,System.Collections.Generic.List`1<System.Linq.Expressions.Expression>,System.Type)
          -ParseLambdaInvocation(System.Linq.Expressions.LambdaExpression)
          -ParseTypeAccess(System.Type)
          -TryGenerateConversion(System.Linq.Expressions.Expression,System.Type,System.Linq.Expressions.Expression&)
          -ParseMemberAccess(System.Type,System.Linq.Expressions.Expression)
          -ParseAsLambda(System.String)
          -ParseAsEnum(System.String)
          -ParseEnumerable(System.Linq.Expressions.Expression,System.Type,System.String,System.Int32,System.Type)
          -ResolveTypeFromArgumentExpression(System.String,System.Linq.Expressions.Expression,System.Nullable`1<System.Int32>)
          -ResolveTypeStringFromArgument(System.String,System.String)
          -ParseArgumentList()
          -ParseArguments()
          -ParseElementAccess(System.Linq.Expressions.Expression)
          -ToNullableType(System.Type)
          -TryGetMemberName(System.Linq.Expressions.Expression,System.String&)
          -CheckAndPromoteOperand(System.Type,System.String,System.Linq.Expressions.Expression&,System.Int32)
          -GetOverloadedOperationName(System.Linq.Dynamic.Core.Tokenizer.TokenId)
          -CheckAndPromoteOperands(System.Type,System.Linq.Dynamic.Core.Tokenizer.TokenId,System.String,System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&,System.Int32)
          -IncompatibleOperandError(System.String,System.Linq.Expressions.Expression,System.Int32)
          -IncompatibleOperandsError(System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Int32)
          -FindPropertyOrField(System.Type,System.String,System.Boolean)
          -TokenIdentifierIs(System.String)
          -GetIdentifier()
          -ParseError(System.String,System.Object[])
          -ParseError(System.Int32,System.String,System.Object[])
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ExpressionPromoter.html b/report/coverlet/System.Linq.Dynamic.Core_ExpressionPromoter.html deleted file mode 100644 index e1b18ba6..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ExpressionPromoter.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.ExpressionPromoter - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.ExpressionPromoter
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionPromoter.cs
          Covered lines:52
          Uncovered lines:0
          Coverable lines:52
          Total lines:124
          Line coverage:100% (52 of 52)
          Covered branches:43
          Total branches:43
          Branch coverage:100% (43 of 43)
          Covered methods:2
          Total methods:2
          Method coverage:100% (2 of 2)
          -

          Metrics

          - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          Promote(...)100%4343100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\ExpressionPromoter.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core.Parser
           5{
           6    /// <summary>
           7    /// ExpressionPromoter
           8    /// </summary>
           9    public class ExpressionPromoter : IExpressionPromoter
           10    {
           11        private readonly NumberParser _numberParser;
           12
           13        /// <summary>
           14        /// Initializes a new instance of the <see cref="ExpressionPromoter"/> class.
           15        /// </summary>
           16        /// <param name="config">The ParsingConfig.</param>
           6617        public ExpressionPromoter(ParsingConfig config)
           6618        {
           6619            _numberParser = new NumberParser(config);
           6620        }
           21
           22        /// <inheritdoc cref="IExpressionPromoter.Promote(Expression, Type, bool, bool)"/>
           23        public virtual Expression Promote(Expression expr, Type type, bool exact, bool convertExpr)
           444324        {
           444325            if (expr.Type == type || type.IsGenericParameter)
           86426            {
           86427                return expr;
           28            }
           29
           357930            if (expr is ConstantExpression ce)
           98731            {
           98732                if (Constants.IsNull(ce))
           6833                {
           6834                    if (!type.GetTypeInfo().IsValueType || TypeHelper.IsNullableType(type))
           4035                    {
           4036                        return Expression.Constant(null, type);
           37                    }
           2838                }
           39                else
           91940                {
           91941                    if (ConstantExpressionHelper.TryGetText(ce, out string text))
           77542                    {
           77543                        Type target = TypeHelper.GetNonNullableType(type);
           77544                        object value = null;
           45
           46#if !(NETFX_CORE || WINDOWS_APP || UAP10_0 || NETSTANDARD)
           77547                        switch (Type.GetTypeCode(ce.Type))
           48                        {
           49                            case TypeCode.Int32:
           50                            case TypeCode.UInt32:
           51                            case TypeCode.Int64:
           52                            case TypeCode.UInt64:
           72853                                value = _numberParser.ParseNumber(text, target);
           54
           55                                // Make sure an enum value stays an enum value
           72856                                if (target.IsEnum)
           357                                {
           358                                    value = Enum.ToObject(target, value);
           359                                }
           72860                                break;
           61
           62                            case TypeCode.Double:
           2763                                if (target == typeof(decimal) || target == typeof(double))
           964                                {
           965                                    value = _numberParser.ParseNumber(text, target);
           966                                }
           2767                                break;
           68
           69                            case TypeCode.String:
           1970                                value = TypeHelper.ParseEnum(text, target);
           1971                                break;
           72                        }
           73#else
           74                        if (ce.Type == typeof(int) || ce.Type == typeof(uint) || ce.Type == typeof(long) || ce.Type == t
           75                        {
           76                            // If target is an enum value, just use the Value from the ConstantExpression
           77                            if (target.GetTypeInfo().IsEnum)
           78                            {
           79                                value = Enum.ToObject(target, ce.Value);
           80                            }
           81                            else
           82                            {
           83                                value = _numberParser.ParseNumber(text, target);
           84                            }
           85                        }
           86                        else if (ce.Type == typeof(double))
           87                        {
           88                            if (target == typeof(decimal) || target == typeof(double))
           89                            {
           90                                value = _numberParser.ParseNumber(text, target);
           91                            }
           92                        }
           93                        else if (ce.Type == typeof(string))
           94                        {
           95                            value = TypeHelper.ParseEnum(text, target);
           96                        }
           97#endif
           77598                        if (value != null)
           67399                        {
           673100                            return Expression.Constant(value, type);
           101                        }
           102102                    }
           246103                }
           274104            }
           105
           2866106            if (TypeHelper.IsCompatibleWith(expr.Type, type))
           1354107            {
           1354108                if (type == typeof(decimal) && TypeHelper.IsEnumType(expr.Type))
           2109                {
           2110                    return Expression.Convert(Expression.Convert(expr, Enum.GetUnderlyingType(expr.Type)), type);
           111                }
           112
           1352113                if (type.GetTypeInfo().IsValueType || exact || expr.Type.GetTypeInfo().IsValueType && convertExpr)
           1293114                {
           1293115                    return Expression.Convert(expr, type);
           116                }
           117
           59118                return expr;
           119            }
           120
           1512121            return null;
           4443122        }
           123    }
           124}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ExtensibilityPoint.html b/report/coverlet/System.Linq.Dynamic.Core_ExtensibilityPoint.html deleted file mode 100644 index b69f48ff..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ExtensibilityPoint.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.ExtensibilityPoint - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.ExtensibilityPoint
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ExtensibilityPoint.cs
          Covered lines:1
          Uncovered lines:0
          Coverable lines:1
          Total lines:17
          Line coverage:100% (1 of 1)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ExtensibilityPoint.cs

          - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2
           3namespace System.Linq.Dynamic.Core
           4{
           5    /// <summary>
           6    /// Extensibility point: If you want to modify expanded queries before executing them
           7    /// set your own functionality to override empty QueryOptimizer
           8    /// </summary>
           9    public class ExtensibilityPoint
           10    {
           11        /// <summary>
           12        /// Place to optimize your queries. Example: Add a reference to Nuget package Linq.Expression.Optimizer
           13        /// and in your program initializers set Extensibility.QueryOptimizer = ExpressionOptimizer.visit;
           14        /// </summary>
           70415        public static Func<Expression, Expression> QueryOptimizer = e => e;
           16    }
           17}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_GroupResult.html b/report/coverlet/System.Linq.Dynamic.Core_GroupResult.html deleted file mode 100644 index 0210d953..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_GroupResult.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.GroupResult - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.GroupResult
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\GroupResult.cs
          Covered lines:7
          Uncovered lines:0
          Coverable lines:7
          Total lines:47
          Line coverage:100% (7 of 7)
          Covered branches:0
          Total branches:0
          Covered methods:5
          Total methods:5
          Method coverage:100% (5 of 5)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ToString()100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\GroupResult.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections;
           2using System.Collections.Generic;
           3using System.Globalization;
           4
           5namespace System.Linq.Dynamic.Core
           6{
           7    /// <summary>
           8    /// The result of a call to a <see cref="DynamicQueryableExtensions"/>.GroupByMany() overload.
           9    /// </summary>
           10    public class GroupResult
           11    {
           12        /// <summary>
           13        /// The key value of the group.
           14        /// </summary>
           15#if NET35 || SILVERLIGHT
           16        public object Key { get; internal set; }
           17#else
           1518        public dynamic Key { get; internal set; }
           19#endif
           20
           21        /// <summary>
           22        /// The number of resulting elements in the group.
           23        /// </summary>
           1524        public int Count { get; internal set; }
           25
           26        /// <summary>
           27        /// The resulting elements in the group.
           28        /// </summary>
           1329        public IEnumerable Items { get; internal set; }
           30
           31        /// <summary>
           32        /// The resulting subgroups in the group.
           33        /// </summary>
           1734        public IEnumerable<GroupResult> Subgroups { get; internal set; }
           35
           36        /// <summary>
           37        /// Returns a <see cref="System.String" /> showing the key of the group and the number of items in the group.
           38        /// </summary>
           39        /// <returns>
           40        /// A <see cref="System.String" /> that represents this instance.
           41        /// </returns>
           42        public override string ToString()
           243        {
           244            return string.Format(CultureInfo.CurrentCulture, "{0} ({1})", ((object)Key).ToString(), Count);
           245        }
           46    }
           47}
          -
          -
          -
          -

          Methods/Properties

          -Key()
          -Count()
          -Items()
          -Subgroups()
          -ToString()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_KeywordsHelper.html b/report/coverlet/System.Linq.Dynamic.Core_KeywordsHelper.html deleted file mode 100644 index 4889e7b1..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_KeywordsHelper.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.KeywordsHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.KeywordsHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\KeywordsHelper.cs
          Covered lines:55
          Uncovered lines:0
          Coverable lines:55
          Total lines:89
          Line coverage:100% (55 of 55)
          Covered branches:16
          Total branches:16
          Branch coverage:100% (16 of 16)
          Covered methods:2
          Total methods:2
          Method coverage:100% (2 of 2)
          -

          Metrics

          - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%1616100%
          TryGetValue(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\KeywordsHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Linq.Expressions;
           3
           4namespace System.Linq.Dynamic.Core.Parser
           5{
           6    internal class KeywordsHelper : IKeywordsHelper
           7    {
           8        public const string SYMBOL_IT = "$";
           9        public const string SYMBOL_PARENT = "^";
           10        public const string SYMBOL_ROOT = "~";
           11
           12        public const string KEYWORD_IT = "it";
           13        public const string KEYWORD_PARENT = "parent";
           14        public const string KEYWORD_ROOT = "root";
           15
           16        public const string FUNCTION_IIF = "iif";
           17        public const string FUNCTION_ISNULL = "isnull";
           18        public const string FUNCTION_NEW = "new";
           19        public const string FUNCTION_NULLPROPAGATION = "np";
           20        public const string FUNCTION_IS = "is";
           21        public const string FUNCTION_AS = "as";
           22        public const string FUNCTION_CAST = "cast";
           23
           97324        private readonly IDictionary<string, object> _keywords = new Dictionary<string, object>(StringComparer.OrdinalIg
           97325        {
           97326            { "true", Expression.Constant(true) },
           97327            { "false", Expression.Constant(false) },
           97328            { "null", Expression.Constant(null) }
           97329        };
           30
           97331        public KeywordsHelper(ParsingConfig config)
           97332        {
           97333            if (config.AreContextKeywordsEnabled)
           97334            {
           97335                _keywords.Add(KEYWORD_IT, KEYWORD_IT);
           97336                _keywords.Add(KEYWORD_PARENT, KEYWORD_PARENT);
           97337                _keywords.Add(KEYWORD_ROOT, KEYWORD_ROOT);
           97338            }
           39
           97340            _keywords.Add(SYMBOL_IT, SYMBOL_IT);
           97341            _keywords.Add(SYMBOL_PARENT, SYMBOL_PARENT);
           97342            _keywords.Add(SYMBOL_ROOT, SYMBOL_ROOT);
           43
           97344            _keywords.Add(FUNCTION_IIF, FUNCTION_IIF);
           97345            _keywords.Add(FUNCTION_ISNULL, FUNCTION_ISNULL);
           97346            _keywords.Add(FUNCTION_NEW, FUNCTION_NEW);
           97347            _keywords.Add(FUNCTION_NULLPROPAGATION, FUNCTION_NULLPROPAGATION);
           97348            _keywords.Add(FUNCTION_IS, FUNCTION_IS);
           97349            _keywords.Add(FUNCTION_AS, FUNCTION_AS);
           97350            _keywords.Add(FUNCTION_CAST, FUNCTION_CAST);
           51
           8854352            foreach (Type type in PredefinedTypesHelper.PredefinedTypes.OrderBy(kvp => kvp.Value).Select(kvp => kvp.Key)
           2140653            {
           2140654                if (!string.IsNullOrEmpty(type.FullName))
           2140655                {
           2140656                    _keywords[type.FullName] = type;
           2140657                }
           2140658                _keywords[type.Name] = type;
           2140659            }
           60
           1848761            foreach (var pair in PredefinedTypesHelper.PredefinedTypesShorthands)
           778462            {
           778463                _keywords.Add(pair.Key, pair.Value);
           778464            }
           65
           97366            if (config.SupportEnumerationsFromSystemNamespace)
           97167            {
           57774568                foreach (var pair in EnumerationsFromMscorlib.PredefinedEnumerationTypes)
           28741669                {
           28741670                    _keywords.Add(pair.Key, pair.Value);
           28741671                }
           97172            }
           73
           97374            if (config.CustomTypeProvider != null)
           97375            {
           1069576                foreach (Type type in config.CustomTypeProvider.GetCustomTypes())
           388877                {
           388878                    _keywords[type.FullName] = type;
           388879                    _keywords[type.Name] = type;
           388880                }
           97381            }
           97382        }
           83
           84        public bool TryGetValue(string name, out object type)
           171485        {
           171486            return _keywords.TryGetValue(name, out type);
           171487        }
           88    }
           89}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_LambdaExpressionExtensions.html b/report/coverlet/System.Linq.Dynamic.Core_LambdaExpressionExtensions.html deleted file mode 100644 index e73277f4..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_LambdaExpressionExtensions.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -System.Linq.Expressions.LambdaExpressionExtensions - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Expressions.LambdaExpressionExtensions
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\LambdaExpressionExtensions.cs
          Covered lines:3
          Uncovered lines:0
          Coverable lines:3
          Total lines:15
          Line coverage:100% (3 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetReturnType(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Compatibility\LambdaExpressionExtensions.cs

          - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1// ReSharper disable once CheckNamespace
           2namespace System.Linq.Expressions
           3{
           4    internal static class LambdaExpressionExtensions
           5    {
           6        public static Type GetReturnType(this LambdaExpression lambdaExpression)
           57        {
           8#if !NET35
           59            return lambdaExpression.ReturnType;
           10#else
           11            return lambdaExpression.Body.Type;
           12#endif
           513        }
           14    }
           15}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_MethodData.html b/report/coverlet/System.Linq.Dynamic.Core_MethodData.html deleted file mode 100644 index 3ad20a18..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_MethodData.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\SupportedMethods\MethodData.cs
          Covered lines:3
          Uncovered lines:0
          Coverable lines:3
          Total lines:12
          Line coverage:100% (3 of 3)
          Covered branches:0
          Total branches:0
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\SupportedMethods\MethodData.cs

          - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core.Parser.SupportedMethods
           5{
           6    internal class MethodData
           7    {
           76348        public MethodBase MethodBase { get; set; }
           298779        public ParameterInfo[] Parameters { get; set; }
           187010        public Expression[] Args { get; set; }
           11    }
           12}
          -
          -
          -
          -

          Methods/Properties

          -MethodBase()
          -Parameters()
          -Args()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_MethodFinder.html b/report/coverlet/System.Linq.Dynamic.Core_MethodFinder.html deleted file mode 100644 index 36eed9eb..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_MethodFinder.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\SupportedMethods\MethodFinder.cs
          Covered lines:200
          Uncovered lines:10
          Coverable lines:210
          Total lines:324
          Line coverage:95.2% (200 of 210)
          Covered branches:107
          Total branches:116
          Branch coverage:92.2% (107 of 116)
          Covered methods:11
          Total methods:11
          Method coverage:100% (11 of 11)
          -

          Metrics

          - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          ContainsMethod(...)100%11100%
          FindMethod(...)94.44%181897.22%
          FindBestMethodBasedOnArguments(...)71.42%141488%
          FindIndexer(...)50%6678.94%
          IsApplicable(...)97.22%363696.07%
          FirstIsBetterThanSecond(...)100%1212100%
          CompareConversions(...)100%2222100%
          SelfAndBaseTypes(...)100%22100%
          SelfAndBaseClasses()100%22100%
          AddInterface(...)100%44100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\SupportedMethods\MethodFinder.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Linq.Expressions;
           3using System.Reflection;
           4
           5namespace System.Linq.Dynamic.Core.Parser.SupportedMethods
           6{
           7    internal class MethodFinder
           8    {
           9        private readonly ParsingConfig _parsingConfig;
           10
           11        /// <summary>
           12        /// Get an instance
           13        /// </summary>
           14        /// <param name="parsingConfig"></param>
           97115        public MethodFinder(ParsingConfig parsingConfig)
           97116        {
           97117            _parsingConfig = parsingConfig;
           97118        }
           19
           20        public bool ContainsMethod(Type type, string methodName, bool staticAccess, Expression instance, ref Expression[
           47521        {
           22            // NOTE: `instance` is not passed by ref in the method signature by design. The ContainsMethod should not ch
           23            // However, args by reference is required for backward compatibility (removing "ref" will break some tests)
           24
           47525            return FindMethod(type, methodName, staticAccess, ref instance, ref args, out _) == 1;
           47526        }
           27
           28        public int FindMethod(Type type, string methodName, bool staticAccess, ref Expression instance, ref Expression[]
           55229        {
           30#if !(NETFX_CORE || WINDOWS_APP ||  UAP10_0 || NETSTANDARD)
           55231            BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly | (staticAccess ? BindingFlags.Static :
           297732            foreach (Type t in SelfAndBaseTypes(type))
           87033            {
           87034                MemberInfo[] members = t.FindMembers(MemberTypes.Method, flags, Type.FilterNameIgnoreCase, methodName);
           87035                int count = FindBestMethodBasedOnArguments(members.Cast<MethodBase>(), ref args, out method);
           87036                if (count != 0)
           41937                {
           41938                    return count;
           39                }
           45140            }
           41#else
           42            foreach (Type t in SelfAndBaseTypes(type))
           43            {
           44                var methods = t.GetTypeInfo().DeclaredMethods.Where(m => (m.IsStatic || !staticAccess) && m.Name.Equals(
           45                int count = FindBestMethodBasedOnArguments(methods, ref args, out method);
           46                if (count != 0)
           47                {
           48                    return count;
           49                }
           50            }
           51#endif
           52
           13353            if (instance != null)
           854            {
           55                // Try to solve with registered extension methods from this type and all base types
           856                var methods = new List<MethodInfo>();
           6057                foreach (var t in SelfAndBaseTypes(type))
           1858                {
           1859                    if (_parsingConfig.CustomTypeProvider.GetExtensionMethods().TryGetValue(t, out var extensionMethodsO
           560                    {
           1461                        methods.AddRange(extensionMethodsOfType.Where(m => m.Name.Equals(methodName, StringComparison.Or
           562                    }
           1863                }
           64
           865                if (methods.Any())
           566                {
           567                    var argsList = args.ToList();
           568                    argsList.Insert(0, instance);
           69
           570                    var extensionMethodArgs = argsList.ToArray();
           571                    int count = FindBestMethodBasedOnArguments(methods.Cast<MethodBase>(), ref extensionMethodArgs, out 
           572                    if (count != 0)
           573                    {
           574                        instance = null;
           575                        args = extensionMethodArgs;
           576                        return count;
           77                    }
           078                }
           379            }
           80
           12881            method = null;
           12882            return 0;
           55283        }
           84
           85        public int FindBestMethodBasedOnArguments(IEnumerable<MethodBase> methods, ref Expression[] args, out MethodBase
           88886        {
           87            // Passing args by reference is now required with the params array support.
           88888            var inlineArgs = args;
           89
           88890            MethodData[] applicable = methods
           309491                .Select(m => new MethodData { MethodBase = m, Parameters = m.GetParameters() })
           309492                .Where(m => IsApplicable(m, inlineArgs))
           88893                .ToArray();
           94
           88895            if (applicable.Length > 1)
           18396            {
           401297                applicable = applicable.Where(m => applicable.All(n => m == n || FirstIsBetterThanSecond(inlineArgs, m, 
           18398            }
           99
           888100            if (args.Length == 2 && applicable.Length > 1 && (args[0].Type == typeof(Guid?) || args[1].Type == typeof(Gu
           0101            {
           0102                applicable = applicable.Take(1).ToArray();
           0103            }
           104
           888105            if (applicable.Length == 1)
           430106            {
           430107                MethodData md = applicable[0];
           430108                method = md.MethodBase;
           430109                args = md.Args;
           430110            }
           111            else
           458112            {
           458113                method = null;
           458114            }
           115
           888116            return applicable.Length;
           888117        }
           118
           119        public int FindIndexer(Type type, Expression[] args, out MethodBase method)
           1120        {
           4121            foreach (Type t in SelfAndBaseTypes(type))
           1122            {
           1123                MemberInfo[] members = t.GetDefaultMembers();
           1124                if (members.Length != 0)
           1125                {
           1126                    IEnumerable<MethodBase> methods = members.OfType<PropertyInfo>().
           1127#if !(NETFX_CORE || WINDOWS_APP ||  UAP10_0 || NETSTANDARD)
           2128                        Select(p => (MethodBase)p.GetGetMethod()).
           3129                        Where(m => m != null);
           130#else
           131                    Select(p => (MethodBase)p.GetMethod);
           132#endif
           1133                    int count = FindBestMethodBasedOnArguments(methods, ref args, out method);
           1134                    if (count != 0)
           1135                    {
           1136                        return count;
           137                    }
           0138                }
           0139            }
           140
           0141            method = null;
           0142            return 0;
           1143        }
           144
           145        bool IsApplicable(MethodData method, Expression[] args)
           3094146        {
           3094147            bool isParamArray = method.Parameters.Length > 0 && method.Parameters.Last().IsDefined(typeof(ParamArrayAttr
           148
           149            // if !paramArray, the number of parameter must be equal
           150            // if paramArray, the last parameter is optional
           3094151            if ((!isParamArray && method.Parameters.Length != args.Length) ||
           3094152                (isParamArray && method.Parameters.Length - 1 > args.Length))
           175153            {
           175154                return false;
           155            }
           156
           2919157            Expression[] promotedArgs = new Expression[method.Parameters.Length];
           11106158            for (int i = 0; i < method.Parameters.Length; i++)
           4113159            {
           4113160                if (isParamArray && i == method.Parameters.Length - 1)
           13161                {
           13162                    if (method.Parameters.Length == args.Length + 1
           13163                        || (method.Parameters.Length == args.Length && args[i] is ConstantExpression constantExpression 
           4164                    {
           4165                        promotedArgs[promotedArgs.Length - 1] = Expression.Constant(null, method.Parameters.Last().Param
           4166                    }
           9167                    else if (method.Parameters.Length == args.Length && method.Parameters.Last().ParameterType == args.L
           1168                    {
           1169                        promotedArgs[promotedArgs.Length - 1] = args.Last();
           1170                    }
           171                    else
           8172                    {
           8173                        var paramType = method.Parameters.Last().ParameterType;
           8174                        var paramElementType = paramType.GetElementType();
           175
           8176                        var arrayInitializerExpressions = new List<Expression>();
           177
           30178                        for (int j = method.Parameters.Length - 1; j < args.Length; j++)
           10179                        {
           10180                            Expression promoted = _parsingConfig.ExpressionPromoter.Promote(args[j], paramElementType, f
           10181                            if (promoted == null)
           3182                            {
           3183                                return false;
           184                            }
           185
           7186                            arrayInitializerExpressions.Add(promoted);
           7187                        }
           188
           5189                        var paramExpression = Expression.NewArrayInit(paramElementType, arrayInitializerExpressions);
           190
           5191                        promotedArgs[promotedArgs.Length - 1] = paramExpression;
           5192                    }
           10193                }
           194                else
           4100195                {
           4100196                    ParameterInfo pi = method.Parameters[i];
           4100197                    if (pi.IsOut)
           0198                    {
           0199                        return false;
           200                    }
           201
           4100202                    Expression promoted = _parsingConfig.ExpressionPromoter.Promote(args[i], pi.ParameterType, false, me
           4100203                    if (promoted == null)
           1476204                    {
           1476205                        return false;
           206                    }
           2624207                    promotedArgs[i] = promoted;
           2624208                }
           2634209            }
           210
           1440211            method.Args = promotedArgs;
           1440212            return true;
           3094213        }
           214
           215        bool FirstIsBetterThanSecond(Expression[] args, MethodData first, MethodData second)
           2389216        {
           217            // If args count is 0 -> parameterless method is better than method method with parameters
           2389218            if (args.Length == 0)
           2219            {
           2220                return first.Parameters.Length == 0 && second.Parameters.Length != 0;
           221            }
           222
           2387223            bool better = false;
           5344224            for (int i = 0; i < args.Length; i++)
           2465225            {
           2465226                CompareConversionType result = CompareConversions(args[i].Type, first.Parameters[i].ParameterType, secon
           227
           228                // If second is better, return false
           2465229                if (result == CompareConversionType.Second)
           1009230                {
           1009231                    return false;
           232                }
           233
           234                // If first is better, return true
           1456235                if (result == CompareConversionType.First)
           1171236                {
           1171237                    return true;
           238                }
           239
           240                // If both are same, just set better to true and continue
           285241                if (result == CompareConversionType.Both)
           285242                {
           285243                    better = true;
           285244                }
           285245            }
           246
           207247            return better;
           2389248        }
           249
           250        // Return "First" if s -> t1 is a better conversion than s -> t2
           251        // Return "Second" if s -> t2 is a better conversion than s -> t1
           252        // Return "Both" if neither conversion is better
           253        CompareConversionType CompareConversions(Type source, Type first, Type second)
           2465254        {
           2465255            if (first == second)
           66256            {
           66257                return CompareConversionType.Both;
           258            }
           2399259            if (source == first)
           733260            {
           733261                return CompareConversionType.First;
           262            }
           1666263            if (source == second)
           688264            {
           688265                return CompareConversionType.Second;
           266            }
           267
           978268            bool firstIsCompatibleWithSecond = TypeHelper.IsCompatibleWith(first, second);
           978269            bool secondIsCompatibleWithFirst = TypeHelper.IsCompatibleWith(second, first);
           270
           978271            if (firstIsCompatibleWithSecond && !secondIsCompatibleWithFirst)
           358272            {
           358273                return CompareConversionType.First;
           274            }
           620275            if (secondIsCompatibleWithFirst && !firstIsCompatibleWithSecond)
           241276            {
           241277                return CompareConversionType.Second;
           278            }
           279
           379280            if (TypeHelper.IsSignedIntegralType(first) && TypeHelper.IsUnsignedIntegralType(second))
           80281            {
           80282                return CompareConversionType.First;
           283            }
           299284            if (TypeHelper.IsSignedIntegralType(second) && TypeHelper.IsUnsignedIntegralType(first))
           80285            {
           80286                return CompareConversionType.Second;
           287            }
           288
           219289            return CompareConversionType.Both;
           2465290        }
           291
           292        IEnumerable<Type> SelfAndBaseTypes(Type type)
           561293        {
           561294            if (type.GetTypeInfo().IsInterface)
           360295            {
           360296                var types = new List<Type>();
           360297                AddInterface(types, type);
           360298                return types;
           299            }
           201300            return SelfAndBaseClasses(type);
           561301        }
           302
           303        IEnumerable<Type> SelfAndBaseClasses(Type type)
           201304        {
           552305            while (type != null)
           424306            {
           424307                yield return type;
           351308                type = type.GetTypeInfo().BaseType;
           351309            }
           128310        }
           311
           312        void AddInterface(List<Type> types, Type type)
           550313        {
           550314            if (!types.Contains(type))
           493315            {
           493316                types.Add(type);
           1859317                foreach (Type t in type.GetInterfaces())
           190318                {
           190319                    AddInterface(types, t);
           190320                }
           493321            }
           550322        }
           323    }
           324}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_NumberParser.html b/report/coverlet/System.Linq.Dynamic.Core_NumberParser.html deleted file mode 100644 index 646ca156..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_NumberParser.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.NumberParser - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.NumberParser
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\NumberParser.cs
          Covered lines:112
          Uncovered lines:18
          Coverable lines:130
          Total lines:300
          Line coverage:86.1% (112 of 130)
          Covered branches:90
          Total branches:102
          Branch coverage:88.2% (90 of 102)
          Covered methods:6
          Total methods:7
          Method coverage:85.7% (6 of 7)
          -

          Metrics

          - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          .ctor(...)100%44100%
          ParseIntegerLiteral(...)93.1%585891.35%
          ParseRealLiteral(...)100%2020100%
          TryParseNumber(...)100%110%
          ParseNumber(...)75%121285%
          ParseAsBinary(...)37.5%8855.55%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\NumberParser.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Globalization;
           3using System.Linq.Dynamic.Core.Exceptions;
           4using System.Linq.Dynamic.Core.Validation;
           5using System.Linq.Expressions;
           6using System.Text.RegularExpressions;
           7
           8namespace System.Linq.Dynamic.Core.Parser
           9{
           10    /// <summary>
           11    /// NumberParser
           12    /// </summary>
           13    public class NumberParser
           14    {
           115        private static readonly Regex RegexBinary32 = new Regex("^[01]{1,32}$", RegexOptions.Compiled);
           116        private static readonly Regex RegexBinary64 = new Regex("^[01]{1,64}$", RegexOptions.Compiled);
           117        private static readonly char[] Qualifiers = new[] { 'U', 'u', 'L', 'l', 'F', 'f', 'D', 'd', 'M', 'm' };
           118        private static readonly char[] QualifiersHex = new[] { 'U', 'u', 'L', 'l' };
           119        private static readonly string[] QualifiersReal = new[] { "F", "f", "D", "d", "M", "m" };
           20
           21        private readonly CultureInfo _culture;
           22
           23        /// <summary>
           24        /// Initializes a new instance of the <see cref="NumberParser"/> class.
           25        /// </summary>
           26        /// <param name="config">The ParsingConfig.</param>
           109227        public NumberParser([CanBeNull] ParsingConfig config)
           109228        {
           109229            _culture = config?.NumberParseCulture ?? CultureInfo.InvariantCulture;
           109230        }
           31
           32        /// <summary>
           33        /// Tries to parse the text into a IntegerLiteral ConstantExpression.
           34        /// </summary>
           35        /// <param name="tokenPosition">The current token position (needed for error reporting).</param>
           36        /// <param name="text">The text.</param>
           37        public Expression ParseIntegerLiteral(int tokenPosition, string text)
           38838        {
           38839            Check.NotEmpty(text, nameof(text));
           40
           38841            var last = text[text.Length - 1];
           38842            var isNegative = text[0] == '-';
           38843            var isHexadecimal = text.StartsWith(isNegative ? "-0x" : "0x", StringComparison.OrdinalIgnoreCase);
           38844            var isBinary = text.StartsWith(isNegative ? "-0b" : "0b", StringComparison.OrdinalIgnoreCase);
           38845            var qualifiers = isHexadecimal ? QualifiersHex : Qualifiers;
           46
           38847            string qualifier = null;
           38848            if (qualifiers.Contains(last))
           5049            {
           10050                int pos = text.Length - 1, count = 0;
           10551                while (qualifiers.Contains(text[pos]))
           5552                {
           5553                    ++count;
           5554                    --pos;
           5555                }
           5056                qualifier = text.Substring(text.Length - count, count);
           5057                text = text.Substring(0, text.Length - count);
           5058            }
           59
           38860            if (!isNegative)
           36261            {
           36262                if (isHexadecimal || isBinary)
           863                {
           864                    text = text.Substring(2);
           865                }
           66
           36267                if (isBinary)
           268                {
           269                    return ParseAsBinary(tokenPosition, text, isNegative);
           70                }
           71
           36072                if (!ulong.TryParse(text, isHexadecimal ? NumberStyles.HexNumber : NumberStyles.Integer, _culture, out u
           073                {
           074                    throw new ParseException(string.Format(_culture, Res.InvalidIntegerLiteral, text), tokenPosition);
           75                }
           76
           36077                if (!string.IsNullOrEmpty(qualifier))
           3178                {
           3179                    if (qualifier == "U" || qualifier == "u")
           480                    {
           481                        return ConstantExpressionHelper.CreateLiteral((uint)unsignedValue, text);
           82                    }
           83
           2784                    if (qualifier == "L" || qualifier == "l")
           485                    {
           486                        return ConstantExpressionHelper.CreateLiteral((long)unsignedValue, text);
           87                    }
           88
           2389                    if (QualifiersReal.Contains(qualifier))
           1990                    {
           1991                        return ParseRealLiteral(text, qualifier[0], false);
           92                    }
           93
           494                    return ConstantExpressionHelper.CreateLiteral(unsignedValue, text);
           95                }
           96
           32997                if (unsignedValue <= int.MaxValue)
           32698                {
           32699                    return ConstantExpressionHelper.CreateLiteral((int)unsignedValue, text);
           100                }
           101
           3102                if (unsignedValue <= uint.MaxValue)
           0103                {
           0104                    return ConstantExpressionHelper.CreateLiteral((uint)unsignedValue, text);
           105                }
           106
           3107                if (unsignedValue <= long.MaxValue)
           1108                {
           1109                    return ConstantExpressionHelper.CreateLiteral((long)unsignedValue, text);
           110                }
           111
           2112                return ConstantExpressionHelper.CreateLiteral(unsignedValue, text);
           113            }
           114
           26115            if (isHexadecimal || isBinary)
           4116            {
           4117                text = text.Substring(3);
           4118            }
           119
           26120            if (isBinary)
           1121            {
           1122                return ParseAsBinary(tokenPosition, text, isNegative);
           123            }
           124
           25125            if (!long.TryParse(text, isHexadecimal ? NumberStyles.HexNumber : NumberStyles.Integer, _culture, out long v
           0126            {
           0127                throw new ParseException(string.Format(_culture, Res.InvalidIntegerLiteral, text), tokenPosition);
           128            }
           129
           25130            if (isHexadecimal)
           3131            {
           3132                value = -value;
           3133            }
           134
           25135            if (!string.IsNullOrEmpty(qualifier))
           19136            {
           19137                if (qualifier == "L" || qualifier == "l")
           4138                {
           4139                    return ConstantExpressionHelper.CreateLiteral(value, text);
           140                }
           141
           15142                if (QualifiersReal.Contains(qualifier))
           14143                {
           14144                    return ParseRealLiteral(text, qualifier[0], false);
           145                }
           146
           1147                throw new ParseException(Res.MinusCannotBeAppliedToUnsignedInteger, tokenPosition);
           148            }
           149
           6150            if (value <= int.MaxValue)
           6151            {
           6152                return ConstantExpressionHelper.CreateLiteral((int)value, text);
           153            }
           154
           0155            return ConstantExpressionHelper.CreateLiteral(value, text);
           387156        }
           157
           158        /// <summary>
           159        /// Parse the text into a Real ConstantExpression.
           160        /// </summary>
           161        public Expression ParseRealLiteral(string text, char qualifier, bool stripQualifier)
           65162        {
           65163            switch (qualifier)
           164            {
           165                case 'f':
           166                case 'F':
           18167                    return ConstantExpressionHelper.CreateLiteral(ParseNumber(stripQualifier ? text.Substring(0, text.Le
           168
           169                case 'm':
           170                case 'M':
           16171                    return ConstantExpressionHelper.CreateLiteral(ParseNumber(stripQualifier ? text.Substring(0, text.Le
           172
           173                case 'd':
           174                case 'D':
           22175                    return ConstantExpressionHelper.CreateLiteral(ParseNumber(stripQualifier ? text.Substring(0, text.Le
           176
           177                default:
           9178                    return ConstantExpressionHelper.CreateLiteral(ParseNumber(text, typeof(double)), text);
           179            }
           65180        }
           181
           182        /// <summary>
           183        /// Tries to parse the number (text) into the specified type.
           184        /// </summary>
           185        /// <param name="text">The text.</param>
           186        /// <param name="type">The type.</param>
           187        /// <param name="result">The result.</param>
           188        public bool TryParseNumber(string text, Type type, out object result)
           0189        {
           0190            result = ParseNumber(text, type);
           0191            return type != null;
           0192        }
           193
           194        /// <summary>
           195        /// Parses the number (text) into the specified type.
           196        /// </summary>
           197        /// <param name="text">The text.</param>
           198        /// <param name="type">The type.</param>
           199        public object ParseNumber(string text, Type type)
           842200        {
           201            try
           842202            {
           203#if !(NETFX_CORE || WINDOWS_APP || UAP10_0 || NETSTANDARD)
           842204                switch (Type.GetTypeCode(TypeHelper.GetNonNullableType(type)))
           205                {
           206                    case TypeCode.SByte:
           2207                        return sbyte.Parse(text, _culture);
           208                    case TypeCode.Byte:
           0209                        return byte.Parse(text, _culture);
           210                    case TypeCode.Int16:
           0211                        return short.Parse(text, _culture);
           212                    case TypeCode.UInt16:
           0213                        return ushort.Parse(text, _culture);
           214                    case TypeCode.Int32:
           157215                        return int.Parse(text, _culture);
           216                    case TypeCode.UInt32:
           31217                        return uint.Parse(text, _culture);
           218                    case TypeCode.Int64:
           106219                        return long.Parse(text, _culture);
           220                    case TypeCode.UInt64:
           46221                        return ulong.Parse(text, _culture);
           222                    case TypeCode.Single:
           154223                        return float.Parse(text, _culture);
           224                    case TypeCode.Double:
           174225                        return double.Parse(text, _culture);
           226                    case TypeCode.Decimal:
           151227                        return decimal.Parse(text, _culture);
           228                }
           229#else
           230                var tp = TypeHelper.GetNonNullableType(type);
           231                if (tp == typeof(sbyte))
           232                {
           233                    return sbyte.Parse(text, _culture);
           234                }
           235                if (tp == typeof(byte))
           236                {
           237                    return byte.Parse(text, _culture);
           238                }
           239                if (tp == typeof(short))
           240                {
           241                    return short.Parse(text, _culture);
           242                }
           243                if (tp == typeof(ushort))
           244                {
           245                    return ushort.Parse(text, _culture);
           246                }
           247                if (tp == typeof(int))
           248                {
           249                    return int.Parse(text, _culture);
           250                }
           251                if (tp == typeof(uint))
           252                {
           253                    return uint.Parse(text, _culture);
           254                }
           255                if (tp == typeof(long))
           256                {
           257                    return long.Parse(text, _culture);
           258                }
           259                if (tp == typeof(ulong))
           260                {
           261                    return ulong.Parse(text, _culture);
           262                }
           263                if (tp == typeof(float))
           264                {
           265                    return float.Parse(text, _culture);
           266                }
           267                if (tp == typeof(double))
           268                {
           269                    return double.Parse(text, _culture);
           270                }
           271                if (tp == typeof(decimal))
           272                {
           273                    return decimal.Parse(text, _culture);
           274                }
           275#endif
           21276            }
           43277            catch
           43278            {
           43279                return null;
           280            }
           281
           21282            return null;
           842283        }
           284
           285        private Expression ParseAsBinary(int tokenPosition, string text, bool isNegative)
           3286        {
           3287            if (RegexBinary32.IsMatch(text))
           3288            {
           3289                return ConstantExpressionHelper.CreateLiteral((isNegative ? -1 : 1) * Convert.ToInt32(text, 2), text);
           290            }
           291
           0292            if (RegexBinary64.IsMatch(text))
           0293            {
           0294                return ConstantExpressionHelper.CreateLiteral((isNegative ? -1 : 1) * Convert.ToInt64(text, 2), text);
           295            }
           296
           0297            throw new ParseException(string.Format(_culture, Res.InvalidBinaryIntegerLiteral, text), tokenPosition);
           3298        }
           299    }
           300}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_PagedResult.html b/report/coverlet/System.Linq.Dynamic.Core_PagedResult.html deleted file mode 100644 index 6973b351..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_PagedResult.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.PagedResult - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.PagedResult
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\PagedResult.cs
          Covered lines:5
          Uncovered lines:0
          Coverable lines:5
          Total lines:64
          Line coverage:100% (5 of 5)
          Covered branches:0
          Total branches:0
          Covered methods:5
          Total methods:5
          Method coverage:100% (5 of 5)
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\PagedResult.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1
           2namespace System.Linq.Dynamic.Core
           3{
           4    /// <summary>
           5    /// PagedResult
           6    /// </summary>
           7    public class PagedResult
           8    {
           9        /// <summary>
           10        /// Gets or sets the queryable.
           11        /// </summary>
           12        /// <value>
           13        /// The queryable.
           14        /// </value>
           415        public IQueryable Queryable { get; set; }
           16
           17        /// <summary>
           18        /// Gets or sets the current page.
           19        /// </summary>
           20        /// <value>
           21        /// The current page.
           22        /// </value>
           723        public int CurrentPage { get; set; }
           24
           25        /// <summary>
           26        /// Gets or sets the page count.
           27        /// </summary>
           28        /// <value>
           29        /// The page count.
           30        /// </value>
           731        public int PageCount { get; set; }
           32
           33        /// <summary>
           34        /// Gets or sets the size of the page.
           35        /// </summary>
           36        /// <value>
           37        /// The size of the page.
           38        /// </value>
           739        public int PageSize { get; set; }
           40
           41        /// <summary>
           42        /// Gets or sets the row count.
           43        /// </summary>
           44        /// <value>
           45        /// The row count.
           46        /// </value>
           1147        public int RowCount { get; set; }
           48    }
           49
           50    /// <summary>
           51    /// PagedResult{TSource}
           52    /// </summary>
           53    /// <typeparam name="TSource">The type of the source.</typeparam>
           54    public class PagedResult<TSource> : PagedResult
           55    {
           56        /// <summary>
           57        /// Gets or sets the queryable.
           58        /// </summary>
           59        /// <value>
           60        /// The queryable.
           61        /// </value>
           62        public new IQueryable<TSource> Queryable { get; set; }
           63    }
           64}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_PagedResult_1.html b/report/coverlet/System.Linq.Dynamic.Core_PagedResult_1.html deleted file mode 100644 index cc58c5e1..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_PagedResult_1.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.PagedResult<T> - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.PagedResult<T>
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\PagedResult.cs
          Covered lines:1
          Uncovered lines:0
          Coverable lines:1
          Total lines:64
          Line coverage:100% (1 of 1)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\PagedResult.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1
           2namespace System.Linq.Dynamic.Core
           3{
           4    /// <summary>
           5    /// PagedResult
           6    /// </summary>
           7    public class PagedResult
           8    {
           9        /// <summary>
           10        /// Gets or sets the queryable.
           11        /// </summary>
           12        /// <value>
           13        /// The queryable.
           14        /// </value>
           15        public IQueryable Queryable { get; set; }
           16
           17        /// <summary>
           18        /// Gets or sets the current page.
           19        /// </summary>
           20        /// <value>
           21        /// The current page.
           22        /// </value>
           23        public int CurrentPage { get; set; }
           24
           25        /// <summary>
           26        /// Gets or sets the page count.
           27        /// </summary>
           28        /// <value>
           29        /// The page count.
           30        /// </value>
           31        public int PageCount { get; set; }
           32
           33        /// <summary>
           34        /// Gets or sets the size of the page.
           35        /// </summary>
           36        /// <value>
           37        /// The size of the page.
           38        /// </value>
           39        public int PageSize { get; set; }
           40
           41        /// <summary>
           42        /// Gets or sets the row count.
           43        /// </summary>
           44        /// <value>
           45        /// The row count.
           46        /// </value>
           47        public int RowCount { get; set; }
           48    }
           49
           50    /// <summary>
           51    /// PagedResult{TSource}
           52    /// </summary>
           53    /// <typeparam name="TSource">The type of the source.</typeparam>
           54    public class PagedResult<TSource> : PagedResult
           55    {
           56        /// <summary>
           57        /// Gets or sets the queryable.
           58        /// </summary>
           59        /// <value>
           60        /// The queryable.
           61        /// </value>
           462        public new IQueryable<TSource> Queryable { get; set; }
           63    }
           64}
          -
          -
          -
          -

          Methods/Properties

          -Queryable()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionHelper.html b/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionHelper.html deleted file mode 100644 index ce8e337a..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionHelper.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.ParameterExpressionHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.ParameterExpressionHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ParameterExpressionHelper.cs
          Covered lines:23
          Uncovered lines:0
          Coverable lines:23
          Total lines:57
          Line coverage:100% (23 of 23)
          Covered branches:10
          Total branches:10
          Branch coverage:100% (10 of 10)
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          Metrics

          - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          CreateParameterExpression(...)100%44100%
          IsNullOrWhiteSpace(...)100%66100%
          GenerateRandomWord()100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ParameterExpressionHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2
           3namespace System.Linq.Dynamic.Core
           4{
           5    internal static class ParameterExpressionHelper
           6    {
           7        public static ParameterExpression CreateParameterExpression(Type type, string name, bool renameEmpty = false)
           10688        {
           10689            string paramName = name;
           106810            if (renameEmpty && IsNullOrWhiteSpace(paramName))
           2411            {
           2412                paramName = GenerateRandomWord();
           2413            }
           106814            return Expression.Parameter(type, paramName);
           106815        }
           16
           17        /// <summary>
           18        /// Indicates whether a specified string is null, empty, or consists only of white-space
           19        /// characters.
           20        ///
           21        /// Recreates the same functionality as System.String.IsNullOrWhiteSpace but included here
           22        /// for compatibility with net35.
           23        /// </summary>
           24        /// <param name="value">
           25        /// The string to test.
           26        /// </param>
           27        /// <returns>
           28        /// true if the value parameter is null or System.String.Empty, or if value consists
           29        /// exclusively of white-space characters.
           30        /// </returns>
           31        internal static bool IsNullOrWhiteSpace(string value)
           6332        {
           6333            if (value == null)
           134            {
           135                return true;
           36            }
           14837            for (int i = 0; i < value.Length; i++)
           4338            {
           4339                if (!char.IsWhiteSpace(value[i]))
           3140                {
           3141                    return false;
           42                }
           1243            }
           3144            return true;
           6345        }
           46
           47        /// <summary>
           48        /// Generates a random 16 character word derived from a Guid value.
           49        /// </summary>
           50        internal static string GenerateRandomWord()
           2551        {
           52            const int wordLength = 16;
           53            const int diff = 'A' - '0';
           42554            return string.Concat(Guid.NewGuid().ToString(@"N").Select(c => (char)(c + diff)).Take(wordLength)).ToLower()
           2555        }
           56    }
           57}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionRenamer.html b/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionRenamer.html deleted file mode 100644 index e7411d7c..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ParameterExpressionRenamer.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\ParameterExpressionRenamer.cs
          Covered lines:24
          Uncovered lines:2
          Coverable lines:26
          Total lines:74
          Line coverage:92.3% (24 of 26)
          Covered branches:3
          Total branches:4
          Branch coverage:75% (3 of 4)
          Covered methods:4
          Total methods:4
          Method coverage:100% (4 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          .ctor(...)100%11100%
          Rename(...)100%11100%
          VisitParameter(...)75%4481.81%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\ParameterExpressionRenamer.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Linq.Dynamic.Core.Validation;
           3using System.Linq.Expressions;
           4
           5namespace System.Linq.Dynamic.Core.Util
           6{
           7    /// <summary>
           8    /// Renames a single (Typed)ParameterExpression in an Expression.
           9    /// </summary>
           10    /// <seealso cref="ExpressionVisitor" />
           11    internal class ParameterExpressionRenamer : ExpressionVisitor
           12    {
           13        private readonly string _newName;
           14        private readonly string _oldName;
           15
           16        private ParameterExpression _parameterExpression;
           17
           18        /// <summary>
           19        /// Initializes a new instance of the <see cref="ParameterExpressionRenamer"/> class.
           20        /// </summary>
           21        /// <param name="newName">The new name (the oldName is assumed to be "").</param>
           522        public ParameterExpressionRenamer([NotNull] string newName) : this("", newName)
           523        {
           524        }
           25
           26        /// <summary>
           27        /// Initializes a new instance of the <see cref="ParameterExpressionRenamer"/> class.
           28        /// </summary>
           29        /// <param name="oldName">The old name.</param>
           30        /// <param name="newName">The new name.</param>
           731        public ParameterExpressionRenamer([NotNull] string oldName, [NotNull] string newName)
           732        {
           733            Check.NotNull(oldName, nameof(oldName));
           734            Check.NotEmpty(newName, nameof(newName));
           35
           736            _oldName = oldName;
           737            _newName = newName;
           738        }
           39
           40        /// <summary>
           41        /// Renames a single (Typed)ParameterExpression from specified expression.
           42        /// </summary>
           43        /// <param name="expression">The expression.</param>
           44        /// <param name="parameterExpression">The new generated (Typed)ParameterExpression.</param>
           45        /// <returns>Renamed Expression</returns>
           46        public Expression Rename(Expression expression, out ParameterExpression parameterExpression)
           747        {
           748            var visitedExpression = Visit(expression);
           49
           750            parameterExpression = _parameterExpression;
           51
           752            return visitedExpression;
           753        }
           54
           55        /// <inheritdoc cref="ExpressionVisitor.VisitParameter"/>
           56        protected override Expression VisitParameter(ParameterExpression node)
           757        {
           758            if (string.Equals(_oldName, node.Name, StringComparison.Ordinal))
           759            {
           760                if (_parameterExpression == null)
           661                {
           662                    _parameterExpression = ParameterExpressionHelper.CreateParameterExpression(node.Type, _newName);
           663                }
           64
           765                return _parameterExpression;
           66                // throw new InvalidOperationException($"The {nameof(ParameterExpressionRenamer)} can only rename 1 (Typ
           67            }
           68            else
           069            {
           070                return node;
           71            }
           772        }
           73    }
           74}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ParseException.html b/report/coverlet/System.Linq.Dynamic.Core_ParseException.html deleted file mode 100644 index 5d215647..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ParseException.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Exceptions.ParseException - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Exceptions.ParseException
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Exceptions\ParseException.cs
          Covered lines:4
          Uncovered lines:12
          Coverable lines:16
          Total lines:66
          Line coverage:25% (4 of 16)
          Covered branches:0
          Total branches:0
          Covered methods:1
          Total methods:5
          Method coverage:20% (1 of 5)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          ToString()100%110%
          .ctor(...)100%110%
          GetObjectData(...)100%110%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Exceptions\ParseException.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Globalization;
           2
           3#if !(SILVERLIGHT || WINDOWS_APP ||  UAP10_0 || NETSTANDARD || PORTABLE || WPSL)
           4using System.Runtime.Serialization;
           5#endif
           6
           7namespace System.Linq.Dynamic.Core.Exceptions
           8{
           9    /// <summary>
           10    /// Represents errors that occur while parsing dynamic linq string expressions.
           11    /// </summary>
           12#if !(SILVERLIGHT || WINDOWS_APP ||  UAP10_0 || NETSTANDARD || PORTABLE || WPSL || NETSTANDARD2_0)
           13    [Serializable]
           14#endif
           15    public sealed class ParseException : Exception
           16    {
           17        /// <summary>
           18        /// Initializes a new instance of the <see cref="ParseException"/> class with a specified error message and posi
           19        /// </summary>
           20        /// <param name="message">The message that describes the error.</param>
           21        /// <param name="position">The location in the parsed string that produced the <see cref="ParseException"/></par
           22        public ParseException(string message, int position)
           7423            : base(message)
           7424        {
           7425            Position = position;
           7426        }
           27
           28        /// <summary>
           29        /// The location in the parsed string that produced the <see cref="ParseException"/>.
           30        /// </summary>
           031        public int Position { get; }
           32
           33        /// <summary>
           34        /// Creates and returns a string representation of the current exception.
           35        /// </summary>
           36        /// <returns>A string representation of the current exception.</returns>
           37        public override string ToString()
           038        {
           039            return string.Format(CultureInfo.CurrentCulture, Res.ParseExceptionFormat, Message, Position);
           040        }
           41
           42#if !(SILVERLIGHT || WINDOWS_APP ||  UAP10_0 || NETSTANDARD || PORTABLE || WPSL || NETSTANDARD2_0)
           43        ParseException(SerializationInfo info, StreamingContext context)
           044            : base(info, context)
           045        {
           046            Position = (int)info.GetValue("position", typeof(int));
           047        }
           48
           49        /// <summary>
           50        /// When overridden in a derived class, sets the <see cref="T:System.Runtime.Serialization.SerializationInfo" />
           51        /// </summary>
           52        /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> that holds the serial
           53        /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext" /> that contains conte
           54        /// <PermissionSet>
           55        ///   <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=ne
           56        ///   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=
           57        /// </PermissionSet>
           58        public override void GetObjectData(SerializationInfo info, StreamingContext context)
           059        {
           060            base.GetObjectData(info, context);
           61
           062            info.AddValue("position", Position);
           063        }
           64#endif
           65    }
           66}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_ParsingConfig.html b/report/coverlet/System.Linq.Dynamic.Core_ParsingConfig.html deleted file mode 100644 index bba8972d..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_ParsingConfig.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.ParsingConfig - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.ParsingConfig
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ParsingConfig.cs
          Covered lines:48
          Uncovered lines:0
          Coverable lines:48
          Total lines:202
          Line coverage:100% (48 of 48)
          Covered branches:12
          Total branches:12
          Branch coverage:100% (12 of 12)
          Covered methods:24
          Total methods:24
          Method coverage:100% (24 of 24)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\ParsingConfig.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.ComponentModel;
           3using System.Globalization;
           4using System.Linq.Dynamic.Core.CustomTypeProviders;
           5using System.Linq.Dynamic.Core.Parser;
           6
           7namespace System.Linq.Dynamic.Core
           8{
           9    /// <summary>
           10    /// Configuration class for System.Linq.Dynamic.Core.
           11    /// </summary>
           12    public class ParsingConfig
           13    {
           14        /// <summary>
           15        /// Default ParsingConfig
           16        /// </summary>
           90017        public static ParsingConfig Default { get; } = new ParsingConfig();
           18
           19        /// <summary>
           20        /// Default ParsingConfig for EntityFramework Core 2.1 and higher
           21        /// </summary>
           122        public static ParsingConfig DefaultEFCore21 { get; } = new ParsingConfig
           123        {
           124            EvaluateGroupByAtDatabase = true
           125        };
           26
           27        /// <summary>Gets or sets if parameter, method, and properties resolution should be case sensitive or not (false
           184228        public bool IsCaseSensitive { get; set; }
           29
           30        /// <summary>
           31        /// Default ParsingConfig for CosmosDb
           32        /// </summary>
           133        public static ParsingConfig DefaultCosmosDb { get; } = new ParsingConfig
           134        {
           135            RenameEmptyParameterExpressionNames = true
           136        };
           37
           38        private IDynamicLinkCustomTypeProvider _customTypeProvider;
           39
           40        private IExpressionPromoter _expressionPromoter;
           41
           42        private IQueryableAnalyzer _queryableAnalyzer;
           43
           44        /// <summary>
           45        /// Gets or sets the <see cref="IDynamicLinkCustomTypeProvider"/>.
           46        /// </summary>
           47        public IDynamicLinkCustomTypeProvider CustomTypeProvider
           48        {
           49            get
           213250            {
           51#if !( WINDOWS_APP || UAP10_0 || NETSTANDARD)
           52                // only use DefaultDynamicLinqCustomTypeProvider for full .NET Framework and NET Core App 2.x
           213253                return _customTypeProvider ?? (_customTypeProvider = new DefaultDynamicLinqCustomTypeProvider());
           54#else
           55                return _customTypeProvider;
           56#endif
           213257            }
           58
           59            set
           5960            {
           5961                if (_customTypeProvider != value)
           5962                {
           5963                    _customTypeProvider = value;
           5964                }
           5965            }
           66        }
           67
           68        /// <summary>
           69        /// Gets or sets the <see cref="IExpressionPromoter"/>.
           70        /// </summary>
           71        public IExpressionPromoter ExpressionPromoter
           72        {
           444473            get => _expressionPromoter ?? (_expressionPromoter = new ExpressionPromoter(this));
           74
           75            set
           176            {
           177                if (_expressionPromoter != value)
           178                {
           179                    _expressionPromoter = value;
           180                }
           181            }
           82        }
           83
           84        /// <summary>
           85        /// Gets or sets the <see cref="IQueryableAnalyzer"/>.
           86        /// </summary>
           87        public IQueryableAnalyzer QueryableAnalyzer
           88        {
           89            get
           35390            {
           35391                return _queryableAnalyzer ?? (_queryableAnalyzer = new DefaultQueryableAnalyzer());
           35392            }
           93
           94            set
           295            {
           296                if (_queryableAnalyzer != value)
           297                {
           298                    _queryableAnalyzer = value;
           299                }
           2100            }
           101        }
           102
           103        /// <summary>
           104        /// Determines if the context keywords (it, parent, and root) are valid and usable inside a Dynamic Linq string 
           105        /// Does not affect the usability of the equivalent context symbols ($, ^ and ~).
           106        ///
           107        /// Default value is true.
           108        /// </summary>
           1197109        public bool AreContextKeywordsEnabled { get; set; } = true;
           110
           111        /// <summary>
           112        /// Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database 
           113        /// See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation
           114        ///
           115        /// Remark: when this setting is set to 'true', make sure to supply this ParsingConfig as first parameter on the
           116        ///
           117        /// Default value is false.
           118        /// </summary>
           516119        public bool EvaluateGroupByAtDatabase { get; set; } = false;
           120
           121        /// <summary>
           122        /// Use Parameterized Names in generated dynamic SQL query.
           123        /// See https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139_entity-framework-dynam
           124        ///
           125        /// Default value is false.
           126        /// </summary>
           3263127        public bool UseParameterizedNamesInDynamicQuery { get; set; } = false;
           128
           129        /// <summary>
           130        /// Allows the New() keyword to evaluate any available Type.
           131        ///
           132        /// Default value is false.
           133        /// </summary>
           239134        public bool AllowNewToEvaluateAnyType { get; set; } = false;
           135
           136        /// <summary>
           137        /// Renames the (Typed)ParameterExpression empty Name to a the correct supplied name from `it`.
           138        ///
           139        /// Default value is false.
           140        /// </summary>
           901141        public bool RenameParameterExpression { get; set; } = false;
           142
           143        /// <summary>
           144        /// Prevents any System.Linq.Expressions.ParameterExpression.Name value from being empty by substituting a rando
           145        ///
           146        /// Default value is false.
           147        /// </summary>
           1100148        public bool RenameEmptyParameterExpressionNames { get; set; } = false;
           149
           150        /// <summary>
           151        /// By default when a member is not found in a type and the type has a string based index accessor it will be pa
           152        /// this flag to disable this behaviour and have parsing fail when parsing an expression
           153        /// where a member access on a non existing member happens.
           154        ///
           155        /// Default value is false.
           156        /// </summary>
           291157        public bool DisableMemberAccessToIndexAccessorFallback { get; set; } = false;
           158
           159        /// <summary>
           160        /// By default finding types by a simple name is not supported.
           161        /// Use this flag to use the CustomTypeProvider to resolve types by a simple name like "Employee" instead of "My
           162        /// Note that a first matching type is returned and this functionality needs to scan all types from all assembli
           163        ///
           164        /// Default value is false.
           165        /// </summary>
           275166        public bool ResolveTypesBySimpleName { get; set; } = false;
           167
           168        /// <summary>
           169        /// Support enumeration-types from the System namespace in mscorlib. An example could be "StringComparison".
           170        ///
           171        /// Default value is true.
           172        /// </summary>
           1199173        public bool SupportEnumerationsFromSystemNamespace { get; set; } = true;
           174
           175        /// <summary>
           176        /// By default DateTime (like 'Fri, 10 May 2019 11:03:17 GMT') is parsed as local time.
           177        /// Use this flag to parse all DateTime strings as UTC.
           178        ///
           179        /// Default value is false.
           180        /// </summary>
           260181        public bool DateTimeIsParsedAsUTC { get; set; } = false;
           182
           183        /// <summary>
           184        /// The number parsing culture.
           185        ///
           186        /// Default value is CultureInfo.InvariantCulture
           187        /// </summary>
           2158188        public CultureInfo NumberParseCulture { get; set; } = CultureInfo.InvariantCulture;
           189
           190        /// <summary>
           191        /// Additional TypeConverters
           192        /// </summary>
           42193        public IDictionary<Type, TypeConverter> TypeConverters { get; set; }
           194
           195        /// <summary>
           196        /// When using the NullPropagating function np(...), use a "default value" for non-nullable value types instead 
           197        ///
           198        /// Default value is false.
           199        /// </summary>
           264200        public bool NullPropagatingUseDefaultValueForNonNullableValueTypes { get; set; } = false;
           201    }
           202}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_PredefinedTypesHelper.html b/report/coverlet/System.Linq.Dynamic.Core_PredefinedTypesHelper.html deleted file mode 100644 index c920ae5f..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_PredefinedTypesHelper.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\PredefinedTypesHelper.cs
          Covered lines:62
          Uncovered lines:6
          Coverable lines:68
          Total lines:104
          Line coverage:91.1% (62 of 68)
          Covered branches:6
          Total branches:8
          Branch coverage:75% (6 of 8)
          Covered methods:3
          Total methods:3
          Method coverage:100% (3 of 3)
          -

          Metrics

          - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          TryAdd(...)50%2250%
          IsPredefinedType(...)83.33%66100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\PredefinedTypesHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Concurrent;
           2using System.Collections.Generic;
           3using System.Linq.Dynamic.Core.Validation;
           4using System.Text.RegularExpressions;
           5
           6namespace System.Linq.Dynamic.Core.Parser
           7{
           8    internal static class PredefinedTypesHelper
           9    {
           110        private static readonly string Version = Regex.Match(typeof(PredefinedTypesHelper).AssemblyQualifiedName, @"\d+\
           11
           12        // These shorthands have different name than actual type and therefore not recognized by default from the Predef
           113        public static readonly IDictionary<string, Type> PredefinedTypesShorthands = new Dictionary<string, Type>
           114        {
           115            { "int", typeof(int) },
           116            { "uint", typeof(uint) },
           117            { "short", typeof(short) },
           118            { "ushort", typeof(ushort) },
           119            { "long", typeof(long) },
           120            { "ulong", typeof(ulong) },
           121            { "bool", typeof(bool) },
           122            { "float", typeof(float) }
           123        };
           24
           125        public static readonly IDictionary<Type, int> PredefinedTypes = new ConcurrentDictionary<Type, int>(new Dictiona
           126            { typeof(object), 0 },
           127            { typeof(bool), 0 },
           128            { typeof(char), 0 },
           129            { typeof(string), 0 },
           130            { typeof(sbyte), 0 },
           131            { typeof(byte), 0 },
           132            { typeof(short), 0 },
           133            { typeof(ushort), 0 },
           134            { typeof(int), 0 },
           135            { typeof(uint), 0 },
           136            { typeof(long), 0 },
           137            { typeof(ulong), 0 },
           138            { typeof(float), 0 },
           139            { typeof(double), 0 },
           140            { typeof(decimal), 0 },
           141            { typeof(DateTime), 0 },
           142            { typeof(DateTimeOffset), 0 },
           143            { typeof(TimeSpan), 0 },
           144            { typeof(Guid), 0 },
           145            { typeof(Math), 0 },
           146            { typeof(Convert), 0 },
           147            { typeof(Uri), 0 }
           148        });
           49
           50        static PredefinedTypesHelper()
           151        {
           52#if !(NET35 || SILVERLIGHT || NETFX_CORE || WINDOWS_APP ||  UAP10_0 || NETSTANDARD)
           53            //System.Data.Entity is always here, so overwrite short name of it with EntityFramework if EntityFramework i
           54            //EF5(or 4.x??), System.Data.Objects.DataClasses.EdmFunctionAttribute
           55            //There is also an System.Data.Entity, Version=3.5.0.0, but no Functions.
           156            TryAdd("System.Data.Objects.EntityFunctions, System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKey
           157            TryAdd("System.Data.Objects.SqlClient.SqlFunctions, System.Data.Entity, Version=4.0.0.0, Culture=neutral, Pu
           158            TryAdd("System.Data.Objects.SqlClient.SqlSpatialFunctions, System.Data.Entity, Version=4.0.0.0, Culture=neut
           59
           60            //EF6,System.Data.Entity.DbFunctionAttribute
           161            TryAdd("System.Data.Entity.Core.Objects.EntityFunctions, EntityFramework, Version=6.0.0.0, Culture=neutral, 
           162            TryAdd("System.Data.Entity.DbFunctions, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b7
           163            TryAdd("System.Data.Entity.Spatial.DbGeography, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKey
           164            TryAdd("System.Data.Entity.SqlServer.SqlFunctions, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutr
           165            TryAdd("System.Data.Entity.SqlServer.SqlSpatialFunctions, EntityFramework.SqlServer, Version=6.0.0.0, Cultur
           66#endif
           67
           68#if NETSTANDARD2_0
           69            TryAdd($"Microsoft.EntityFrameworkCore.DynamicLinq.DynamicFunctions, Microsoft.EntityFrameworkCore.DynamicLi
           70#endif
           171        }
           72
           73        private static void TryAdd(string typeName, int x)
           874        {
           75            try
           876            {
           877                Type efType = Type.GetType(typeName);
           878                if (efType != null)
           079                {
           080                    PredefinedTypes.Add(efType, x);
           081                }
           882            }
           083            catch
           084            {
           85                // in case of exception, do not add
           086            }
           887        }
           88
           89        public static bool IsPredefinedType(ParsingConfig config, Type type)
           9190        {
           9191            Check.NotNull(config, nameof(config));
           9192            Check.NotNull(type, nameof(type));
           93
           9194            var nonNullableType = TypeHelper.GetNonNullableType(type);
           9195            if (PredefinedTypes.ContainsKey(nonNullableType))
           5296            {
           5297                return true;
           98            }
           99
           39100            return config.CustomTypeProvider != null &&
           39101                   (config.CustomTypeProvider.GetCustomTypes().Contains(type) || config.CustomTypeProvider.GetCustomType
           91102        }
           103    }
           104}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_QueryableMethodFinder.html b/report/coverlet/System.Linq.Dynamic.Core_QueryableMethodFinder.html deleted file mode 100644 index 4f60cc0d..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_QueryableMethodFinder.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Util.QueryableMethodFinder - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Util.QueryableMethodFinder
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\QueryableMethodFinder.cs
          Covered lines:21
          Uncovered lines:3
          Coverable lines:24
          Total lines:47
          Line coverage:87.5% (21 of 24)
          Covered branches:20
          Total branches:22
          Branch coverage:90.9% (20 of 22)
          Covered methods:6
          Total methods:6
          Method coverage:100% (6 of 6)
          -

          Metrics

          - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          GetGenericMethod(...)100%11100%
          GetMethod(...)75%44100%
          GetMethod(...)100%44100%
          GetMethodWithExpressionParameter(...)100%88100%
          GetMethodWithIntParameter(...)50%22100%
          GetMethod(...)100%4462.5%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\QueryableMethodFinder.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Linq.Expressions;
           2using System.Reflection;
           3
           4namespace System.Linq.Dynamic.Core.Util
           5{
           6    internal static class QueryableMethodFinder
           7    {
           8        public static MethodInfo GetGenericMethod(string name)
           29        {
           410            return typeof(Queryable).GetTypeInfo().GetDeclaredMethods(name).Single(mi => mi.IsGenericMethod);
           211        }
           12
           13        public static MethodInfo GetMethod(string name, Type argumentType, Type returnType, int parameterCount = 0, Func
           2014            GetMethod(name, returnType, parameterCount, mi => mi.ToString().Contains(argumentType.ToString()) && ((predi
           15
           16        public static MethodInfo GetMethod(string name, Type returnType, int parameterCount = 0, Func<MethodInfo, bool> 
           16517            GetMethod(name, parameterCount, mi => (mi.ReturnType == returnType) && ((predicate == null) || predicate(mi)
           18
           19        public static MethodInfo GetMethodWithExpressionParameter(string name) =>
           1020            GetMethod(name, 1, mi =>
           1721                mi.GetParameters().Length == 2 &&
           1722                mi.GetParameters()[1].ParameterType.GetTypeInfo().IsGenericType &&
           1723                mi.GetParameters()[1].ParameterType.GetGenericTypeDefinition() == typeof(Expression<>) &&
           1724                mi.GetParameters()[1].ParameterType.GetGenericArguments()[0].GetTypeInfo().IsGenericType &&
           1725                mi.GetParameters()[1].ParameterType.GetGenericArguments()[0].GetGenericTypeDefinition() == typeof(Func<,
           1026            );
           27
           28        public static MethodInfo GetMethodWithIntParameter(string name) =>
           129            GetMethod(name, 1, mi =>
           230                mi.GetParameters().Length == 2 &&
           231                mi.GetParameters()[1].ParameterType == typeof(int)
           132            );
           33
           34        public static MethodInfo GetMethod(string name, int parameterCount = 0, Func<MethodInfo, bool> predicate = null)
           4335        {
           36            try
           4337            {
           4338                return typeof(Queryable).GetTypeInfo().GetDeclaredMethods(name).Single(mi =>
           41139                    mi.GetParameters().Length == parameterCount + 1 && (predicate == null || predicate(mi)));
           40            }
           041            catch (Exception ex)
           042            {
           043                throw new Exception("Specific method not found: " + name, ex);
           44            }
           4345        }
           46    }
           47}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_RuntimeInformationUtils.html b/report/coverlet/System.Linq.Dynamic.Core_RuntimeInformationUtils.html deleted file mode 100644 index 76703319..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_RuntimeInformationUtils.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Util.RuntimeInformationUtils - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Util.RuntimeInformationUtils
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\RuntimeInformationUtils.cs
          Covered lines:9
          Uncovered lines:0
          Coverable lines:9
          Total lines:22
          Line coverage:100% (9 of 9)
          Covered branches:1
          Total branches:2
          Branch coverage:50% (1 of 2)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()50%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Util\RuntimeInformationUtils.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1namespace System.Linq.Dynamic.Core.Util
           2{
           3    internal static class RuntimeInformationUtils
           4    {
           5        public static bool IsBlazorWASM;
           6
           7        static RuntimeInformationUtils()
           18        {
           9#if NET35 || NET40 || NET45 || NET452 || NET46 || UAP10_0
           10            IsBlazorWASM = false;
           11#else
           112            IsBlazorWASM =
           113                // Used for Blazor WebAssembly .NET Core 3.x / .NET Standard 2.x
           114                Type.GetType("Mono.Runtime") != null ||
           115
           116               // Use for Blazor WebAssembly .NET
           117               // See also https://github.com/mono/mono/pull/19568/files
           118               Runtime.InteropServices.RuntimeInformation.IsOSPlatform(Runtime.InteropServices.OSPlatform.Create("BROWSE
           19#endif
           120        }
           21    }
           22}
          -
          -
          -
          -

          Methods/Properties

          -.cctor()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_StringParser.html b/report/coverlet/System.Linq.Dynamic.Core_StringParser.html deleted file mode 100644 index 9b3779d3..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_StringParser.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.StringParser - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.StringParser
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\StringParser.cs
          Covered lines:17
          Uncovered lines:0
          Coverable lines:17
          Total lines:41
          Line coverage:100% (17 of 17)
          Covered branches:10
          Total branches:10
          Branch coverage:100% (10 of 10)
          Covered methods:1
          Total methods:1
          Method coverage:100% (1 of 1)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          ParseString(...)100%1010100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\StringParser.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Globalization;
           2using System.Linq.Dynamic.Core.Exceptions;
           3using System.Text.RegularExpressions;
           4
           5namespace System.Linq.Dynamic.Core.Parser
           6{
           7    /// <summary>
           8    /// Parse a Double and Single Quoted string.
           9    /// Some parts of the code is based on https://github.com/zzzprojects/Eval-Expression.NET
           10    /// </summary>
           11    internal static class StringParser
           12    {
           13        public static string ParseString(string s)
           15214        {
           15215            if (s == null || s.Length < 2)
           316            {
           317                throw new ParseException(string.Format(CultureInfo.CurrentCulture, Res.InvalidStringLength, s, 2), 0);
           18            }
           19
           14920            if (s[0] != '"' && s[0] != '\'')
           221            {
           222                throw new ParseException(string.Format(CultureInfo.CurrentCulture, Res.InvalidStringQuoteCharacter), 0);
           23            }
           24
           14725            char quote = s[0]; // This can be single or a double quote
           14726            if (s.Last() != quote)
           227            {
           228                throw new ParseException(string.Format(CultureInfo.CurrentCulture, Res.UnexpectedUnclosedString, s.Lengt
           29            }
           30
           31            try
           14532            {
           14533                return Regex.Unescape(s.Substring(1, s.Length - 2));
           34            }
           135            catch (Exception ex)
           136            {
           137                throw new ParseException(ex.Message, 0);
           38            }
           14439        }
           40    }
           41}
          -
          -
          -
          -

          Methods/Properties

          -ParseString(System.String)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_TextParser.html b/report/coverlet/System.Linq.Dynamic.Core_TextParser.html deleted file mode 100644 index a6237884..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_TextParser.html +++ /dev/null @@ -1,656 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Tokenizer.TextParser - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Tokenizer.TextParser
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Tokenizer\TextParser.cs
          Covered lines:348
          Uncovered lines:1
          Coverable lines:349
          Total lines:528
          Line coverage:99.7% (348 of 349)
          Covered branches:184
          Total branches:190
          Branch coverage:96.8% (184 of 190)
          Covered methods:16
          Total methods:16
          Method coverage:100% (16 of 16)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .cctor()100%11100%
          .ctor(...)50%22100%
          SetTextPos(...)50%22100%
          NextChar()100%44100%
          PeekNextChar()50%22100%
          NextToken()99.35%156156100%
          ValidateToken(...)75%44100%
          ValidateExpression()100%22100%
          ValidateDigit()100%22100%
          ValidateHexChar()100%22100%
          ValidateBinaryChar()100%22100%
          ParseError(...)100%11100%
          ParseError(...)100%11100%
          GetAliasedTokenId(...)100%44100%
          IsHexChar(...)83.33%6690%
          IsZeroOrOne(...)100%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Tokenizer\TextParser.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Globalization;
           3using System.Linq.Dynamic.Core.Exceptions;
           4
           5namespace System.Linq.Dynamic.Core.Tokenizer
           6{
           7    /// <summary>
           8    /// TextParser which can be used to parse a text into tokens.
           9    /// </summary>
           10    public class TextParser
           11    {
           12        private const char DefaultNumberDecimalSeparator = '.';
           113        private static readonly char[] EscapeCharacters = { '\\', 'a', 'b', 'f', 'n', 'r', 't', 'v' };
           14
           15        // These aliases are supposed to simply the where clause and make it more human readable
           116        private static readonly Dictionary<string, TokenId> PredefinedOperatorAliases = new Dictionary<string, TokenId>(
           117        {
           118            { "eq", TokenId.Equal },
           119            { "equal", TokenId.Equal },
           120            { "ne", TokenId.ExclamationEqual },
           121            { "notequal", TokenId.ExclamationEqual },
           122            { "neq", TokenId.ExclamationEqual },
           123            { "lt", TokenId.LessThan },
           124            { "LessThan", TokenId.LessThan },
           125            { "le", TokenId.LessThanEqual },
           126            { "LessThanEqual", TokenId.LessThanEqual },
           127            { "gt", TokenId.GreaterThan },
           128            { "GreaterThan", TokenId.GreaterThan },
           129            { "ge", TokenId.GreaterThanEqual },
           130            { "GreaterThanEqual", TokenId.GreaterThanEqual },
           131            { "and", TokenId.DoubleAmpersand },
           132            { "AndAlso", TokenId.DoubleAmpersand },
           133            { "or", TokenId.DoubleBar },
           134            { "OrElse", TokenId.DoubleBar },
           135            { "not", TokenId.Exclamation },
           136            { "mod", TokenId.Percent }
           137        };
           38
           39        private readonly ParsingConfig _config;
           40        private readonly char _numberDecimalSeparator;
           41        private readonly string _text;
           42        private readonly int _textLen;
           43
           44        private int _textPos;
           45        private char _ch;
           46
           47        /// <summary>
           48        /// The current parsed <see cref="Token"/>.
           49        /// </summary>
           50        public Token CurrentToken;
           51
           52        /// <summary>
           53        /// Constructor for TextParser
           54        /// </summary>
           55        /// <param name="config"></param>
           56        /// <param name="text"></param>
           99357        public TextParser(ParsingConfig config, string text)
           99358        {
           99359            _config = config;
           99360            _numberDecimalSeparator = config.NumberParseCulture?.NumberFormat.NumberDecimalSeparator[0] ?? DefaultNumber
           61
           99362            _text = text;
           99363            _textLen = _text.Length;
           64
           99365            SetTextPos(0);
           99366            NextToken();
           99067        }
           68
           69        private void SetTextPos(int pos)
           99370        {
           99371            _textPos = pos;
           99372            _ch = _textPos < _textLen ? _text[_textPos] : '\0';
           99373        }
           74
           75        private void NextChar()
           1854176        {
           1854177            if (_textPos < _textLen)
           1854178            {
           1854179                _textPos++;
           1854180            }
           1854181            _ch = _textPos < _textLen ? _text[_textPos] : '\0';
           1854182        }
           83
           84        /// <summary>
           85        /// Peek the next character.
           86        /// </summary>
           87        /// <returns>The next character, or \0 if end of string.</returns>
           88        public char PeekNextChar()
           130889        {
           130890            return _textPos + 1 < _textLen ? _text[_textPos + 1] : '\0';
           130891        }
           92
           93        /// <summary>
           94        /// Go to the next token.
           95        /// </summary>
           96        public void NextToken()
           646697        {
           836398            while (char.IsWhiteSpace(_ch))
           189799            {
           1897100                NextChar();
           1897101            }
           102
           6466103            TokenId tokenId = TokenId.Unknown;
           6466104            int tokenPos = _textPos;
           105
           6466106            switch (_ch)
           107            {
           108                case '!':
           27109                    NextChar();
           27110                    if (_ch == '=')
           26111                    {
           26112                        NextChar();
           26113                        tokenId = TokenId.ExclamationEqual;
           26114                    }
           115                    else
           1116                    {
           1117                        tokenId = TokenId.Exclamation;
           1118                    }
           27119                    break;
           120
           121                case '%':
           2122                    NextChar();
           2123                    tokenId = TokenId.Percent;
           2124                    break;
           125
           126                case '&':
           40127                    NextChar();
           40128                    if (_ch == '&')
           14129                    {
           14130                        NextChar();
           14131                        tokenId = TokenId.DoubleAmpersand;
           14132                    }
           133                    else
           26134                    {
           26135                        tokenId = TokenId.Ampersand;
           26136                    }
           40137                    break;
           138
           139                case '(':
           466140                    NextChar();
           466141                    tokenId = TokenId.OpenParen;
           466142                    break;
           143
           144                case ')':
           458145                    NextChar();
           458146                    tokenId = TokenId.CloseParen;
           458147                    break;
           148
           149                case '{':
           12150                    NextChar();
           12151                    tokenId = TokenId.OpenCurlyParen;
           12152                    break;
           153
           154                case '}':
           11155                    NextChar();
           11156                    tokenId = TokenId.CloseCurlyParen;
           11157                    break;
           158
           159                case '*':
           21160                    NextChar();
           21161                    tokenId = TokenId.Asterisk;
           21162                    break;
           163
           164                case '+':
           43165                    NextChar();
           43166                    tokenId = TokenId.Plus;
           43167                    break;
           168
           169                case ',':
           159170                    NextChar();
           159171                    tokenId = TokenId.Comma;
           159172                    break;
           173
           174                case '-':
           36175                    NextChar();
           36176                    tokenId = TokenId.Minus;
           36177                    break;
           178
           179                case '.':
           577180                    NextChar();
           577181                    tokenId = TokenId.Dot;
           577182                    break;
           183
           184                case '/':
           2185                    NextChar();
           2186                    tokenId = TokenId.Slash;
           2187                    break;
           188
           189                case ':':
           8190                    NextChar();
           8191                    tokenId = TokenId.Colon;
           8192                    break;
           193
           194                case '<':
           44195                    NextChar();
           44196                    if (_ch == '=')
           4197                    {
           4198                        NextChar();
           4199                        tokenId = TokenId.LessThanEqual;
           4200                    }
           40201                    else if (_ch == '>')
           1202                    {
           1203                        NextChar();
           1204                        tokenId = TokenId.LessGreater;
           1205                    }
           39206                    else if (_ch == '<')
           25207                    {
           25208                        NextChar();
           25209                        tokenId = TokenId.DoubleLessThan;
           25210                    }
           211                    else
           14212                    {
           14213                        tokenId = TokenId.LessThan;
           14214                    }
           44215                    break;
           216
           217                case '=':
           323218                    NextChar();
           323219                    if (_ch == '=')
           201220                    {
           201221                        NextChar();
           201222                        tokenId = TokenId.DoubleEqual;
           201223                    }
           122224                    else if (_ch == '>')
           30225                    {
           30226                        NextChar();
           30227                        tokenId = TokenId.Lambda;
           30228                    }
           229                    else
           92230                    {
           92231                        tokenId = TokenId.Equal;
           92232                    }
           323233                    break;
           234
           235                case '>':
           89236                    NextChar();
           89237                    if (_ch == '=')
           8238                    {
           8239                        NextChar();
           8240                        tokenId = TokenId.GreaterThanEqual;
           8241                    }
           81242                    else if (_ch == '>')
           8243                    {
           8244                        NextChar();
           8245                        tokenId = TokenId.DoubleGreaterThan;
           8246                    }
           247                    else
           73248                    {
           73249                        tokenId = TokenId.GreaterThan;
           73250                    }
           89251                    break;
           252
           253                case '?':
           24254                    NextChar();
           24255                    if (_ch == '?')
           6256                    {
           6257                        NextChar();
           6258                        tokenId = TokenId.NullCoalescing;
           6259                    }
           18260                    else if (_ch == '.')
           2261                    {
           2262                        NextChar();
           2263                        tokenId = TokenId.NullPropagation;
           2264                    }
           265                    else
           16266                    {
           16267                        tokenId = TokenId.Question;
           16268                    }
           24269                    break;
           270
           271                case '[':
           8272                    NextChar();
           8273                    tokenId = TokenId.OpenBracket;
           8274                    break;
           275
           276                case ']':
           8277                    NextChar();
           8278                    tokenId = TokenId.CloseBracket;
           8279                    break;
           280
           281                case '|':
           24282                    NextChar();
           24283                    if (_ch == '|')
           7284                    {
           7285                        NextChar();
           7286                        tokenId = TokenId.DoubleBar;
           7287                    }
           288                    else
           17289                    {
           17290                        tokenId = TokenId.Bar;
           17291                    }
           24292                    break;
           293
           294                case '"':
           295                case '\'':
           127296                    bool balanced = false;
           127297                    char quote = _ch;
           298
           127299                    NextChar();
           300
           1435301                    while (_textPos < _textLen && _ch != quote)
           1308302                    {
           1308303                        char next = PeekNextChar();
           304
           1308305                        if (_ch == '\\')
           18306                        {
           18307                            if (EscapeCharacters.Contains(next))
           8308                            {
           8309                                NextChar();
           8310                            }
           311
           18312                            if (next == '"')
           9313                            {
           9314                                NextChar();
           9315                            }
           18316                        }
           317
           1308318                        NextChar();
           319
           1308320                        if (_ch == quote)
           118321                        {
           118322                            balanced = !balanced;
           118323                        }
           1308324                    }
           325
           127326                    if (_textPos == _textLen && !balanced)
           1327                    {
           1328                        throw ParseError(_textPos, Res.UnterminatedStringLiteral);
           329                    }
           330
           126331                    NextChar();
           332
           126333                    tokenId = TokenId.StringLiteral;
           126334                    break;
           335
           336                default:
           3957337                    if (char.IsLetter(_ch) || _ch == '@' || _ch == '_' || _ch == '$' || _ch == '^' || _ch == '~')
           2602338                    {
           339                        do
           11418340                        {
           11418341                            NextChar();
           22836342                        } while (char.IsLetterOrDigit(_ch) || _ch == '_');
           2602343                        tokenId = TokenId.Identifier;
           2602344                        break;
           345                    }
           346
           1355347                    if (char.IsDigit(_ch))
           423348                    {
           423349                        tokenId = TokenId.IntegerLiteral;
           350                        do
           619351                        {
           619352                            NextChar();
           1238353                        } while (char.IsDigit(_ch));
           354
           423355                        bool binaryInteger = false;
           423356                        if (_ch == 'B' || _ch == 'b')
           3357                        {
           3358                            NextChar();
           3359                            ValidateBinaryChar();
           360                            do
           13361                            {
           13362                                NextChar();
           26363                            } while (IsZeroOrOne(_ch));
           364
           1365                            binaryInteger = true;
           1366                        }
           367
           421368                        if (binaryInteger)
           1369                        {
           1370                            break;
           371                        }
           372
           420373                        bool hexInteger = false;
           420374                        if (_ch == 'X' || _ch == 'x')
           10375                        {
           10376                            NextChar();
           10377                            ValidateHexChar();
           378                            do
           80379                            {
           80380                                NextChar();
           160381                            } while (IsHexChar(_ch));
           382
           8383                            hexInteger = true;
           8384                        }
           385
           418386                        if (_ch == 'U' || _ch == 'L')
           21387                        {
           21388                            NextChar();
           21389                            if (_ch == 'L')
           6390                            {
           10391                                if (_text[_textPos - 1] == 'U') NextChar();
           2392                                else throw ParseError(_textPos, Res.InvalidIntegerQualifier, _text.Substring(_textPos - 
           4393                            }
           19394                            ValidateExpression();
           15395                            break;
           396                        }
           397
           397398                        if (hexInteger)
           3399                        {
           3400                            break;
           401                        }
           402
           394403                        if (_ch == _numberDecimalSeparator)
           39404                        {
           39405                            tokenId = TokenId.RealLiteral;
           39406                            NextChar();
           39407                            ValidateDigit();
           408                            do
           71409                            {
           71410                                NextChar();
           142411                            } while (char.IsDigit(_ch));
           38412                        }
           413
           393414                        if (_ch == 'E' || _ch == 'e')
           7415                        {
           7416                            tokenId = TokenId.RealLiteral;
           7417                            NextChar();
           11418                            if (_ch == '+' || _ch == '-') NextChar();
           7419                            ValidateDigit();
           420                            do
           10421                            {
           10422                                NextChar();
           20423                            } while (char.IsDigit(_ch));
           7424                        }
           425
           410426                        if (_ch == 'F' || _ch == 'f') NextChar();
           413427                        if (_ch == 'D' || _ch == 'd') NextChar();
           409428                        if (_ch == 'M' || _ch == 'm') NextChar();
           393429                        break;
           430                    }
           431
           932432                    if (_textPos == _textLen)
           931433                    {
           931434                        tokenId = TokenId.End;
           931435                        break;
           436                    }
           437
           1438                    throw ParseError(_textPos, Res.InvalidCharacter, _ch);
           439            }
           440
           6453441            CurrentToken.Pos = tokenPos;
           6453442            CurrentToken.Text = _text.Substring(tokenPos, _textPos - tokenPos);
           6453443            CurrentToken.OriginalId = tokenId;
           6453444            CurrentToken.Id = GetAliasedTokenId(tokenId, CurrentToken.Text);
           6453445        }
           446
           447        /// <summary>
           448        /// Check if the current token is the specified <see cref="TokenId"/>.
           449        /// </summary>
           450        /// <param name="tokenId">The tokenId to check.</param>
           451        /// <param name="errorMessage">The (optional) error message.</param>
           452        public void ValidateToken(TokenId tokenId, string errorMessage = null)
           5082453        {
           5082454            if (CurrentToken.Id != tokenId)
           4455            {
           4456                throw ParseError(errorMessage ?? Res.SyntaxError);
           457            }
           5078458        }
           459
           460        private void ValidateExpression()
           19461        {
           19462            if (char.IsLetterOrDigit(_ch))
           4463            {
           4464                throw ParseError(_textPos, Res.ExpressionExpected);
           465            }
           15466        }
           467
           468        private void ValidateDigit()
           46469        {
           46470            if (!char.IsDigit(_ch))
           1471            {
           1472                throw ParseError(_textPos, Res.DigitExpected);
           473            }
           45474        }
           475
           476        private void ValidateHexChar()
           10477        {
           10478            if (!IsHexChar(_ch))
           2479            {
           2480                throw ParseError(_textPos, Res.HexCharExpected);
           481            }
           8482        }
           483
           484        private void ValidateBinaryChar()
           3485        {
           3486            if (!IsZeroOrOne(_ch))
           2487            {
           2488                throw ParseError(_textPos, Res.BinraryCharExpected);
           489            }
           1490        }
           491
           492        private Exception ParseError(string format, params object[] args)
           4493        {
           4494            return ParseError(CurrentToken.Pos, format, args);
           4495        }
           496
           497        private static Exception ParseError(int pos, string format, params object[] args)
           17498        {
           17499            return new ParseException(string.Format(CultureInfo.CurrentCulture, format, args), pos);
           17500        }
           501
           502        private static TokenId GetAliasedTokenId(TokenId tokenId, string alias)
           6453503        {
           6453504            return tokenId == TokenId.Identifier && PredefinedOperatorAliases.TryGetValue(alias, out TokenId id) ? id : 
           6453505        }
           506
           507        private static bool IsHexChar(char c)
           90508        {
           90509            if (char.IsDigit(c))
           46510            {
           46511                return true;
           512            }
           513
           44514            if (c <= '\x007f')
           44515            {
           44516                c |= (char)0x20;
           44517                return c >= 'a' && c <= 'f';
           518            }
           519
           0520            return false;
           90521        }
           522
           523        private static bool IsZeroOrOne(char c)
           16524        {
           16525            return c == '0' || c == '1';
           16526        }
           527    }
           528}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_Token.html b/report/coverlet/System.Linq.Dynamic.Core_Token.html deleted file mode 100644 index 225021fb..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_Token.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Tokenizer.Token - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Tokenizer.Token
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Tokenizer\Token.cs
          Covered lines:4
          Uncovered lines:0
          Coverable lines:4
          Total lines:28
          Line coverage:100% (4 of 4)
          Covered branches:0
          Total branches:0
          Covered methods:4
          Total methods:4
          Method coverage:100% (4 of 4)
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Tokenizer\Token.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1namespace System.Linq.Dynamic.Core.Tokenizer
           2{
           3    /// <summary>
           4    /// Token
           5    /// </summary>
           6    public struct Token
           7    {
           8        /// <summary>
           9        /// The TokenId.
           10        /// </summary>
           7677111        public TokenId Id { get; set; }
           12
           13        /// <summary>
           14        /// The Original TokenId.
           15        /// </summary>
           645316        public TokenId OriginalId { get; set; }
           17
           18        /// <summary>
           19        /// The text.
           20        /// </summary>
           2046321        public string Text { get; set; }
           22
           23        /// <summary>
           24        /// The position.
           25        /// </summary>
           1098626        public int Pos { get; set; }
           27    }
           28}
          -
          -
          -
          -

          Methods/Properties

          -Id()
          -OriginalId()
          -Text()
          -Pos()
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_TypeConverterFactory.html b/report/coverlet/System.Linq.Dynamic.Core_TypeConverterFactory.html deleted file mode 100644 index 610cc4be..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_TypeConverterFactory.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\TypeConverters\TypeConverterFactory.cs
          Covered lines:16
          Uncovered lines:0
          Coverable lines:16
          Total lines:53
          Line coverage:100% (16 of 16)
          Covered branches:12
          Total branches:12
          Branch coverage:100% (12 of 12)
          Covered methods:2
          Total methods:2
          Method coverage:100% (2 of 2)
          -

          Metrics

          - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          GetConverter(...)100%1212100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\TypeConverters\TypeConverterFactory.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.ComponentModel;
           3using System.Linq.Dynamic.Core.Parser;
           4using System.Linq.Dynamic.Core.Validation;
           5
           6namespace System.Linq.Dynamic.Core.TypeConverters
           7{
           8    internal class TypeConverterFactory : ITypeConverterFactory
           9    {
           10        private readonly ParsingConfig _config;
           11
           98112        public TypeConverterFactory([NotNull] ParsingConfig config)
           98113        {
           98114            Check.NotNull(config, nameof(config));
           15
           98116            _config = config;
           98117        }
           18
           19        /// <see cref="ITypeConverterFactory.GetConverter"/>
           20        public TypeConverter GetConverter(Type type)
           3021        {
           3022            Check.NotNull(type, nameof(type));
           23
           3024            if (_config.DateTimeIsParsedAsUTC && (type == typeof(DateTime) || type == typeof(DateTime?)))
           425            {
           426                return new CustomDateTimeConverter();
           27            }
           28
           2629            var typeToCheck = TypeHelper.IsNullableType(type) ? TypeHelper.GetNonNullableType(type) : type;
           2630            if (_config.TypeConverters != null && _config.TypeConverters.TryGetValue(typeToCheck, out var typeConverter)
           631            {
           632                return typeConverter;
           33            }
           34
           35#if !SILVERLIGHT
           2036            return TypeDescriptor.GetConverter(type);
           37#else
           38            var attributes = type.GetCustomAttributes(typeof(TypeConverterAttribute), false);
           39
           40            if (attributes.Length != 1)
           41                return new TypeConverter();
           42
           43            var converterAttribute = (TypeConverterAttribute)attributes[0];
           44            var converterType = Type.GetType(converterAttribute.ConverterTypeName);
           45
           46            if (converterType == null)
           47                return new TypeConverter();
           48
           49            return Activator.CreateInstance(converterType) as TypeConverter;
           50#endif
           3051        }
           52    }
           53}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_TypeFinder.html b/report/coverlet/System.Linq.Dynamic.Core_TypeFinder.html deleted file mode 100644 index f2050c16..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_TypeFinder.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.TypeFinder - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.TypeFinder
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\TypeFinder.cs
          Covered lines:51
          Uncovered lines:4
          Coverable lines:55
          Total lines:92
          Line coverage:92.7% (51 of 55)
          Covered branches:26
          Total branches:28
          Branch coverage:92.8% (26 of 28)
          Covered methods:4
          Total methods:4
          Method coverage:100% (4 of 4)
          -

          Metrics

          - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          FindTypeByName(...)100%66100%
          ResolveTypeByUsingCustomTypeProvider(...)100%1010100%
          TryResolveTypeUsingExpressions(...)83.33%121283.33%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\TypeFinder.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using JetBrains.Annotations;
           2using System.Linq.Dynamic.Core.Validation;
           3using System.Linq.Expressions;
           4
           5namespace System.Linq.Dynamic.Core.Parser
           6{
           7    internal class TypeFinder : ITypeFinder
           8    {
           9        private readonly IKeywordsHelper _keywordsHelper;
           10        private readonly ParsingConfig _parsingConfig;
           11
           97612        public TypeFinder([NotNull] ParsingConfig parsingConfig, [NotNull] IKeywordsHelper keywordsHelper)
           97613        {
           97614            Check.NotNull(parsingConfig, nameof(parsingConfig));
           97615            Check.NotNull(keywordsHelper, nameof(keywordsHelper));
           16
           97617            _keywordsHelper = keywordsHelper;
           97618            _parsingConfig = parsingConfig;
           97619        }
           20
           21        public Type FindTypeByName(string name, ParameterExpression[] expressions, bool forceUseCustomTypeProvider)
           4022        {
           4023            Check.NotEmpty(name, nameof(name));
           24
           4025            _keywordsHelper.TryGetValue(name, out object type);
           26
           4027            if (type is Type result)
           228            {
           229                return result;
           30            }
           31
           3832            if (expressions != null && TryResolveTypeUsingExpressions(name, expressions, out result))
           433            {
           434                return result;
           35            }
           36
           3437            return ResolveTypeByUsingCustomTypeProvider(name, forceUseCustomTypeProvider);
           4038        }
           39
           40        private Type ResolveTypeByUsingCustomTypeProvider(string name, bool forceUseCustomTypeProvider)
           3441        {
           3442            if ((forceUseCustomTypeProvider || _parsingConfig.AllowNewToEvaluateAnyType) && _parsingConfig.CustomTypePro
           3143            {
           3144                Type resolvedType = _parsingConfig.CustomTypeProvider.ResolveType(name);
           3145                if (resolvedType != null)
           2546                {
           2547                    return resolvedType;
           48                }
           49
           50                // In case the type is not found based on fullname, try to get the type on simplename if allowed
           651                if (_parsingConfig.ResolveTypesBySimpleName)
           252                {
           253                    return _parsingConfig.CustomTypeProvider.ResolveTypeBySimpleName(name);
           54                }
           455            }
           56
           757            return null;
           3458        }
           59
           60        private bool TryResolveTypeUsingExpressions(string name, ParameterExpression[] expressions, out Type result)
           2461        {
           21662            foreach (var expression in expressions.Where(e => e != null))
           4263            {
           4264                if (name == expression.Type.Name)
           265                {
           266                    result = expression.Type;
           267                    return true;
           68                }
           69
           4070                if (name == $"{expression.Type.Namespace}.{expression.Type.Name}")
           071                {
           072                    result = expression.Type;
           073                    return true;
           74                }
           75
           4076                if (_parsingConfig.ResolveTypesBySimpleName && _parsingConfig.CustomTypeProvider != null)
           277                {
           278                    string possibleFullName = $"{expression.Type.Namespace}.{name}";
           279                    var resolvedType = _parsingConfig.CustomTypeProvider.ResolveType(possibleFullName);
           280                    if (resolvedType != null)
           281                    {
           282                        result = resolvedType;
           283                        return true;
           84                    }
           085                }
           3886            }
           87
           2088            result = null;
           2089            return false;
           2490        }
           91    }
           92}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_TypeHelper.html b/report/coverlet/System.Linq.Dynamic.Core_TypeHelper.html deleted file mode 100644 index 45bbf386..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_TypeHelper.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.TypeHelper - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.TypeHelper
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\TypeHelper.cs
          Covered lines:185
          Uncovered lines:6
          Coverable lines:191
          Total lines:467
          Line coverage:96.8% (185 of 191)
          Covered branches:138
          Total branches:141
          Branch coverage:97.8% (138 of 141)
          Covered methods:20
          Total methods:20
          Method coverage:100% (20 of 20)
          -

          Metrics

          - - - - - - - - - - - - - - - - - - - - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          FindGenericType(...)100%1414100%
          IsCompatibleWith(...)100%6868100%
          IsClass(...)100%44100%
          IsStruct(...)91.66%121293.75%
          IsEnumType(...)100%11100%
          IsNumericType(...)100%11100%
          IsNullableType(...)100%22100%
          TypeCanBeNull(...)100%22100%
          ToNullableType(...)100%22100%
          IsSignedIntegralType(...)100%11100%
          IsUnsignedIntegralType(...)100%11100%
          GetNumericTypeKind(...)93.33%151581.81%
          GetTypeName(...)50%2266.66%
          GetNonNullableType(...)100%22100%
          GetUnderlyingType(...)100%44100%
          GetSelfAndBaseTypes(...)100%22100%
          GetSelfAndBaseClasses()100%22100%
          AddInterface(...)100%44100%
          ParseEnum(...)100%44100%
          IsDictionary(...)100%22100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\TypeHelper.cs

          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1using System.Collections.Generic;
           2using System.Linq.Dynamic.Core.Validation;
           3using System.Reflection;
           4
           5namespace System.Linq.Dynamic.Core.Parser
           6{
           7    internal static class TypeHelper
           8    {
           9        public static Type FindGenericType(Type generic, Type type)
           931210        {
           1819211            while (type != null && type != typeof(object))
           935612            {
           935613                if (type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == generic)
           16414                {
           16415                    return type;
           16                }
           17
           919218                if (generic.GetTypeInfo().IsInterface)
           919219                {
           4469820                    foreach (Type interfaceType in type.GetInterfaces())
           871721                    {
           871722                        Type found = FindGenericType(generic, interfaceType);
           871723                        if (found != null)
           31224                        {
           31225                            return found;
           26                        }
           840527                    }
           888028                }
           29
           888030                type = type.GetTypeInfo().BaseType;
           888031            }
           32
           883633            return null;
           931234        }
           35
           36        public static bool IsCompatibleWith(Type source, Type target)
           482537        {
           38#if !(NETFX_CORE || WINDOWS_APP ||  UAP10_0 || NETSTANDARD)
           482539            if (source == target)
           140            {
           141                return true;
           42            }
           43
           482444            if (!target.IsValueType)
           14545            {
           14546                return target.IsAssignableFrom(source);
           47            }
           48
           467949            Type st = GetNonNullableType(source);
           467950            Type tt = GetNonNullableType(target);
           51
           467952            if (st != source && tt == target)
           69753            {
           69754                return false;
           55            }
           56
           398257            TypeCode sc = st.GetTypeInfo().IsEnum ? TypeCode.Int64 : Type.GetTypeCode(st);
           398258            TypeCode tc = tt.GetTypeInfo().IsEnum ? TypeCode.Int64 : Type.GetTypeCode(tt);
           398259            switch (sc)
           60            {
           61                case TypeCode.SByte:
           11662                    switch (tc)
           63                    {
           64                        case TypeCode.SByte:
           65                        case TypeCode.Int16:
           66                        case TypeCode.Int32:
           67                        case TypeCode.Int64:
           68                        case TypeCode.Single:
           69                        case TypeCode.Double:
           70                        case TypeCode.Decimal:
           5271                            return true;
           72                    }
           6473                    break;
           74
           75                case TypeCode.Byte:
           11776                    switch (tc)
           77                    {
           78                        case TypeCode.Byte:
           79                        case TypeCode.Int16:
           80                        case TypeCode.UInt16:
           81                        case TypeCode.Int32:
           82                        case TypeCode.UInt32:
           83                        case TypeCode.Int64:
           84                        case TypeCode.UInt64:
           85                        case TypeCode.Single:
           86                        case TypeCode.Double:
           87                        case TypeCode.Decimal:
           9388                            return true;
           89                    }
           2490                    break;
           91
           92                case TypeCode.Int16:
           14393                    switch (tc)
           94                    {
           95                        case TypeCode.Int16:
           96                        case TypeCode.Int32:
           97                        case TypeCode.Int64:
           98                        case TypeCode.Single:
           99                        case TypeCode.Double:
           100                        case TypeCode.Decimal:
           63101                            return true;
           102                    }
           80103                    break;
           104
           105                case TypeCode.UInt16:
           116106                    switch (tc)
           107                    {
           108                        case TypeCode.UInt16:
           109                        case TypeCode.Int32:
           110                        case TypeCode.UInt32:
           111                        case TypeCode.Int64:
           112                        case TypeCode.UInt64:
           113                        case TypeCode.Single:
           114                        case TypeCode.Double:
           115                        case TypeCode.Decimal:
           92116                            return true;
           117                    }
           24118                    break;
           119
           120                case TypeCode.Int32:
           1394121                    switch (tc)
           122                    {
           123                        case TypeCode.Int32:
           124                        case TypeCode.Int64:
           125                        case TypeCode.Single:
           126                        case TypeCode.Double:
           127                        case TypeCode.Decimal:
           945128                            return true;
           129                    }
           449130                    break;
           131
           132                case TypeCode.UInt32:
           259133                    switch (tc)
           134                    {
           135                        case TypeCode.UInt32:
           136                        case TypeCode.Int64:
           137                        case TypeCode.UInt64:
           138                        case TypeCode.Single:
           139                        case TypeCode.Double:
           140                        case TypeCode.Decimal:
           117141                            return true;
           142                    }
           142143                    break;
           144
           145                case TypeCode.Int64:
           518146                    switch (tc)
           147                    {
           148                        case TypeCode.Int64:
           149                        case TypeCode.Single:
           150                        case TypeCode.Double:
           151                        case TypeCode.Decimal:
           205152                            return true;
           153                    }
           313154                    break;
           155
           156                case TypeCode.UInt64:
           266157                    switch (tc)
           158                    {
           159                        case TypeCode.UInt64:
           160                        case TypeCode.Single:
           161                        case TypeCode.Double:
           162                        case TypeCode.Decimal:
           64163                            return true;
           164                    }
           202165                    break;
           166
           167                case TypeCode.Single:
           185168                    switch (tc)
           169                    {
           170                        case TypeCode.Single:
           171                        case TypeCode.Double:
           58172                            return true;
           173                    }
           127174                    break;
           175
           176                default:
           868177                    if (st == tt)
           196178                    {
           196179                        return true;
           180                    }
           672181                    break;
           182            }
           2097183            return false;
           184#else
           185            if (source == target)
           186            {
           187                return true;
           188            }
           189            if (!target.GetTypeInfo().IsValueType)
           190            {
           191                return target.IsAssignableFrom(source);
           192            }
           193            Type st = GetNonNullableType(source);
           194            Type tt = GetNonNullableType(target);
           195
           196            if (st != source && tt == target)
           197            {
           198                return false;
           199            }
           200            Type sc = st.GetTypeInfo().IsEnum ? typeof(object) : st;
           201            Type tc = tt.GetTypeInfo().IsEnum ? typeof(object) : tt;
           202
           203            if (sc == typeof(sbyte))
           204            {
           205                if (tc == typeof(sbyte) || tc == typeof(short) || tc == typeof(int) || tc == typeof(long) || tc == typeo
           206                    return true;
           207            }
           208            else if (sc == typeof(byte))
           209            {
           210                if (tc == typeof(byte) || tc == typeof(short) || tc == typeof(ushort) || tc == typeof(int) || tc == type
           211                    return true;
           212            }
           213            else if (sc == typeof(short))
           214            {
           215                if (tc == typeof(short) || tc == typeof(int) || tc == typeof(long) || tc == typeof(float) || tc == typeo
           216                    return true;
           217            }
           218            else if (sc == typeof(ushort))
           219            {
           220                if (tc == typeof(ushort) || tc == typeof(int) || tc == typeof(uint) || tc == typeof(long) || tc == typeo
           221                    return true;
           222            }
           223            else if (sc == typeof(int))
           224            {
           225                if (tc == typeof(int) || tc == typeof(long) || tc == typeof(float) || tc == typeof(double) || tc == type
           226                    return true;
           227            }
           228            else if (sc == typeof(uint))
           229            {
           230                if (tc == typeof(uint) || tc == typeof(long) || tc == typeof(ulong) || tc == typeof(float) || tc == type
           231                    return true;
           232            }
           233            else if (sc == typeof(long))
           234            {
           235                if (tc == typeof(long) || tc == typeof(float) || tc == typeof(double) || tc == typeof(decimal))
           236                    return true;
           237            }
           238            else if (sc == typeof(ulong))
           239            {
           240                if (tc == typeof(ulong) || tc == typeof(float) || tc == typeof(double) || tc == typeof(decimal))
           241                    return true;
           242            }
           243            else if (sc == typeof(float))
           244            {
           245                if (tc == typeof(float) || tc == typeof(double))
           246                    return true;
           247            }
           248
           249            if (st == tt)
           250            {
           251                return true;
           252            }
           253
           254            return false;
           255#endif
           4825256        }
           257
           258        public static bool IsClass(Type type)
           143259        {
           143260            bool result = false;
           143261            if (type.GetTypeInfo().IsClass)
           18262            {
           263                // Is Class or Delegate
           18264                if (type != typeof(Delegate))
           18265                {
           18266                    result = true;
           18267                }
           18268            }
           143269            return result;
           143270        }
           271
           272        public static bool IsStruct(Type type)
           125273        {
           125274            var nonNullableType = GetNonNullableType(type);
           125275            if (nonNullableType.GetTypeInfo().IsValueType)
           125276            {
           125277                if (!nonNullableType.GetTypeInfo().IsPrimitive)
           42278                {
           42279                    if (nonNullableType != typeof(decimal) && nonNullableType != typeof(DateTime) && nonNullableType != 
           12280                    {
           12281                        if (!nonNullableType.GetTypeInfo().IsEnum)
           12282                        {
           12283                            return true;
           284                        }
           0285                    }
           30286                }
           113287            }
           288
           113289            return false;
           125290        }
           291
           292        public static bool IsEnumType(Type type)
           827293        {
           827294            return GetNonNullableType(type).GetTypeInfo().IsEnum;
           827295        }
           296
           297        public static bool IsNumericType(Type type)
           17298        {
           17299            return GetNumericTypeKind(type) != 0;
           17300        }
           301
           302        public static bool IsNullableType(Type type)
           13281303        {
           13281304            Check.NotNull(type, nameof(type));
           305
           13281306            return type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
           13281307        }
           308
           309        public static bool TypeCanBeNull(Type type)
           198310        {
           198311            Check.NotNull(type, nameof(type));
           312
           198313            return !type.GetTypeInfo().IsValueType || IsNullableType(type);
           198314        }
           315
           316        public static Type ToNullableType(Type type)
           34317        {
           34318            Check.NotNull(type, nameof(type));
           319
           34320            return IsNullableType(type) ? type : typeof(Nullable<>).MakeGenericType(type);
           34321        }
           322
           323        public static bool IsSignedIntegralType(Type type)
           678324        {
           678325            return GetNumericTypeKind(type) == 2;
           678326        }
           327
           328        public static bool IsUnsignedIntegralType(Type type)
           250329        {
           250330            return GetNumericTypeKind(type) == 3;
           250331        }
           332
           333        private static int GetNumericTypeKind(Type type)
           945334        {
           945335            type = GetNonNullableType(type);
           336
           337#if !(NETFX_CORE || WINDOWS_APP || UAP10_0 || NETSTANDARD)
           945338            if (type.GetTypeInfo().IsEnum)
           0339            {
           0340                return 0;
           341            }
           342
           945343            switch (Type.GetTypeCode(type))
           344            {
           345                case TypeCode.Char:
           346                case TypeCode.Single:
           347                case TypeCode.Double:
           348                case TypeCode.Decimal:
           422349                    return 1;
           350                case TypeCode.SByte:
           351                case TypeCode.Int16:
           352                case TypeCode.Int32:
           353                case TypeCode.Int64:
           278354                    return 2;
           355                case TypeCode.Byte:
           356                case TypeCode.UInt16:
           357                case TypeCode.UInt32:
           358                case TypeCode.UInt64:
           243359                    return 3;
           360                default:
           2361                    return 0;
           362            }
           363#else
           364            if (type.GetTypeInfo().IsEnum)
           365            {
           366                return 0;
           367            }
           368
           369            if (type == typeof(char) || type == typeof(float) || type == typeof(double) || type == typeof(decimal))
           370                return 1;
           371            if (type == typeof(sbyte) || type == typeof(short) || type == typeof(int) || type == typeof(long))
           372                return 2;
           373            if (type == typeof(byte) || type == typeof(ushort) || type == typeof(uint) || type == typeof(ulong))
           374                return 3;
           375
           376            return 0;
           377#endif
           945378        }
           379
           380        public static string GetTypeName(Type type)
           32381        {
           32382            Type baseType = GetNonNullableType(type);
           383
           32384            string name = baseType.Name;
           32385            if (type != baseType)
           0386            {
           0387                name += '?';
           0388            }
           389
           32390            return name;
           32391        }
           392
           393        public static Type GetNonNullableType(Type type)
           13015394        {
           13015395            Check.NotNull(type, nameof(type));
           396
           13015397            return IsNullableType(type) ? type.GetTypeInfo().GetGenericTypeArguments()[0] : type;
           13015398        }
           399
           400        public static Type GetUnderlyingType(Type type)
           252401        {
           252402            Check.NotNull(type, nameof(type));
           403
           252404            Type[] genericTypeArguments = type.GetGenericArguments();
           252405            if (genericTypeArguments.Any())
           174406            {
           174407                var outerType = GetUnderlyingType(genericTypeArguments.LastOrDefault());
           174408                return Nullable.GetUnderlyingType(type) == outerType ? type : outerType;
           409            }
           410
           78411            return type;
           252412        }
           413
           414        public static IEnumerable<Type> GetSelfAndBaseTypes(Type type)
           884415        {
           884416            if (type.GetTypeInfo().IsInterface)
           18417            {
           18418                var types = new List<Type>();
           18419                AddInterface(types, type);
           18420                return types;
           421            }
           866422            return GetSelfAndBaseClasses(type);
           884423        }
           424
           425        private static IEnumerable<Type> GetSelfAndBaseClasses(Type type)
           866426        {
           1127427            while (type != null)
           1015428            {
           1015429                yield return type;
           261430                type = type.GetTypeInfo().BaseType;
           261431            }
           112432        }
           433
           434        private static void AddInterface(List<Type> types, Type type)
           72435        {
           72436            if (!types.Contains(type))
           54437            {
           54438                types.Add(type);
           270439                foreach (Type t in type.GetInterfaces())
           54440                {
           54441                    AddInterface(types, t);
           54442                }
           54443            }
           72444        }
           445
           446        public static object ParseEnum(string value, Type type)
           871447        {
           871448            if (type.GetTypeInfo().IsEnum && Enum.IsDefined(type, value))
           20449            {
           20450                return Enum.Parse(type, value, true);
           451            }
           452
           851453            return null;
           871454        }
           455
           456        public static bool IsDictionary(Type type)
           142457        {
           142458            return
           142459                FindGenericType(typeof(IDictionary<,>), type) != null ||
           142460#if NET35 || NET40
           142461                false;
           142462#else
           142463                FindGenericType(typeof(IReadOnlyDictionary<,>), type) != null;
           464#endif
           142465        }
           466    }
           467}
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/System.Linq.Dynamic.Core_WrappedValue_1.html b/report/coverlet/System.Linq.Dynamic.Core_WrappedValue_1.html deleted file mode 100644 index eb367099..00000000 --- a/report/coverlet/System.Linq.Dynamic.Core_WrappedValue_1.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -System.Linq.Dynamic.Core.Parser.WrappedValue<T> - Coverage Report - -
          -

          < Summary

          - ---- - - - - - - - - - - - - - - - -
          Class:System.Linq.Dynamic.Core.Parser.WrappedValue<T>
          Assembly:System.Linq.Dynamic.Core
          File(s):C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\WrappedValue.cs
          Covered lines:5
          Uncovered lines:0
          Coverable lines:5
          Total lines:12
          Line coverage:100% (5 of 5)
          Covered branches:0
          Total branches:0
          Covered methods:2
          Total methods:2
          Method coverage:100% (2 of 2)
          -

          Metrics

          - - - - - -
          MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
          .ctor(...)100%11100%
          -

          File(s)

          -

          C:\Dev\GitHub\System.Linq.Dynamic.Core\src\System.Linq.Dynamic.Core\Parser\WrappedValue.cs

          - - - - - - - - - - - - - - - - -
          #LineLine coverage
           1namespace System.Linq.Dynamic.Core.Parser
           2{
           3    internal class WrappedValue<TValue>
           4    {
           365        public TValue Value { get; private set; }
           6
           197        public WrappedValue(TValue value)
           198        {
           199            Value = value;
           1910        }
           11    }
           12}
          -
          -
          -
          -

          Methods/Properties

          -Value()
          -.ctor(TValue)
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/class.js b/report/coverlet/class.js deleted file mode 100644 index dafc9a5c..00000000 --- a/report/coverlet/class.js +++ /dev/null @@ -1,221 +0,0 @@ -/* Chartist.js 0.11.0 - * Copyright © 2017 Gion Kunz - * Free to use under either the WTFPL license or the MIT license. - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT - */ - -!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { - var a = { version: "0.11.0" }; return function (a, b, c) { "use strict"; c.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, c.noop = function (a) { return a }, c.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, c.extend = function (a) { var b, d, e; for (a = a || {}, b = 1; b < arguments.length; b++) { d = arguments[b]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = c.extend(a[f], e) } return a }, c.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, c.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, c.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, c.querySelector = function (a) { return a instanceof Node ? a : b.querySelector(a) }, c.times = function (a) { return Array.apply(null, new Array(a)) }, c.sum = function (a, b) { return a + (b ? b : 0) }, c.mapMultiply = function (a) { return function (b) { return b * a } }, c.mapAdd = function (a) { return function (b) { return b + a } }, c.serialMap = function (a, b) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return c.times(e).forEach(function (c, e) { var f = a.map(function (a) { return a[e] }); d[e] = b.apply(null, f) }), d }, c.roundWithPrecision = function (a, b) { var d = Math.pow(10, b || c.precision); return Math.round(a * d) / d }, c.precision = 8, c.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, c.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, b, c.escapingMap[b]) }, a)) }, c.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, c.escapingMap[b], b) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (b) { } return a }, c.createSvg = function (a, b, d, e) { var f; return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(c.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new c.Svg("svg").attr({ width: b, height: d }).addClass(e), f._node.style.width = b, f._node.style.height = d, a.appendChild(f._node), f }, c.normalizeData = function (a, b, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = c.getDataArray({ series: a.series || [] }, b, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, c.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), b && c.reverseData(f.normalized), f }, c.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, c.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, c.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, c.getDataArray = function (a, b, d) { function e(a) { if (c.safeHasProperty(a, "value")) return e(a.value); if (c.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!c.isDataHoleValue(a)) { if (d) { var b = {}; return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b } return c.getNumberOrUndefined(a) } } return a.series.map(e) }, c.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, c.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, c.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, c.projectLength = function (a, b, c) { return b / c.range * a }, c.getAvailableHeight = function (a, b) { return Math.max((c.quantity(b.height).value || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0) }, c.getHighLow = function (a, b, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === b.high ? -Number.MAX_VALUE : +b.high, low: void 0 === b.low ? Number.MAX_VALUE : +b.low }, g = void 0 === b.high, h = void 0 === b.low; return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, c.isNumeric = function (a) { return null !== a && isFinite(a) }, c.isFalseyButZero = function (a) { return !a && 0 !== a }, c.getNumberOrUndefined = function (a) { return c.isNumeric(a) ? +a : void 0 }, c.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, c.getMultiValue = function (a, b) { return c.isMultiValue(a) ? c.getNumberOrUndefined(a[b || "y"]) : c.getNumberOrUndefined(a) }, c.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, c.getBounds = function (a, b, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: b.high, low: b.low }; k.valueRange = k.high - k.low, k.oom = c.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = c.projectLength(a, k.step, k), m = l < d, n = e ? c.rho(k.range) : 0; if (e && c.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && c.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && c.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(c.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = c.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, c.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, c.createChartRect = function (a, b, d) { var e = !(!b.axisX && !b.axisY), f = e ? b.axisY.offset : 0, g = e ? b.axisX.offset : 0, h = a.width() || c.quantity(b.width).value || 0, i = a.height() || c.quantity(b.height).value || 0, j = c.normalizePadding(b.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, c.createGrid = function (a, b, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", c.extend({ type: "grid", axis: d, index: b, group: g, element: k }, j)) }, c.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, c.createLabel = function (a, d, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = d, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = b.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", c.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, c.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", c.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, c.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, c.optionsProvider = function (b, d, e) { function f(b) { var f = h; if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = a.matchMedia(d[i][0]); g.matches && (h = c.extend(h, d[i][1])) } e && b && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = c.extend({}, b), k = []; if (!a.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = a.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return c.extend({}, h) } } }, c.splitIntoSegments = function (a, b, d) { var e = { increasingX: !1, fillHoles: !1 }; d = c.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === c.getMultiValue(b[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(b[h / 2])); return f } }(window, document, a), function (a, b, c) { "use strict"; c.Interpolation = {}, c.Interpolation.none = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e = new c.Svg.Path, f = !0, g = 0; g < b.length; g += 2) { var h = b[g], i = b[g + 1], j = d[g / 2]; void 0 !== c.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, c.Interpolation.simple = function (a) { var b = { divisor: 2, fillHoles: !1 }; a = c.extend({}, b, a); var d = 1 / Math.max(1, a.divisor); return function (b, e) { for (var f, g, h, i = new c.Svg.Path, j = 0; j < b.length; j += 2) { var k = b[j], l = b[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, c.Interpolation.cardinal = function (a) { var b = { tension: 1, fillHoles: !1 }; a = c.extend({}, b, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(b, g) { var h = c.splitIntoSegments(b, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(i) } if (b = h[0].pathCoordinates, g = h[0].valueData, b.length <= 4) return c.Interpolation.none()(b, g); for (var j, k = (new c.Svg.Path).move(b[0], b[1], !1, g[0]), l = 0, m = b.length; m - 2 * !j > l; l += 2) { var n = [{ x: +b[l - 2], y: +b[l - 1] }, { x: +b[l], y: +b[l + 1] }, { x: +b[l + 2], y: +b[l + 3] }, { x: +b[l + 4], y: +b[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +b[0], y: +b[1] } : m - 2 === l && (n[2] = { x: +b[0], y: +b[1] }, n[3] = { x: +b[2], y: +b[3] }) : n[0] = { x: +b[m - 2], y: +b[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +b[l], y: +b[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return c.Interpolation.none()([]) } }, c.Interpolation.monotoneCubic = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function d(b, e) { var f = c.splitIntoSegments(b, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(g) } if (b = f[0].pathCoordinates, e = f[0].valueData, b.length <= 4) return c.Interpolation.none()(b, e); var h, i, j = [], k = [], l = b.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = b[2 * h], k[h] = b[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new c.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return c.Interpolation.none()([]) } }, c.Interpolation.step = function (a) { var b = { postpone: !0, fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e, f, g, h = new c.Svg.Path, i = 0; i < b.length; i += 2) { var j = b[i], k = b[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(window, document, a), function (a, b, c) { "use strict"; c.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function e(a, b) { var d = b || this.prototype || c.Class, e = Object.create(d); c.Class.cloneDefinitions(e, a); var f = function () { var a, b = e.constructor || function () { }; return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function f() { var a = d(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } c.Class = { extend: e, cloneDefinitions: f } }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function e() { return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function f(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function g(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function h() { a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function i(a, b, d, e, f) { this.container = c.querySelector(a), this.data = b || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0) } c.Base = c.Class.extend({ constructor: i, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: d, detach: e, on: f, off: g, version: c.version, supportsForeignObject: !1 }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, d, e, f, g) { a instanceof Element ? this._node = a : (this._node = b.createElementNS(c.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": c.namespaces.ct })), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node)) } function e(a, b) { return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (b) { if (void 0 !== a[b]) if (b.indexOf(":") !== -1) { var d = b.split(":"); this._node.setAttributeNS(c.namespaces[d[0]], b, a[b]) } else this._node.setAttribute(b, a[b]) }.bind(this)), this) } function f(a, b, d, e) { return new c.Svg(a, b, d, this, e) } function g() { return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null } function h() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new c.Svg(a) } function i(a) { var b = this._node.querySelector(a); return b ? new c.Svg(b) : null } function j(a) { var b = this._node.querySelectorAll(a); return b.length ? new c.Svg.List(b) : null } function k() { return this._node } function l(a, d, e, f) { if ("string" == typeof a) { var g = b.createElement("div"); g.innerHTML = a, a = g.firstChild } a.setAttribute("xmlns", c.namespaces.xmlns); var h = this.elem("foreignObject", d, e, f); return h._node.appendChild(a), h } function m(a) { return this._node.appendChild(b.createTextNode(a)), this } function n() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function o() { return this._node.parentNode.removeChild(this._node), this.parent() } function p(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function q(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function r() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function s(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function t(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function u() { return this._node.setAttribute("class", ""), this } function v() { return this._node.getBoundingClientRect().height } function w() { return this._node.getBoundingClientRect().width } function x(a, b, d) { return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) { function f(a, b) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", c.extend({ attributeName: e }, a)), b && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), b && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], b) }.bind(this)), this } function y(a) { var b = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new c.Svg(a[d])); Object.keys(c.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { b[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return b.svgElements.forEach(function (b) { c.Svg.prototype[a].apply(b, d) }), b } }) } c.Svg = c.Class.extend({ constructor: d, attr: e, elem: f, parent: g, root: h, querySelector: i, querySelectorAll: j, getNode: k, foreignObject: l, text: m, empty: n, remove: o, replace: p, append: q, classes: r, addClass: s, removeClass: t, removeAllClasses: u, height: v, width: w, animate: x }), c.Svg.isSupported = function (a) { return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; c.Svg.Easing = z, c.Svg.List = c.Class.extend({ constructor: y }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e, f, g) { var h = c.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, b, g ? { data: g } : {}); d.splice(e, 0, h) } function e(a, b) { a.forEach(function (c, d) { u[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function f(a, b) { this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b) } function g(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function h(a) { return this.pathElements.splice(this.pos, a), this } function i(a, b, c, e) { return d("M", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function j(a, b, c, e) { return d("L", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function k(a, b, c, e, f, g, h, i) { return d("C", { x1: +a, y1: +b, x2: +c, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function l(a, b, c, e, f, g, h, i, j) { return d("A", { rx: +a, ry: +b, xAr: +c, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function m(a) { var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === b[b.length - 1][0].toUpperCase() && b.pop(); var d = b.map(function (a) { var b = a.shift(), d = u[b.toLowerCase()]; return c.extend({ command: b }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function n() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = u[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function o(a, b) { return e(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function p(a, b) { return e(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function q(a) { return e(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function r(a) { var b = new c.Svg.Path(a || this.close); return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) { return c.extend({}, a) }), b.options = c.extend({}, this.options), b } function s(a) { var b = [new c.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path), b[b.length - 1].pathElements.push(d) }), b } function t(a, b, d) { for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var u = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, v = { accuracy: 3 }; c.Svg.Path = c.Class.extend({ constructor: f, position: g, remove: h, move: i, line: j, curve: k, arc: l, scale: o, translate: p, transform: q, parse: m, stringify: n, clone: r, splitByCommand: s }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c, d) { this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function e(a, b, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), c.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var f = { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }; c.Axis = c.Class.extend({ constructor: d, createGridAndLabels: e, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), c.Axis.units = f }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } c.AutoScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } c.FixedScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function e(a, b) { return this.stepLength * b } c.StepAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = c.normalizeData(this.data, a.reverseData, !0); this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, e, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = c.createChartRect(this.svg, a, f.padding); d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, j, c.extend({}, a.axisX, { ticks: b.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, j, c.extend({}, a.axisY, { high: c.isNumeric(a.high) ? a.high : a.axisY.high, low: c.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (f, g) { var i = h.elem("g"); i.attr({ "ct:series-name": f.name, "ct:meta": c.serialize(f.meta) }), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var k = [], l = []; b.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, b.normalized.series[g]), y: j.y1 - e.projectValue(a, h, b.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: c.getMetaData(f, h) }) }.bind(this)); var m = { lineSmooth: c.getSeriesOption(f, a, "lineSmooth"), showPoint: c.getSeriesOption(f, a, "showPoint"), showLine: c.getSeriesOption(f, a, "showLine"), showArea: c.getSeriesOption(f, a, "showArea"), areaBase: c.getSeriesOption(f, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.monotoneCubic() : c.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (b) { var h = i.elem("line", { x1: b.x, y1: b.y, x2: b.x + .01, y2: b.y }, a.classNames.point).attr({ "ct:value": [b.data.value.x, b.data.value.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(b.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: b.data.value, index: b.data.valueIndex, meta: b.data.meta, series: f, seriesIndex: g, axisX: d, axisY: e, group: i, element: h, x: b.x, y: b.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: b.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: f, seriesIndex: g, seriesMeta: f.meta, axisX: d, axisY: e, group: i, element: p }) } if (m.showArea && e.range) { var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min), r = j.y1 - e.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (c) { var h = i.elem("path", { d: c.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: b.normalized.series[g], path: c.clone(), series: f, seriesIndex: g, axisX: d, axisY: e, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: e.bounds, chartRect: j, axisX: d, axisY: e, svg: this.svg, options: a }) } function e(a, b, d, e) { c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Line = c.Base.extend({ constructor: e, createChart: d }) }(window, document, a), function (a, b, c) { - "use strict"; function d(a) { - var b, d; a.distributeSeries ? (b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), b.normalized.series = b.normalized.series.map(function (a) { return [a] })) : b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var e = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); if (a.stackBars && 0 !== b.normalized.series.length) { - var i = c.serialMap(b.normalized.series, function () { - return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) - }); d = c.getHighLow([i], a, a.horizontalBars ? "x" : "y") - } else d = c.getHighLow(b.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = c.createChartRect(this.svg, a, f.padding); k = a.distributeSeries && a.stackBars ? b.normalized.labels.slice(0, 1) : b.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, b.normalized.series, o, { ticks: k }) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, o, { ticks: k }) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(e, o, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (d, e) { var f, h, i = e - (b.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / b.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / b.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": c.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), b.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, b.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, b.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, b.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, b.normalized.series[e]) }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = c.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(w) }), this.eventEmitter.emit("draw", c.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) - } function e(a, b, d, e) { c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Bar = c.Base.extend({ constructor: e, createChart: d }) - }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function e(a) { var b, e, f, h, i, j = c.normalizeData(this.data), k = [], l = a.startAngle; this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = c.quantity(a.donutWidth); "%" === m.unit && (m.value *= f / 100), f -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? f : "center" === a.labelPosition ? 0 : a.donutSolid ? f - m.value / 2 : f / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (b = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, g) { if (0 !== j.normalized.series[g] || !a.ignoreEmptyValues) { k[g].attr({ "ct:series-name": e.name }), k[g].addClass([a.classNames.series, e.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var p = i > 0 ? l + j.normalized.series[g] / i * 360 : 0, q = Math.max(0, l - (0 === g || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = c.polarToCartesian(n.x, n.y, f, q), v = c.polarToCartesian(n.x, n.y, f, p), w = new c.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(f, f, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = f - m.value, r = c.polarToCartesian(n.x, n.y, t, l - (0 === g || o ? 0 : .2)), s = c.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[g].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[g], "ct:meta": c.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[g], totalDataSum: i, index: g, meta: e.meta, series: e, group: k[g], element: y, path: w.clone(), center: n, radius: f, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : c.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !c.isFalseyButZero(j.normalized.labels[g]) ? j.normalized.labels[g] : j.normalized.series[g]; var B = a.labelInterpolationFnc(A, g); if (B || 0 === B) { var C = b.elem("text", { dx: z.x, dy: z.y, "text-anchor": d(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: g, group: b, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function f(a, b, d, e) { c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e) } var g = { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: c.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }; c.Pie = c.Base.extend({ constructor: f, createChart: e, determineAnchorPosition: d }) }(window, document, a), a -}); - -var i, l, selectedLine = null; - -/* Navigate to hash without browser history entry */ -var navigateToHash = function () { - if (window.history !== undefined && window.history.replaceState !== undefined) { - window.history.replaceState(undefined, undefined, this.getAttribute("href")); - } -}; - -var hashLinks = document.getElementsByClassName('navigatetohash'); -for (i = 0, l = hashLinks.length; i < l; i++) { - hashLinks[i].addEventListener('click', navigateToHash); -} - -/* Switch test method */ -var switchTestMethod = function () { - var method = this.getAttribute("value"); - console.log("Selected test method: " + method); - - var lines, i, l, coverageData, lineAnalysis, cells; - - lines = document.querySelectorAll('.lineAnalysis tr'); - - for (i = 1, l = lines.length; i < l; i++) { - coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); - lineAnalysis = coverageData[method]; - cells = lines[i].querySelectorAll('td'); - if (lineAnalysis === undefined) { - lineAnalysis = coverageData.AllTestMethods; - if (lineAnalysis.LVS !== 'gray') { - cells[0].setAttribute('class', 'red'); - cells[1].innerText = cells[1].textContent = '0'; - cells[4].setAttribute('class', 'lightred'); - } - } else { - cells[0].setAttribute('class', lineAnalysis.LVS); - cells[1].innerText = cells[1].textContent = lineAnalysis.VC; - cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); - } - } -}; - -var testMethods = document.getElementsByClassName('switchtestmethod'); -for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].addEventListener('change', switchTestMethod); -} - -/* Highlight test method by line */ -var toggleLine = function () { - if (selectedLine === this) { - selectedLine = null; - } else { - selectedLine = null; - unhighlightTestMethods(); - highlightTestMethods.call(this); - selectedLine = this; - } - -}; -var highlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var lineAnalysis; - var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); - var testMethods = document.getElementsByClassName('testmethod'); - - for (i = 0, l = testMethods.length; i < l; i++) { - lineAnalysis = coverageData[testMethods[i].id]; - if (lineAnalysis === undefined) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } else { - testMethods[i].className += ' light' + lineAnalysis.LVS; - } - } -}; -var unhighlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var testMethods = document.getElementsByClassName('testmethod'); - for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } -}; -var coverableLines = document.getElementsByClassName('coverableline'); -for (i = 0, l = coverableLines.length; i < l; i++) { - coverableLines[i].addEventListener('click', toggleLine); - coverableLines[i].addEventListener('mouseenter', highlightTestMethods); - coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); -} - -/* History charts */ -var renderChart = function (chart) { - // Remove current children (e.g. PNG placeholder) - while (chart.firstChild) { - chart.firstChild.remove(); - } - - var chartData = window[chart.getAttribute('data-data')]; - var options = { - axisY: { - type: undefined, - onlyInteger: true - }, - lineSmooth: false, - low: 0, - high: 100, - scaleMinSpace: 20, - onlyInteger: true, - fullWidth: true - }; - var lineChart = new Chartist.Line(chart, { - labels: [], - series: chartData.series - }, options); - - /* Zoom */ - var zoomButtonDiv = document.createElement("div"); - zoomButtonDiv.className = "toggleZoom"; - var zoomButtonLink = document.createElement("a"); - zoomButtonLink.setAttribute("href", ""); - var zoomButtonText = document.createElement("i"); - zoomButtonText.className = "icon-search-plus"; - - zoomButtonLink.appendChild(zoomButtonText); - zoomButtonDiv.appendChild(zoomButtonLink); - - chart.appendChild(zoomButtonDiv); - - zoomButtonDiv.addEventListener('click', function (event) { - event.preventDefault(); - - if (options.axisY.type === undefined) { - options.axisY.type = Chartist.AutoScaleAxis; - zoomButtonText.className = "icon-search-minus"; - } else { - options.axisY.type = undefined; - zoomButtonText.className = "icon-search-plus"; - } - - lineChart.update(null, options); - }); - - var tooltip = document.createElement("div"); - tooltip.className = "tooltip"; - - chart.appendChild(tooltip); - - /* Tooltips */ - var showToolTip = function () { - var point = this; - var index = [].slice.call(chart.getElementsByClassName('ct-point')).indexOf(point); - - tooltip.innerHTML = chartData.tooltips[index % chartData.tooltips.length]; - tooltip.style.display = 'block'; - }; - - var moveToolTip = function (event) { - var box = chart.getBoundingClientRect(); - var left = event.pageX - box.left - window.pageXOffset; - var top = event.pageY - box.top - window.pageYOffset; - - left = left + 20; - top = top - tooltip.offsetHeight / 2; - - if (left + tooltip.offsetWidth > box.width) { - left -= tooltip.offsetWidth + 40; - } - - if (top < 0) { - top = 0; - } - - if (top + tooltip.offsetHeight > box.height) { - top = box.height - tooltip.offsetHeight; - } - - tooltip.style.left = left + 'px'; - tooltip.style.top = top + 'px'; - }; - - var hideToolTip = function () { - tooltip.style.display = 'none'; - }; - chart.addEventListener('mousemove', moveToolTip); - - lineChart.on('created', function () { - var chartPoints = chart.getElementsByClassName('ct-point'); - for (i = 0, l = chartPoints.length; i < l; i++) { - chartPoints[i].addEventListener('mousemove', showToolTip); - chartPoints[i].addEventListener('mouseout', hideToolTip); - } - }); -}; - -var charts = document.getElementsByClassName('historychart'); -for (i = 0, l = charts.length; i < l; i++) { - renderChart(charts[i]); -} \ No newline at end of file diff --git a/report/coverlet/icon_cube.svg b/report/coverlet/icon_cube.svg deleted file mode 100644 index 3302443c..00000000 --- a/report/coverlet/icon_cube.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_cube_dark.svg b/report/coverlet/icon_cube_dark.svg deleted file mode 100644 index 3e7f0fa8..00000000 --- a/report/coverlet/icon_cube_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_down-dir_active.svg b/report/coverlet/icon_down-dir_active.svg deleted file mode 100644 index d11cf041..00000000 --- a/report/coverlet/icon_down-dir_active.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_down-dir_active_dark.svg b/report/coverlet/icon_down-dir_active_dark.svg deleted file mode 100644 index fa34aeb3..00000000 --- a/report/coverlet/icon_down-dir_active_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_fork.svg b/report/coverlet/icon_fork.svg deleted file mode 100644 index f0148b3a..00000000 --- a/report/coverlet/icon_fork.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_fork_dark.svg b/report/coverlet/icon_fork_dark.svg deleted file mode 100644 index 11930c9b..00000000 --- a/report/coverlet/icon_fork_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_info-circled.svg b/report/coverlet/icon_info-circled.svg deleted file mode 100644 index 252166bb..00000000 --- a/report/coverlet/icon_info-circled.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_info-circled_dark.svg b/report/coverlet/icon_info-circled_dark.svg deleted file mode 100644 index 252166bb..00000000 --- a/report/coverlet/icon_info-circled_dark.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_minus.svg b/report/coverlet/icon_minus.svg deleted file mode 100644 index 3c30c365..00000000 --- a/report/coverlet/icon_minus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_minus_dark.svg b/report/coverlet/icon_minus_dark.svg deleted file mode 100644 index 2516b6fc..00000000 --- a/report/coverlet/icon_minus_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_plus.svg b/report/coverlet/icon_plus.svg deleted file mode 100644 index 79327232..00000000 --- a/report/coverlet/icon_plus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_plus_dark.svg b/report/coverlet/icon_plus_dark.svg deleted file mode 100644 index 6ed4edd0..00000000 --- a/report/coverlet/icon_plus_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_search-minus.svg b/report/coverlet/icon_search-minus.svg deleted file mode 100644 index c174eb5e..00000000 --- a/report/coverlet/icon_search-minus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_search-minus_dark.svg b/report/coverlet/icon_search-minus_dark.svg deleted file mode 100644 index 9caaffbc..00000000 --- a/report/coverlet/icon_search-minus_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_search-plus.svg b/report/coverlet/icon_search-plus.svg deleted file mode 100644 index 04b24ecc..00000000 --- a/report/coverlet/icon_search-plus.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_search-plus_dark.svg b/report/coverlet/icon_search-plus_dark.svg deleted file mode 100644 index 53241945..00000000 --- a/report/coverlet/icon_search-plus_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/icon_sponsor.svg b/report/coverlet/icon_sponsor.svg deleted file mode 100644 index bf6d9591..00000000 --- a/report/coverlet/icon_sponsor.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_star.svg b/report/coverlet/icon_star.svg deleted file mode 100644 index b23c54ea..00000000 --- a/report/coverlet/icon_star.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_star_dark.svg b/report/coverlet/icon_star_dark.svg deleted file mode 100644 index 49c0d034..00000000 --- a/report/coverlet/icon_star_dark.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_up-dir.svg b/report/coverlet/icon_up-dir.svg deleted file mode 100644 index 567c11f3..00000000 --- a/report/coverlet/icon_up-dir.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_up-dir_active.svg b/report/coverlet/icon_up-dir_active.svg deleted file mode 100644 index bb225544..00000000 --- a/report/coverlet/icon_up-dir_active.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_wrench.svg b/report/coverlet/icon_wrench.svg deleted file mode 100644 index b6aa318c..00000000 --- a/report/coverlet/icon_wrench.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/report/coverlet/icon_wrench_dark.svg b/report/coverlet/icon_wrench_dark.svg deleted file mode 100644 index 5c77a9c8..00000000 --- a/report/coverlet/icon_wrench_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/report/coverlet/index.htm b/report/coverlet/index.htm deleted file mode 100644 index b82708b7..00000000 --- a/report/coverlet/index.htm +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - -Summary - Coverage Report - -
          -

          SummaryStarSponsor

          - ---- - - - - - - - - - - - - - - - - - - -
          Generated on:26-6-2022 - 11:09:18
          Parser:OpenCoverParser
          Assemblies:2
          Classes:56
          Files:50
          Covered lines:4698
          Uncovered lines:1002
          Coverable lines:5700
          Total lines:12326
          Line coverage:82.4% (4698 of 5700)
          Covered branches:1816
          Total branches:2117
          Branch coverage:85.7% (1816 of 2117)
          Covered methods:480
          Total methods:630
          Method coverage:76.1% (480 of 630)
          -

          Risk Hotspots

          - - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          AssemblyClassMethodCyclomatic complexity NPath complexity
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Tokenizer.TextParserNextToken()156156
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseComparisonOperator()118118
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ConstantExpressionWrapperWrap(...)8888
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseIdentifier()8686
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.TypeHelperIsCompatibleWith(...)6868
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionHelperConvertNumericTypeToBiggestCommonTypeForBinaryOperator(...)5858
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.NumberParserParseIntegerLiteral(...)5858
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseNew()5454
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserGenerateConditional(...)4646
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseMemberAccess(...)4444
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionPromoterPromote(...)4343
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.DynamicClassFactoryCreateType(...)4242
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserTryGenerateConversion(...)3838
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinderIsApplicable(...)3636
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseTypeAccess(...)3434
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseEnumerable(...)3434
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseLogicalAndOrOperator()3232
          -
          -

          Coverage

          - - ------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          NameCoveredUncoveredCoverableTotalLine coverageCoveredTotalBranch coverage
          Microsoft.EntityFrameworkCore.DynamicLinq233206439158053%
            
          254654.3%
            
          Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions14809419414.8%
            
          00
           
          Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions20860268111977.6%
            
          213070%
            
          System.Linq.Dynamic.Core.Validation.Check11364713623.4%
            
          41625%
            
          System.Linq.Dynamic.Core.Validation.CoreStrings01212410%
           
          00
           
          System.Linq.Expressions.LambdaExpressionExtensions033150%
           
          00
           
          System.Reflection.CustomIntrospectionExtensions033400%
           
          00
           
          System.Reflection.CustomTypeBuilderExtensions01212350%
           
          00
           
          System.Linq.Dynamic.Core446579652611107784.8%
            
          1791207186.4%
            
          System.Linq.Dynamic.Core.AssemblyBuilderFactory30325100%
           
          00
           
          System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider48136115678.6%
            
          162080%
            
          System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider5025210996.1%
            
          101283.3%
            
          System.Linq.Dynamic.Core.DefaultAssemblyHelper133163981.2%
            
          22100%
           
          System.Linq.Dynamic.Core.DefaultQueryableAnalyzer287357180%
            
          131681.2%
            
          System.Linq.Dynamic.Core.DynamicClass560651787.6%
            
          0120%
           
          System.Linq.Dynamic.Core.DynamicClassFactory2651027546796.3%
            
          434889.5%
            
          System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions032321060%
           
          00
           
          System.Linq.Dynamic.Core.DynamicEnumerableExtensions37037135100%
           
          00
           
          System.Linq.Dynamic.Core.DynamicExpressionParser823011245373.2%
            
          121866.6%
            
          System.Linq.Dynamic.Core.DynamicGetMemberBinder304346888.2%
            
          91275%
            
          System.Linq.Dynamic.Core.DynamicProperty70735100%
           
          00
           
          System.Linq.Dynamic.Core.DynamicQueryableExtensions968541022280994.7%
            
          8810881.4%
            
          System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions6320426743023.5%
            
          00
           
          System.Linq.Dynamic.Core.Exceptions.ParseException412166625%
            
          00
           
          System.Linq.Dynamic.Core.ExtensibilityPoint10117100%
           
          00
           
          System.Linq.Dynamic.Core.GroupResult70747100%
           
          00
           
          System.Linq.Dynamic.Core.PagedResult50564100%
           
          00
           
          System.Linq.Dynamic.Core.PagedResult<T>10164100%
           
          00
           
          System.Linq.Dynamic.Core.ParameterExpressionHelper2302357100%
           
          1010100%
           
          System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper1401429100%
           
          22100%
           
          System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper819918019945%
            
          468852.2%
            
          System.Linq.Dynamic.Core.Parser.Constants30312100%
           
          22100%
           
          System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib229315970.9%
            
          5862.5%
            
          System.Linq.Dynamic.Core.Parser.ExpressionHelper2331024340695.8%
            
          13016479.2%
            
          System.Linq.Dynamic.Core.Parser.ExpressionParser12141621376216788.2%
            
          72282587.5%
            
          System.Linq.Dynamic.Core.Parser.ExpressionPromoter52052124100%
           
          4343100%
           
          System.Linq.Dynamic.Core.Parser.KeywordsHelper5505589100%
           
          1616100%
           
          System.Linq.Dynamic.Core.Parser.NumberParser1121813030086.1%
            
          9010288.2%
            
          System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper6266810491.1%
            
          6875%
            
          System.Linq.Dynamic.Core.Parser.StringParser1701741100%
           
          1010100%
           
          System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData30312100%
           
          00
           
          System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder2001021032495.2%
            
          10711692.2%
            
          System.Linq.Dynamic.Core.Parser.TypeFinder514559292.7%
            
          262892.8%
            
          System.Linq.Dynamic.Core.Parser.TypeHelper185619146796.8%
            
          13814197.8%
            
          System.Linq.Dynamic.Core.Parser.WrappedValue<T>50512100%
           
          00
           
          System.Linq.Dynamic.Core.ParsingConfig48048202100%
           
          1212100%
           
          System.Linq.Dynamic.Core.Tokenizer.TextParser348134952899.7%
           
          18419096.8%
            
          System.Linq.Dynamic.Core.Tokenizer.Token40428100%
           
          00
           
          System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter40423100%
           
          1250%
            
          System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory1601653100%
           
          1212100%
           
          System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer242267492.3%
            
          3475%
            
          System.Linq.Dynamic.Core.Util.QueryableMethodFinder213244787.5%
            
          202290.9%
            
          System.Linq.Dynamic.Core.Util.RuntimeInformationUtils90922100%
           
          1250%
            
          System.Linq.Dynamic.Core.Validation.Check33144713670.2%
            
          121675%
            
          System.Linq.Dynamic.Core.Validation.CoreStrings39124125%
            
          00
           
          System.Linq.Expressions.LambdaExpressionExtensions30315100%
           
          00
           
          System.Reflection.CustomIntrospectionExtensions30340100%
           
          00
           
          System.Reflection.CustomTypeBuilderExtensions01212350%
           
          00
           
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/index.html b/report/coverlet/index.html deleted file mode 100644 index b82708b7..00000000 --- a/report/coverlet/index.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - -Summary - Coverage Report - -
          -

          SummaryStarSponsor

          - ---- - - - - - - - - - - - - - - - - - - -
          Generated on:26-6-2022 - 11:09:18
          Parser:OpenCoverParser
          Assemblies:2
          Classes:56
          Files:50
          Covered lines:4698
          Uncovered lines:1002
          Coverable lines:5700
          Total lines:12326
          Line coverage:82.4% (4698 of 5700)
          Covered branches:1816
          Total branches:2117
          Branch coverage:85.7% (1816 of 2117)
          Covered methods:480
          Total methods:630
          Method coverage:76.1% (480 of 630)
          -

          Risk Hotspots

          - - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          AssemblyClassMethodCyclomatic complexity NPath complexity
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Tokenizer.TextParserNextToken()156156
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseComparisonOperator()118118
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ConstantExpressionWrapperWrap(...)8888
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseIdentifier()8686
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.TypeHelperIsCompatibleWith(...)6868
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionHelperConvertNumericTypeToBiggestCommonTypeForBinaryOperator(...)5858
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.NumberParserParseIntegerLiteral(...)5858
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseNew()5454
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserGenerateConditional(...)4646
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseMemberAccess(...)4444
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionPromoterPromote(...)4343
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.DynamicClassFactoryCreateType(...)4242
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserTryGenerateConversion(...)3838
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinderIsApplicable(...)3636
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseTypeAccess(...)3434
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseEnumerable(...)3434
          System.Linq.Dynamic.CoreSystem.Linq.Dynamic.Core.Parser.ExpressionParserParseLogicalAndOrOperator()3232
          -
          -

          Coverage

          - - ------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          NameCoveredUncoveredCoverableTotalLine coverageCoveredTotalBranch coverage
          Microsoft.EntityFrameworkCore.DynamicLinq233206439158053%
            
          254654.3%
            
          Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions14809419414.8%
            
          00
           
          Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions20860268111977.6%
            
          213070%
            
          System.Linq.Dynamic.Core.Validation.Check11364713623.4%
            
          41625%
            
          System.Linq.Dynamic.Core.Validation.CoreStrings01212410%
           
          00
           
          System.Linq.Expressions.LambdaExpressionExtensions033150%
           
          00
           
          System.Reflection.CustomIntrospectionExtensions033400%
           
          00
           
          System.Reflection.CustomTypeBuilderExtensions01212350%
           
          00
           
          System.Linq.Dynamic.Core446579652611107784.8%
            
          1791207186.4%
            
          System.Linq.Dynamic.Core.AssemblyBuilderFactory30325100%
           
          00
           
          System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider48136115678.6%
            
          162080%
            
          System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider5025210996.1%
            
          101283.3%
            
          System.Linq.Dynamic.Core.DefaultAssemblyHelper133163981.2%
            
          22100%
           
          System.Linq.Dynamic.Core.DefaultQueryableAnalyzer287357180%
            
          131681.2%
            
          System.Linq.Dynamic.Core.DynamicClass560651787.6%
            
          0120%
           
          System.Linq.Dynamic.Core.DynamicClassFactory2651027546796.3%
            
          434889.5%
            
          System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions032321060%
           
          00
           
          System.Linq.Dynamic.Core.DynamicEnumerableExtensions37037135100%
           
          00
           
          System.Linq.Dynamic.Core.DynamicExpressionParser823011245373.2%
            
          121866.6%
            
          System.Linq.Dynamic.Core.DynamicGetMemberBinder304346888.2%
            
          91275%
            
          System.Linq.Dynamic.Core.DynamicProperty70735100%
           
          00
           
          System.Linq.Dynamic.Core.DynamicQueryableExtensions968541022280994.7%
            
          8810881.4%
            
          System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions6320426743023.5%
            
          00
           
          System.Linq.Dynamic.Core.Exceptions.ParseException412166625%
            
          00
           
          System.Linq.Dynamic.Core.ExtensibilityPoint10117100%
           
          00
           
          System.Linq.Dynamic.Core.GroupResult70747100%
           
          00
           
          System.Linq.Dynamic.Core.PagedResult50564100%
           
          00
           
          System.Linq.Dynamic.Core.PagedResult<T>10164100%
           
          00
           
          System.Linq.Dynamic.Core.ParameterExpressionHelper2302357100%
           
          1010100%
           
          System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper1401429100%
           
          22100%
           
          System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper819918019945%
            
          468852.2%
            
          System.Linq.Dynamic.Core.Parser.Constants30312100%
           
          22100%
           
          System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib229315970.9%
            
          5862.5%
            
          System.Linq.Dynamic.Core.Parser.ExpressionHelper2331024340695.8%
            
          13016479.2%
            
          System.Linq.Dynamic.Core.Parser.ExpressionParser12141621376216788.2%
            
          72282587.5%
            
          System.Linq.Dynamic.Core.Parser.ExpressionPromoter52052124100%
           
          4343100%
           
          System.Linq.Dynamic.Core.Parser.KeywordsHelper5505589100%
           
          1616100%
           
          System.Linq.Dynamic.Core.Parser.NumberParser1121813030086.1%
            
          9010288.2%
            
          System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper6266810491.1%
            
          6875%
            
          System.Linq.Dynamic.Core.Parser.StringParser1701741100%
           
          1010100%
           
          System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData30312100%
           
          00
           
          System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder2001021032495.2%
            
          10711692.2%
            
          System.Linq.Dynamic.Core.Parser.TypeFinder514559292.7%
            
          262892.8%
            
          System.Linq.Dynamic.Core.Parser.TypeHelper185619146796.8%
            
          13814197.8%
            
          System.Linq.Dynamic.Core.Parser.WrappedValue<T>50512100%
           
          00
           
          System.Linq.Dynamic.Core.ParsingConfig48048202100%
           
          1212100%
           
          System.Linq.Dynamic.Core.Tokenizer.TextParser348134952899.7%
           
          18419096.8%
            
          System.Linq.Dynamic.Core.Tokenizer.Token40428100%
           
          00
           
          System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter40423100%
           
          1250%
            
          System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory1601653100%
           
          1212100%
           
          System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer242267492.3%
            
          3475%
            
          System.Linq.Dynamic.Core.Util.QueryableMethodFinder213244787.5%
            
          202290.9%
            
          System.Linq.Dynamic.Core.Util.RuntimeInformationUtils90922100%
           
          1250%
            
          System.Linq.Dynamic.Core.Validation.Check33144713670.2%
            
          121675%
            
          System.Linq.Dynamic.Core.Validation.CoreStrings39124125%
            
          00
           
          System.Linq.Expressions.LambdaExpressionExtensions30315100%
           
          00
           
          System.Reflection.CustomIntrospectionExtensions30340100%
           
          00
           
          System.Reflection.CustomTypeBuilderExtensions01212350%
           
          00
           
          -
          -
          - - \ No newline at end of file diff --git a/report/coverlet/main.js b/report/coverlet/main.js deleted file mode 100644 index 3236a4a9..00000000 --- a/report/coverlet/main.js +++ /dev/null @@ -1,441 +0,0 @@ -/* Chartist.js 0.11.0 - * Copyright © 2017 Gion Kunz - * Free to use under either the WTFPL license or the MIT license. - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL - * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT - */ - -!function (a, b) { "function" == typeof define && define.amd ? define("Chartist", [], function () { return a.Chartist = b() }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() }(this, function () { - var a = { version: "0.11.0" }; return function (a, b, c) { "use strict"; c.namespaces = { svg: "http://www.w3.org/2000/svg", xmlns: "http://www.w3.org/2000/xmlns/", xhtml: "http://www.w3.org/1999/xhtml", xlink: "http://www.w3.org/1999/xlink", ct: "http://gionkunz.github.com/chartist-js/ct" }, c.noop = function (a) { return a }, c.alphaNumerate = function (a) { return String.fromCharCode(97 + a % 26) }, c.extend = function (a) { var b, d, e; for (a = a || {}, b = 1; b < arguments.length; b++) { d = arguments[b]; for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = c.extend(a[f], e) } return a }, c.replaceAll = function (a, b, c) { return a.replace(new RegExp(b, "g"), c) }, c.ensureUnit = function (a, b) { return "number" == typeof a && (a += b), a }, c.quantity = function (a) { if ("string" == typeof a) { var b = /^(\d+)\s*(.*)$/g.exec(a); return { value: +b[1], unit: b[2] || void 0 } } return { value: a } }, c.querySelector = function (a) { return a instanceof Node ? a : b.querySelector(a) }, c.times = function (a) { return Array.apply(null, new Array(a)) }, c.sum = function (a, b) { return a + (b ? b : 0) }, c.mapMultiply = function (a) { return function (b) { return b * a } }, c.mapAdd = function (a) { return function (b) { return b + a } }, c.serialMap = function (a, b) { var d = [], e = Math.max.apply(null, a.map(function (a) { return a.length })); return c.times(e).forEach(function (c, e) { var f = a.map(function (a) { return a[e] }); d[e] = b.apply(null, f) }), d }, c.roundWithPrecision = function (a, b) { var d = Math.pow(10, b || c.precision); return Math.round(a * d) / d }, c.precision = 8, c.escapingMap = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, c.serialize = function (a) { return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ data: a })), Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, b, c.escapingMap[b]) }, a)) }, c.deserialize = function (a) { if ("string" != typeof a) return a; a = Object.keys(c.escapingMap).reduce(function (a, b) { return c.replaceAll(a, c.escapingMap[b], b) }, a); try { a = JSON.parse(a), a = void 0 !== a.data ? a.data : a } catch (b) { } return a }, c.createSvg = function (a, b, d, e) { var f; return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { return a.getAttributeNS(c.namespaces.xmlns, "ct") }).forEach(function (b) { a.removeChild(b) }), f = new c.Svg("svg").attr({ width: b, height: d }).addClass(e), f._node.style.width = b, f._node.style.height = d, a.appendChild(f._node), f }, c.normalizeData = function (a, b, d) { var e, f = { raw: a, normalized: {} }; return f.normalized.series = c.getDataArray({ series: a.series || [] }, b, d), e = f.normalized.series.every(function (a) { return a instanceof Array }) ? Math.max.apply(null, f.normalized.series.map(function (a) { return a.length })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, c.times(Math.max(0, e - f.normalized.labels.length)).map(function () { return "" })), b && c.reverseData(f.normalized), f }, c.safeHasProperty = function (a, b) { return null !== a && "object" == typeof a && a.hasOwnProperty(b) }, c.isDataHoleValue = function (a) { return null === a || void 0 === a || "number" == typeof a && isNaN(a) }, c.reverseData = function (a) { a.labels.reverse(), a.series.reverse(); for (var b = 0; b < a.series.length; b++)"object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() }, c.getDataArray = function (a, b, d) { function e(a) { if (c.safeHasProperty(a, "value")) return e(a.value); if (c.safeHasProperty(a, "data")) return e(a.data); if (a instanceof Array) return a.map(e); if (!c.isDataHoleValue(a)) { if (d) { var b = {}; return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b } return c.getNumberOrUndefined(a) } } return a.series.map(e) }, c.normalizePadding = function (a, b) { return b = b || 0, "number" == typeof a ? { top: a, right: a, bottom: a, left: a } : { top: "number" == typeof a.top ? a.top : b, right: "number" == typeof a.right ? a.right : b, bottom: "number" == typeof a.bottom ? a.bottom : b, left: "number" == typeof a.left ? a.left : b } }, c.getMetaData = function (a, b) { var c = a.data ? a.data[b] : a[b]; return c ? c.meta : void 0 }, c.orderOfMagnitude = function (a) { return Math.floor(Math.log(Math.abs(a)) / Math.LN10) }, c.projectLength = function (a, b, c) { return b / c.range * a }, c.getAvailableHeight = function (a, b) { return Math.max((c.quantity(b.height).value || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0) }, c.getHighLow = function (a, b, d) { function e(a) { if (void 0 !== a) if (a instanceof Array) for (var b = 0; b < a.length; b++)e(a[b]); else { var c = d ? +a[d] : +a; g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) } } b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {}); var f = { high: void 0 === b.high ? -Number.MAX_VALUE : +b.high, low: void 0 === b.low ? Number.MAX_VALUE : +b.low }, g = void 0 === b.high, h = void 0 === b.low; return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f }, c.isNumeric = function (a) { return null !== a && isFinite(a) }, c.isFalseyButZero = function (a) { return !a && 0 !== a }, c.getNumberOrUndefined = function (a) { return c.isNumeric(a) ? +a : void 0 }, c.isMultiValue = function (a) { return "object" == typeof a && ("x" in a || "y" in a) }, c.getMultiValue = function (a, b) { return c.isMultiValue(a) ? c.getNumberOrUndefined(a[b || "y"]) : c.getNumberOrUndefined(a) }, c.rho = function (a) { function b(a, c) { return a % c === 0 ? c : b(c, a % c) } function c(a) { return a * a + 1 } if (1 === a) return a; var d, e = 2, f = 2; if (a % 2 === 0) return 2; do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); return d }, c.getBounds = function (a, b, d, e) { function f(a, b) { return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a } var g, h, i, j = 0, k = { high: b.high, low: b.low }; k.valueRange = k.high - k.low, k.oom = c.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); var l = c.projectLength(a, k.step, k), m = l < d, n = e ? c.rho(k.range) : 0; if (e && c.projectLength(a, 1, k) >= d) k.step = 1; else if (e && n < k.step && c.projectLength(a, n, k) >= d) k.step = n; else for (; ;) { if (m && c.projectLength(a, k.step, k) <= d) k.step *= 2; else { if (m || !(c.projectLength(a, k.step / 2, k) >= d)) break; if (k.step /= 2, e && k.step % 1 !== 0) { k.step *= 2; break } } if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") } var o = 2.221e-16; for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;)h = f(h, k.step); for (; i - k.step >= k.high;)i = f(i, -k.step); k.min = h, k.max = i, k.range = k.max - k.min; var p = []; for (g = k.min; g <= k.max; g = f(g, k.step)) { var q = c.roundWithPrecision(g); q !== p[p.length - 1] && p.push(q) } return k.values = p, k }, c.polarToCartesian = function (a, b, c, d) { var e = (d - 90) * Math.PI / 180; return { x: a + c * Math.cos(e), y: b + c * Math.sin(e) } }, c.createChartRect = function (a, b, d) { var e = !(!b.axisX && !b.axisY), f = e ? b.axisY.offset : 0, g = e ? b.axisX.offset : 0, h = a.width() || c.quantity(b.width).value || 0, i = a.height() || c.quantity(b.height).value || 0, j = c.normalizePadding(b.chartPadding, d); h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); var k = { padding: j, width: function () { return this.x2 - this.x1 }, height: function () { return this.y1 - this.y2 } }; return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k }, c.createGrid = function (a, b, d, e, f, g, h, i) { var j = {}; j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; var k = g.elem("line", j, h.join(" ")); i.emit("draw", c.extend({ type: "grid", axis: d, index: b, group: g, element: k }, j)) }, c.createGridBackground = function (a, b, c, d) { var e = a.elem("rect", { x: b.x1, y: b.y2, width: b.width(), height: b.height() }, c, !0); d.emit("draw", { type: "gridBackground", group: a, element: e }) }, c.createLabel = function (a, d, e, f, g, h, i, j, k, l, m) { var n, o = {}; if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = d, o[g.counterUnits.len] = Math.max(0, h - 10), l) { var p = b.createElement("span"); p.className = k.join(" "), p.setAttribute("xmlns", c.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, c.extend({ style: "overflow: visible;" }, o)) } else n = j.elem("text", o, k.join(" ")).text(f[e]); m.emit("draw", c.extend({ type: "label", axis: g, index: e, group: j, element: n, text: f[e] }, o)) }, c.getSeriesOption = function (a, b, c) { if (a.name && b.series && b.series[a.name]) { var d = b.series[a.name]; return d.hasOwnProperty(c) ? d[c] : b[c] } return b[c] }, c.optionsProvider = function (b, d, e) { function f(b) { var f = h; if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) { var g = a.matchMedia(d[i][0]); g.matches && (h = c.extend(h, d[i][1])) } e && b && e.emit("optionsChanged", { previousOptions: f, currentOptions: h }) } function g() { k.forEach(function (a) { a.removeListener(f) }) } var h, i, j = c.extend({}, b), k = []; if (!a.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; if (d) for (i = 0; i < d.length; i++) { var l = a.matchMedia(d[i][0]); l.addListener(f), k.push(l) } return f(), { removeMediaQueryListeners: g, getCurrentOptions: function () { return c.extend({}, h) } } }, c.splitIntoSegments = function (a, b, d) { var e = { increasingX: !1, fillHoles: !1 }; d = c.extend({}, e, d); for (var f = [], g = !0, h = 0; h < a.length; h += 2)void 0 === c.getMultiValue(b[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ pathCoordinates: [], valueData: [] }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(b[h / 2])); return f } }(window, document, a), function (a, b, c) { "use strict"; c.Interpolation = {}, c.Interpolation.none = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e = new c.Svg.Path, f = !0, g = 0; g < b.length; g += 2) { var h = b[g], i = b[g + 1], j = d[g / 2]; void 0 !== c.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) } return e } }, c.Interpolation.simple = function (a) { var b = { divisor: 2, fillHoles: !1 }; a = c.extend({}, b, a); var d = 1 / Math.max(1, a.divisor); return function (b, e) { for (var f, g, h, i = new c.Svg.Path, j = 0; j < b.length; j += 2) { var k = b[j], l = b[j + 1], m = (k - f) * d, n = e[j / 2]; void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) } return i } }, c.Interpolation.cardinal = function (a) { var b = { tension: 1, fillHoles: !1 }; a = c.extend({}, b, a); var d = Math.min(1, Math.max(0, a.tension)), e = 1 - d; return function f(b, g) { var h = c.splitIntoSegments(b, g, { fillHoles: a.fillHoles }); if (h.length) { if (h.length > 1) { var i = []; return h.forEach(function (a) { i.push(f(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(i) } if (b = h[0].pathCoordinates, g = h[0].valueData, b.length <= 4) return c.Interpolation.none()(b, g); for (var j, k = (new c.Svg.Path).move(b[0], b[1], !1, g[0]), l = 0, m = b.length; m - 2 * !j > l; l += 2) { var n = [{ x: +b[l - 2], y: +b[l - 1] }, { x: +b[l], y: +b[l + 1] }, { x: +b[l + 2], y: +b[l + 3] }, { x: +b[l + 4], y: +b[l + 5] }]; j ? l ? m - 4 === l ? n[3] = { x: +b[0], y: +b[1] } : m - 2 === l && (n[2] = { x: +b[0], y: +b[1] }, n[3] = { x: +b[2], y: +b[3] }) : n[0] = { x: +b[m - 2], y: +b[m - 1] } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { x: +b[l], y: +b[l + 1] }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) } return k } return c.Interpolation.none()([]) } }, c.Interpolation.monotoneCubic = function (a) { var b = { fillHoles: !1 }; return a = c.extend({}, b, a), function d(b, e) { var f = c.splitIntoSegments(b, e, { fillHoles: a.fillHoles, increasingX: !0 }); if (f.length) { if (f.length > 1) { var g = []; return f.forEach(function (a) { g.push(d(a.pathCoordinates, a.valueData)) }), c.Svg.Path.join(g) } if (b = f[0].pathCoordinates, e = f[0].valueData, b.length <= 4) return c.Interpolation.none()(b, e); var h, i, j = [], k = [], l = b.length / 2, m = [], n = [], o = [], p = []; for (h = 0; h < l; h++)j[h] = b[2 * h], k[h] = b[2 * h + 1]; for (h = 0; h < l - 1; h++)o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++)0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); for (i = (new c.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++)i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); return i } return c.Interpolation.none()([]) } }, c.Interpolation.step = function (a) { var b = { postpone: !0, fillHoles: !1 }; return a = c.extend({}, b, a), function (b, d) { for (var e, f, g, h = new c.Svg.Path, i = 0; i < b.length; i += 2) { var j = b[i], k = b[i + 1], l = d[i / 2]; void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) } return h } } }(window, document, a), function (a, b, c) { "use strict"; c.EventEmitter = function () { function a(a, b) { d[a] = d[a] || [], d[a].push(b) } function b(a, b) { d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) } function c(a, b) { d[a] && d[a].forEach(function (a) { a(b) }), d["*"] && d["*"].forEach(function (c) { c(a, b) }) } var d = []; return { addEventHandler: a, removeEventHandler: b, emit: c } } }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = []; if (a.length) for (var c = 0; c < a.length; c++)b.push(a[c]); return b } function e(a, b) { var d = b || this.prototype || c.Class, e = Object.create(d); c.Class.cloneDefinitions(e, a); var f = function () { var a, b = e.constructor || function () { }; return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a }; return f.prototype = e, f["super"] = d, f.extend = this.extend, f } function f() { var a = d(arguments), b = a[0]; return a.splice(1, a.length - 1).forEach(function (a) { Object.getOwnPropertyNames(a).forEach(function (c) { delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) }) }), b } c.Class = { extend: e, cloneDefinitions: f } }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d) { return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { type: "update", data: this.data })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this } function e() { return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this } function f(a, b) { return this.eventEmitter.addEventHandler(a, b), this } function g(a, b) { return this.eventEmitter.removeEventHandler(a, b), this } function h() { a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { this.update() }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { a instanceof Array ? a[0](this, a[1]) : a(this) }.bind(this)), this.eventEmitter.emit("data", { type: "initial", data: this.data }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 } function i(a, b, d, e, f) { this.container = c.querySelector(a), this.data = b || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { this.update() }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0) } c.Base = c.Class.extend({ constructor: i, optionsProvider: void 0, container: void 0, svg: void 0, eventEmitter: void 0, createChart: function () { throw new Error("Base chart type can't be instantiated!") }, update: d, detach: e, on: f, off: g, version: c.version, supportsForeignObject: !1 }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, d, e, f, g) { a instanceof Element ? this._node = a : (this._node = b.createElementNS(c.namespaces.svg, a), "svg" === a && this.attr({ "xmlns:ct": c.namespaces.ct })), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node)) } function e(a, b) { return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (b) { if (void 0 !== a[b]) if (b.indexOf(":") !== -1) { var d = b.split(":"); this._node.setAttributeNS(c.namespaces[d[0]], b, a[b]) } else this._node.setAttribute(b, a[b]) }.bind(this)), this) } function f(a, b, d, e) { return new c.Svg(a, b, d, this, e) } function g() { return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null } function h() { for (var a = this._node; "svg" !== a.nodeName;)a = a.parentNode; return new c.Svg(a) } function i(a) { var b = this._node.querySelector(a); return b ? new c.Svg(b) : null } function j(a) { var b = this._node.querySelectorAll(a); return b.length ? new c.Svg.List(b) : null } function k() { return this._node } function l(a, d, e, f) { if ("string" == typeof a) { var g = b.createElement("div"); g.innerHTML = a, a = g.firstChild } a.setAttribute("xmlns", c.namespaces.xmlns); var h = this.elem("foreignObject", d, e, f); return h._node.appendChild(a), h } function m(a) { return this._node.appendChild(b.createTextNode(a)), this } function n() { for (; this._node.firstChild;)this._node.removeChild(this._node.firstChild); return this } function o() { return this._node.parentNode.removeChild(this._node), this.parent() } function p(a) { return this._node.parentNode.replaceChild(a._node, this._node), a } function q(a, b) { return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this } function r() { return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] } function s(a) { return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { return c.indexOf(a) === b }).join(" ")), this } function t(a) { var b = a.trim().split(/\s+/); return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { return b.indexOf(a) === -1 }).join(" ")), this } function u() { return this._node.setAttribute("class", ""), this } function v() { return this._node.getBoundingClientRect().height } function w() { return this._node.getBoundingClientRect().width } function x(a, b, d) { return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) { function f(a, b) { var f, g, h, i = {}; a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", c.extend({ attributeName: e }, a)), b && setTimeout(function () { try { f._node.beginElement() } catch (b) { i[e] = a.to, this.attr(i), f.remove() } }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { d.emit("animationBegin", { element: this, animate: f._node, params: a }) }.bind(this)), f._node.addEventListener("endEvent", function () { d && d.emit("animationEnd", { element: this, animate: f._node, params: a }), b && (i[e] = a.to, this.attr(i), f.remove()) }.bind(this)) } a[e] instanceof Array ? a[e].forEach(function (a) { f.bind(this)(a, !1) }.bind(this)) : f.bind(this)(a[e], b) }.bind(this)), this } function y(a) { var b = this; this.svgElements = []; for (var d = 0; d < a.length; d++)this.svgElements.push(new c.Svg(a[d])); Object.keys(c.Svg.prototype).filter(function (a) { return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 }).forEach(function (a) { b[a] = function () { var d = Array.prototype.slice.call(arguments, 0); return b.svgElements.forEach(function (b) { c.Svg.prototype[a].apply(b, d) }), b } }) } c.Svg = c.Class.extend({ constructor: d, attr: e, elem: f, parent: g, root: h, querySelector: i, querySelectorAll: j, getNode: k, foreignObject: l, text: m, empty: n, remove: o, replace: p, append: q, classes: r, addClass: s, removeClass: t, removeAllClasses: u, height: v, width: w, animate: x }), c.Svg.isSupported = function (a) { return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") }; var z = { easeInSine: [.47, 0, .745, .715], easeOutSine: [.39, .575, .565, 1], easeInOutSine: [.445, .05, .55, .95], easeInQuad: [.55, .085, .68, .53], easeOutQuad: [.25, .46, .45, .94], easeInOutQuad: [.455, .03, .515, .955], easeInCubic: [.55, .055, .675, .19], easeOutCubic: [.215, .61, .355, 1], easeInOutCubic: [.645, .045, .355, 1], easeInQuart: [.895, .03, .685, .22], easeOutQuart: [.165, .84, .44, 1], easeInOutQuart: [.77, 0, .175, 1], easeInQuint: [.755, .05, .855, .06], easeOutQuint: [.23, 1, .32, 1], easeInOutQuint: [.86, 0, .07, 1], easeInExpo: [.95, .05, .795, .035], easeOutExpo: [.19, 1, .22, 1], easeInOutExpo: [1, 0, 0, 1], easeInCirc: [.6, .04, .98, .335], easeOutCirc: [.075, .82, .165, 1], easeInOutCirc: [.785, .135, .15, .86], easeInBack: [.6, -.28, .735, .045], easeOutBack: [.175, .885, .32, 1.275], easeInOutBack: [.68, -.55, .265, 1.55] }; c.Svg.Easing = z, c.Svg.List = c.Class.extend({ constructor: y }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e, f, g) { var h = c.extend({ command: f ? a.toLowerCase() : a.toUpperCase() }, b, g ? { data: g } : {}); d.splice(e, 0, h) } function e(a, b) { a.forEach(function (c, d) { u[c.command.toLowerCase()].forEach(function (e, f) { b(c, e, d, f, a) }) }) } function f(a, b) { this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b) } function g(a) { return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos } function h(a) { return this.pathElements.splice(this.pos, a), this } function i(a, b, c, e) { return d("M", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function j(a, b, c, e) { return d("L", { x: +a, y: +b }, this.pathElements, this.pos++, c, e), this } function k(a, b, c, e, f, g, h, i) { return d("C", { x1: +a, y1: +b, x2: +c, y2: +e, x: +f, y: +g }, this.pathElements, this.pos++, h, i), this } function l(a, b, c, e, f, g, h, i, j) { return d("A", { rx: +a, ry: +b, xAr: +c, lAf: +e, sf: +f, x: +g, y: +h }, this.pathElements, this.pos++, i, j), this } function m(a) { var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a }, []); "Z" === b[b.length - 1][0].toUpperCase() && b.pop(); var d = b.map(function (a) { var b = a.shift(), d = u[b.toLowerCase()]; return c.extend({ command: b }, d.reduce(function (b, c, d) { return b[c] = +a[d], b }, {})) }), e = [this.pos, 0]; return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this } function n() { var a = Math.pow(10, this.options.accuracy); return this.pathElements.reduce(function (b, c) { var d = u[c.command.toLowerCase()].map(function (b) { return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] }.bind(this)); return b + c.command + d.join(",") }.bind(this), "") + (this.close ? "Z" : "") } function o(a, b) { return e(this.pathElements, function (c, d) { c[d] *= "x" === d[0] ? a : b }), this } function p(a, b) { return e(this.pathElements, function (c, d) { c[d] += "x" === d[0] ? a : b }), this } function q(a) { return e(this.pathElements, function (b, c, d, e, f) { var g = a(b, c, d, e, f); (g || 0 === g) && (b[c] = g) }), this } function r(a) { var b = new c.Svg.Path(a || this.close); return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) { return c.extend({}, a) }), b.options = c.extend({}, this.options), b } function s(a) { var b = [new c.Svg.Path]; return this.pathElements.forEach(function (d) { d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path), b[b.length - 1].pathElements.push(d) }), b } function t(a, b, d) { for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++)for (var g = a[f], h = 0; h < g.pathElements.length; h++)e.pathElements.push(g.pathElements[h]); return e } var u = { m: ["x", "y"], l: ["x", "y"], c: ["x1", "y1", "x2", "y2", "x", "y"], a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] }, v = { accuracy: 3 }; c.Svg.Path = c.Class.extend({ constructor: f, position: g, remove: h, move: i, line: j, curve: k, arc: l, scale: o, translate: p, transform: q, parse: m, stringify: n, clone: r, splitByCommand: s }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c, d) { this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d } function e(a, b, d, e, f) { var g = e["axis" + this.units.pos.toUpperCase()], h = this.ticks.map(this.projectValue.bind(this)), i = this.ticks.map(g.labelInterpolationFnc); h.forEach(function (j, k) { var l, m = { x: 0, y: 0 }; l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), c.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) }.bind(this)) } var f = { x: { pos: "x", len: "width", dir: "horizontal", rectStart: "x1", rectEnd: "x2", rectOffset: "y2" }, y: { pos: "y", len: "height", dir: "vertical", rectStart: "y2", rectEnd: "y1", rectOffset: "x1" } }; c.Axis = c.Class.extend({ constructor: d, createGridAndLabels: e, projectValue: function (a, b, c) { throw new Error("Base axis can't be instantiated!") } }), c.Axis.units = f }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { min: this.bounds.min, max: this.bounds.max }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range } c.AutoScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { var f = e.highLow || c.getHighLow(b, e, a.pos); this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) { return f.low + (f.high - f.low) / this.divisor * b }.bind(this)), this.ticks.sort(function (a, b) { return a - b }), this.range = { min: f.low, max: f.high }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor } function e(a) { return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) } c.FixedScaleAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, d, e) { c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); this.stepLength = this.axisLength / f } function e(a, b) { return this.stepLength * b } c.StepAxis = c.Axis.extend({ constructor: d, projectValue: e }) }(window, document, a), function (a, b, c) { "use strict"; function d(a) { var b = c.normalizeData(this.data, a.reverseData, !0); this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart); var d, e, g = this.svg.elem("g").addClass(a.classNames.gridGroup), h = this.svg.elem("g"), i = this.svg.elem("g").addClass(a.classNames.labelGroup), j = c.createChartRect(this.svg, a, f.padding); d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, j, c.extend({}, a.axisX, { ticks: b.normalized.labels, stretch: a.fullWidth })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, j, c.extend({}, a.axisY, { high: c.isNumeric(a.high) ? a.high : a.axisY.high, low: c.isNumeric(a.low) ? a.low : a.axisY.low })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (f, g) { var i = h.elem("g"); i.attr({ "ct:series-name": f.name, "ct:meta": c.serialize(f.meta) }), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var k = [], l = []; b.normalized.series[g].forEach(function (a, h) { var i = { x: j.x1 + d.projectValue(a, h, b.normalized.series[g]), y: j.y1 - e.projectValue(a, h, b.normalized.series[g]) }; k.push(i.x, i.y), l.push({ value: a, valueIndex: h, meta: c.getMetaData(f, h) }) }.bind(this)); var m = { lineSmooth: c.getSeriesOption(f, a, "lineSmooth"), showPoint: c.getSeriesOption(f, a, "showPoint"), showLine: c.getSeriesOption(f, a, "showLine"), showArea: c.getSeriesOption(f, a, "showArea"), areaBase: c.getSeriesOption(f, a, "areaBase") }, n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.monotoneCubic() : c.Interpolation.none(), o = n(k, l); if (m.showPoint && o.pathElements.forEach(function (b) { var h = i.elem("line", { x1: b.x, y1: b.y, x2: b.x + .01, y2: b.y }, a.classNames.point).attr({ "ct:value": [b.data.value.x, b.data.value.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(b.data.meta) }); this.eventEmitter.emit("draw", { type: "point", value: b.data.value, index: b.data.valueIndex, meta: b.data.meta, series: f, seriesIndex: g, axisX: d, axisY: e, group: i, element: h, x: b.x, y: b.y }) }.bind(this)), m.showLine) { var p = i.elem("path", { d: o.stringify() }, a.classNames.line, !0); this.eventEmitter.emit("draw", { type: "line", values: b.normalized.series[g], path: o.clone(), chartRect: j, index: g, series: f, seriesIndex: g, seriesMeta: f.meta, axisX: d, axisY: e, group: i, element: p }) } if (m.showArea && e.range) { var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min), r = j.y1 - e.projectValue(q); o.splitByCommand("M").filter(function (a) { return a.pathElements.length > 1 }).map(function (a) { var b = a.pathElements[0], c = a.pathElements[a.pathElements.length - 1]; return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) }).forEach(function (c) { var h = i.elem("path", { d: c.stringify() }, a.classNames.area, !0); this.eventEmitter.emit("draw", { type: "area", values: b.normalized.series[g], path: c.clone(), series: f, seriesIndex: g, axisX: d, axisY: e, chartRect: j, index: g, group: i, element: h }) }.bind(this)) } }.bind(this)), this.eventEmitter.emit("created", { bounds: e.bounds, chartRect: j, axisX: d, axisY: e, svg: this.svg, options: a }) } function e(a, b, d, e) { c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, type: void 0, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, showLine: !0, showPoint: !0, showArea: !1, areaBase: 0, lineSmooth: !0, showGridBackground: !1, low: void 0, high: void 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, fullWidth: !1, reverseData: !1, classNames: { chart: "ct-chart-line", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", line: "ct-line", point: "ct-point", area: "ct-area", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Line = c.Base.extend({ constructor: e, createChart: d }) }(window, document, a), function (a, b, c) { - "use strict"; function d(a) { - var b, d; a.distributeSeries ? (b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), b.normalized.series = b.normalized.series.map(function (a) { return [a] })) : b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); var e = this.svg.elem("g").addClass(a.classNames.gridGroup), g = this.svg.elem("g"), h = this.svg.elem("g").addClass(a.classNames.labelGroup); if (a.stackBars && 0 !== b.normalized.series.length) { - var i = c.serialMap(b.normalized.series, function () { - return Array.prototype.slice.call(arguments).map(function (a) { return a }).reduce(function (a, b) { return { x: a.x + (b && b.x) || 0, y: a.y + (b && b.y) || 0 } }, { x: 0, y: 0 }) - }); d = c.getHighLow([i], a, a.horizontalBars ? "x" : "y") - } else d = c.getHighLow(b.normalized.series, a, a.horizontalBars ? "x" : "y"); d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); var j, k, l, m, n, o = c.createChartRect(this.svg, a, f.padding); k = a.distributeSeries && a.stackBars ? b.normalized.labels.slice(0, 1) : b.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { highLow: d, referenceValue: 0 })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, b.normalized.series, o, { ticks: k }) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, o, { ticks: k }) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { highLow: d, referenceValue: 0 }))); var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), q = []; l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(e, o, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (d, e) { var f, h, i = e - (b.raw.series.length - 1) / 2; f = a.distributeSeries && !a.stackBars ? l.axisLength / b.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / b.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ "ct:series-name": d.name, "ct:meta": c.serialize(d.meta) }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), b.normalized.series[e].forEach(function (g, k) { var r, s, t, u; if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, b.normalized.series[e]), y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, b.normalized.series[e]) } : { x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, b.normalized.series[e]), y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, b.normalized.series[e]) }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { var v = {}; v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); var w = c.getMetaData(d, k); s = h.elem("line", v, a.classNames.bar).attr({ "ct:value": [g.x, g.y].filter(c.isNumeric).join(","), "ct:meta": c.serialize(w) }), this.eventEmitter.emit("draw", c.extend({ type: "bar", value: g, index: k, meta: w, series: d, seriesIndex: e, axisX: m, axisY: n, chartRect: o, group: h, element: s }, v)) } }.bind(this)) }.bind(this)), this.eventEmitter.emit("created", { bounds: j.bounds, chartRect: o, axisX: m, axisY: n, svg: this.svg, options: a }) - } function e(a, b, d, e) { c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) } var f = { axisX: { offset: 30, position: "end", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 30, onlyInteger: !1 }, axisY: { offset: 40, position: "start", labelOffset: { x: 0, y: 0 }, showLabel: !0, showGrid: !0, labelInterpolationFnc: c.noop, scaleMinSpace: 20, onlyInteger: !1 }, width: void 0, height: void 0, high: void 0, low: void 0, referenceValue: 0, chartPadding: { top: 15, right: 15, bottom: 5, left: 10 }, seriesBarDistance: 15, stackBars: !1, stackMode: "accumulate", horizontalBars: !1, distributeSeries: !1, reverseData: !1, showGridBackground: !1, classNames: { chart: "ct-chart-bar", horizontalBars: "ct-horizontal-bars", label: "ct-label", labelGroup: "ct-labels", series: "ct-series", bar: "ct-bar", grid: "ct-grid", gridGroup: "ct-grids", gridBackground: "ct-grid-background", vertical: "ct-vertical", horizontal: "ct-horizontal", start: "ct-start", end: "ct-end" } }; c.Bar = c.Base.extend({ constructor: e, createChart: d }) - }(window, document, a), function (a, b, c) { "use strict"; function d(a, b, c) { var d = b.x > a.x; return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" } function e(a) { var b, e, f, h, i, j = c.normalizeData(this.data), k = [], l = a.startAngle; this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { return a + b }, 0); var m = c.quantity(a.donutWidth); "%" === m.unit && (m.value *= f / 100), f -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? f : "center" === a.labelPosition ? 0 : a.donutSolid ? f - m.value / 2 : f / 2, h += a.labelOffset; var n = { x: e.x1 + e.width() / 2, y: e.y2 + e.height() / 2 }, o = 1 === j.raw.series.filter(function (a) { return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a }).length; j.raw.series.forEach(function (a, b) { k[b] = this.svg.elem("g", null, null) }.bind(this)), a.showLabel && (b = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, g) { if (0 !== j.normalized.series[g] || !a.ignoreEmptyValues) { k[g].attr({ "ct:series-name": e.name }), k[g].addClass([a.classNames.series, e.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); var p = i > 0 ? l + j.normalized.series[g] / i * 360 : 0, q = Math.max(0, l - (0 === g || o ? 0 : .2)); p - q >= 359.99 && (p = q + 359.99); var r, s, t, u = c.polarToCartesian(n.x, n.y, f, q), v = c.polarToCartesian(n.x, n.y, f, p), w = new c.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(f, f, 0, p - l > 180, 0, u.x, u.y); a.donut ? a.donutSolid && (t = f - m.value, r = c.polarToCartesian(n.x, n.y, t, l - (0 === g || o ? 0 : .2)), s = c.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); var x = a.classNames.slicePie; a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); var y = k[g].elem("path", { d: w.stringify() }, x); if (y.attr({ "ct:value": j.normalized.series[g], "ct:meta": c.serialize(e.meta) }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { type: "slice", value: j.normalized.series[g], totalDataSum: i, index: g, meta: e.meta, series: e, group: k[g], element: y, path: w.clone(), center: n, radius: f, startAngle: l, endAngle: p }), a.showLabel) { var z; z = 1 === j.raw.series.length ? { x: n.x, y: n.y } : c.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); var A; A = j.normalized.labels && !c.isFalseyButZero(j.normalized.labels[g]) ? j.normalized.labels[g] : j.normalized.series[g]; var B = a.labelInterpolationFnc(A, g); if (B || 0 === B) { var C = b.elem("text", { dx: z.x, dy: z.y, "text-anchor": d(n, z, a.labelDirection) }, a.classNames.label).text("" + B); this.eventEmitter.emit("draw", { type: "label", index: g, group: b, element: C, text: "" + B, x: z.x, y: z.y }) } } l = p } }.bind(this)), this.eventEmitter.emit("created", { chartRect: e, svg: this.svg, options: a }) } function f(a, b, d, e) { c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e) } var g = { width: void 0, height: void 0, chartPadding: 5, classNames: { chartPie: "ct-chart-pie", chartDonut: "ct-chart-donut", series: "ct-series", slicePie: "ct-slice-pie", sliceDonut: "ct-slice-donut", sliceDonutSolid: "ct-slice-donut-solid", label: "ct-label" }, startAngle: 0, total: void 0, donut: !1, donutSolid: !1, donutWidth: 60, showLabel: !0, labelOffset: 0, labelPosition: "inside", labelInterpolationFnc: c.noop, labelDirection: "neutral", reverseData: !1, ignoreEmptyValues: !1 }; c.Pie = c.Base.extend({ constructor: f, createChart: e, determineAnchorPosition: d }) }(window, document, a), a -}); - -var i, l, selectedLine = null; - -/* Navigate to hash without browser history entry */ -var navigateToHash = function () { - if (window.history !== undefined && window.history.replaceState !== undefined) { - window.history.replaceState(undefined, undefined, this.getAttribute("href")); - } -}; - -var hashLinks = document.getElementsByClassName('navigatetohash'); -for (i = 0, l = hashLinks.length; i < l; i++) { - hashLinks[i].addEventListener('click', navigateToHash); -} - -/* Switch test method */ -var switchTestMethod = function () { - var method = this.getAttribute("value"); - console.log("Selected test method: " + method); - - var lines, i, l, coverageData, lineAnalysis, cells; - - lines = document.querySelectorAll('.lineAnalysis tr'); - - for (i = 1, l = lines.length; i < l; i++) { - coverageData = JSON.parse(lines[i].getAttribute('data-coverage').replace(/'/g, '"')); - lineAnalysis = coverageData[method]; - cells = lines[i].querySelectorAll('td'); - if (lineAnalysis === undefined) { - lineAnalysis = coverageData.AllTestMethods; - if (lineAnalysis.LVS !== 'gray') { - cells[0].setAttribute('class', 'red'); - cells[1].innerText = cells[1].textContent = '0'; - cells[4].setAttribute('class', 'lightred'); - } - } else { - cells[0].setAttribute('class', lineAnalysis.LVS); - cells[1].innerText = cells[1].textContent = lineAnalysis.VC; - cells[4].setAttribute('class', 'light' + lineAnalysis.LVS); - } - } -}; - -var testMethods = document.getElementsByClassName('switchtestmethod'); -for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].addEventListener('change', switchTestMethod); -} - -/* Highlight test method by line */ -var toggleLine = function () { - if (selectedLine === this) { - selectedLine = null; - } else { - selectedLine = null; - unhighlightTestMethods(); - highlightTestMethods.call(this); - selectedLine = this; - } - -}; -var highlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var lineAnalysis; - var coverageData = JSON.parse(this.getAttribute('data-coverage').replace(/'/g, '"')); - var testMethods = document.getElementsByClassName('testmethod'); - - for (i = 0, l = testMethods.length; i < l; i++) { - lineAnalysis = coverageData[testMethods[i].id]; - if (lineAnalysis === undefined) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } else { - testMethods[i].className += ' light' + lineAnalysis.LVS; - } - } -}; -var unhighlightTestMethods = function () { - if (selectedLine !== null) { - return; - } - - var testMethods = document.getElementsByClassName('testmethod'); - for (i = 0, l = testMethods.length; i < l; i++) { - testMethods[i].className = testMethods[i].className.replace(/\s*light.+/g, ""); - } -}; -var coverableLines = document.getElementsByClassName('coverableline'); -for (i = 0, l = coverableLines.length; i < l; i++) { - coverableLines[i].addEventListener('click', toggleLine); - coverableLines[i].addEventListener('mouseenter', highlightTestMethods); - coverableLines[i].addEventListener('mouseleave', unhighlightTestMethods); -} - -/* History charts */ -var renderChart = function (chart) { - // Remove current children (e.g. PNG placeholder) - while (chart.firstChild) { - chart.firstChild.remove(); - } - - var chartData = window[chart.getAttribute('data-data')]; - var options = { - axisY: { - type: undefined, - onlyInteger: true - }, - lineSmooth: false, - low: 0, - high: 100, - scaleMinSpace: 20, - onlyInteger: true, - fullWidth: true - }; - var lineChart = new Chartist.Line(chart, { - labels: [], - series: chartData.series - }, options); - - /* Zoom */ - var zoomButtonDiv = document.createElement("div"); - zoomButtonDiv.className = "toggleZoom"; - var zoomButtonLink = document.createElement("a"); - zoomButtonLink.setAttribute("href", ""); - var zoomButtonText = document.createElement("i"); - zoomButtonText.className = "icon-search-plus"; - - zoomButtonLink.appendChild(zoomButtonText); - zoomButtonDiv.appendChild(zoomButtonLink); - - chart.appendChild(zoomButtonDiv); - - zoomButtonDiv.addEventListener('click', function (event) { - event.preventDefault(); - - if (options.axisY.type === undefined) { - options.axisY.type = Chartist.AutoScaleAxis; - zoomButtonText.className = "icon-search-minus"; - } else { - options.axisY.type = undefined; - zoomButtonText.className = "icon-search-plus"; - } - - lineChart.update(null, options); - }); - - var tooltip = document.createElement("div"); - tooltip.className = "tooltip"; - - chart.appendChild(tooltip); - - /* Tooltips */ - var showToolTip = function () { - var point = this; - var index = [].slice.call(chart.getElementsByClassName('ct-point')).indexOf(point); - - tooltip.innerHTML = chartData.tooltips[index % chartData.tooltips.length]; - tooltip.style.display = 'block'; - }; - - var moveToolTip = function (event) { - var box = chart.getBoundingClientRect(); - var left = event.pageX - box.left - window.pageXOffset; - var top = event.pageY - box.top - window.pageYOffset; - - left = left + 20; - top = top - tooltip.offsetHeight / 2; - - if (left + tooltip.offsetWidth > box.width) { - left -= tooltip.offsetWidth + 40; - } - - if (top < 0) { - top = 0; - } - - if (top + tooltip.offsetHeight > box.height) { - top = box.height - tooltip.offsetHeight; - } - - tooltip.style.left = left + 'px'; - tooltip.style.top = top + 'px'; - }; - - var hideToolTip = function () { - tooltip.style.display = 'none'; - }; - chart.addEventListener('mousemove', moveToolTip); - - lineChart.on('created', function () { - var chartPoints = chart.getElementsByClassName('ct-point'); - for (i = 0, l = chartPoints.length; i < l; i++) { - chartPoints[i].addEventListener('mousemove', showToolTip); - chartPoints[i].addEventListener('mouseout', hideToolTip); - } - }); -}; - -var charts = document.getElementsByClassName('historychart'); -for (i = 0, l = charts.length; i < l; i++) { - renderChart(charts[i]); -} - -var assemblies = [ - { - "name": "Microsoft.EntityFrameworkCore.DynamicLinq", - "classes": [ - { "name": "Microsoft.EntityFrameworkCore.DynamicLinq.EFDynamicQueryableWithFormattableStringExtensions", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_EFDynamicQueryableWithFormattableStringExtensions.html", "cl": 14, "ucl": 80, "cal": 94, "tl": 194, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "Microsoft.EntityFrameworkCore.DynamicLinq.EntityFrameworkDynamicQueryableExtensions", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_EntityFrameworkDynamicQueryableExtensions.html", "cl": 208, "ucl": 60, "cal": 268, "tl": 1119, "ct": "LineCoverage", "mc": "-", "cb": 21, "tb": 30, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Validation.Check", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_Check.html", "cl": 11, "ucl": 36, "cal": 47, "tl": 136, "ct": "LineCoverage", "mc": "-", "cb": 4, "tb": 16, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Validation.CoreStrings", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_CoreStrings.html", "cl": 0, "ucl": 12, "cal": 12, "tl": 41, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Expressions.LambdaExpressionExtensions", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_LambdaExpressionExtensions.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 15, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Reflection.CustomIntrospectionExtensions", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_CustomIntrospectionExtensions.html", "cl": 0, "ucl": 3, "cal": 3, "tl": 40, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Reflection.CustomTypeBuilderExtensions", "rp": "Microsoft.EntityFrameworkCore.DynamicLinq_CustomTypeBuilderExtensions.html", "cl": 0, "ucl": 12, "cal": 12, "tl": 35, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - ]}, - { - "name": "System.Linq.Dynamic.Core", - "classes": [ - { "name": "System.Linq.Dynamic.Core.AssemblyBuilderFactory", "rp": "System.Linq.Dynamic.Core_AssemblyBuilderFactory.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 25, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.CustomTypeProviders.AbstractDynamicLinqCustomTypeProvider", "rp": "System.Linq.Dynamic.Core_AbstractDynamicLinqCustomTypeProvider.html", "cl": 48, "ucl": 13, "cal": 61, "tl": 156, "ct": "LineCoverage", "mc": "-", "cb": 16, "tb": 20, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.CustomTypeProviders.DefaultDynamicLinqCustomTypeProvider", "rp": "System.Linq.Dynamic.Core_DefaultDynamicLinqCustomTypeProvider.html", "cl": 50, "ucl": 2, "cal": 52, "tl": 109, "ct": "LineCoverage", "mc": "-", "cb": 10, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DefaultAssemblyHelper", "rp": "System.Linq.Dynamic.Core_DefaultAssemblyHelper.html", "cl": 13, "ucl": 3, "cal": 16, "tl": 39, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DefaultQueryableAnalyzer", "rp": "System.Linq.Dynamic.Core_DefaultQueryableAnalyzer.html", "cl": 28, "ucl": 7, "cal": 35, "tl": 71, "ct": "LineCoverage", "mc": "-", "cb": 13, "tb": 16, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicClass", "rp": "System.Linq.Dynamic.Core_DynamicClass.html", "cl": 5, "ucl": 60, "cal": 65, "tl": 178, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicClassFactory", "rp": "System.Linq.Dynamic.Core_DynamicClassFactory.html", "cl": 265, "ucl": 10, "cal": 275, "tl": 467, "ct": "LineCoverage", "mc": "-", "cb": 43, "tb": 48, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicEnumerableAsyncExtensions", "rp": "System.Linq.Dynamic.Core_DynamicEnumerableAsyncExtensions.html", "cl": 0, "ucl": 32, "cal": 32, "tl": 106, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicEnumerableExtensions", "rp": "System.Linq.Dynamic.Core_DynamicEnumerableExtensions.html", "cl": 37, "ucl": 0, "cal": 37, "tl": 135, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicExpressionParser", "rp": "System.Linq.Dynamic.Core_DynamicExpressionParser.html", "cl": 82, "ucl": 30, "cal": 112, "tl": 453, "ct": "LineCoverage", "mc": "-", "cb": 12, "tb": 18, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicGetMemberBinder", "rp": "System.Linq.Dynamic.Core_DynamicGetMemberBinder.html", "cl": 30, "ucl": 4, "cal": 34, "tl": 68, "ct": "LineCoverage", "mc": "-", "cb": 9, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicProperty", "rp": "System.Linq.Dynamic.Core_DynamicProperty.html", "cl": 7, "ucl": 0, "cal": 7, "tl": 35, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicQueryableExtensions", "rp": "System.Linq.Dynamic.Core_DynamicQueryableExtensions.html", "cl": 968, "ucl": 54, "cal": 1022, "tl": 2809, "ct": "LineCoverage", "mc": "-", "cb": 88, "tb": 108, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.DynamicQueryableWithFormattableStringExtensions", "rp": "System.Linq.Dynamic.Core_DynamicQueryableWithFormattableStringExtensions.html", "cl": 63, "ucl": 204, "cal": 267, "tl": 430, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Exceptions.ParseException", "rp": "System.Linq.Dynamic.Core_ParseException.html", "cl": 4, "ucl": 12, "cal": 16, "tl": 66, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.ExtensibilityPoint", "rp": "System.Linq.Dynamic.Core_ExtensibilityPoint.html", "cl": 1, "ucl": 0, "cal": 1, "tl": 17, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.GroupResult", "rp": "System.Linq.Dynamic.Core_GroupResult.html", "cl": 7, "ucl": 0, "cal": 7, "tl": 47, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.PagedResult", "rp": "System.Linq.Dynamic.Core_PagedResult.html", "cl": 5, "ucl": 0, "cal": 5, "tl": 64, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.PagedResult", "rp": "System.Linq.Dynamic.Core_PagedResult_1.html", "cl": 1, "ucl": 0, "cal": 1, "tl": 64, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.ParameterExpressionHelper", "rp": "System.Linq.Dynamic.Core_ParameterExpressionHelper.html", "cl": 23, "ucl": 0, "cal": 23, "tl": 57, "ct": "LineCoverage", "mc": "-", "cb": 10, "tb": 10, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.ConstantExpressionHelper", "rp": "System.Linq.Dynamic.Core_ConstantExpressionHelper.html", "cl": 14, "ucl": 0, "cal": 14, "tl": 29, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper", "rp": "System.Linq.Dynamic.Core_ConstantExpressionWrapper.html", "cl": 81, "ucl": 99, "cal": 180, "tl": 199, "ct": "LineCoverage", "mc": "-", "cb": 46, "tb": 88, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.Constants", "rp": "System.Linq.Dynamic.Core_Constants.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 12, "ct": "LineCoverage", "mc": "-", "cb": 2, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.EnumerationsFromMscorlib", "rp": "System.Linq.Dynamic.Core_EnumerationsFromMscorlib.html", "cl": 22, "ucl": 9, "cal": 31, "tl": 59, "ct": "LineCoverage", "mc": "-", "cb": 5, "tb": 8, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.ExpressionHelper", "rp": "System.Linq.Dynamic.Core_ExpressionHelper.html", "cl": 233, "ucl": 10, "cal": 243, "tl": 406, "ct": "LineCoverage", "mc": "-", "cb": 130, "tb": 164, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "rp": "System.Linq.Dynamic.Core_ExpressionParser.html", "cl": 1214, "ucl": 162, "cal": 1376, "tl": 2167, "ct": "LineCoverage", "mc": "-", "cb": 722, "tb": 825, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.ExpressionPromoter", "rp": "System.Linq.Dynamic.Core_ExpressionPromoter.html", "cl": 52, "ucl": 0, "cal": 52, "tl": 124, "ct": "LineCoverage", "mc": "-", "cb": 43, "tb": 43, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.KeywordsHelper", "rp": "System.Linq.Dynamic.Core_KeywordsHelper.html", "cl": 55, "ucl": 0, "cal": 55, "tl": 89, "ct": "LineCoverage", "mc": "-", "cb": 16, "tb": 16, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.NumberParser", "rp": "System.Linq.Dynamic.Core_NumberParser.html", "cl": 112, "ucl": 18, "cal": 130, "tl": 300, "ct": "LineCoverage", "mc": "-", "cb": 90, "tb": 102, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.PredefinedTypesHelper", "rp": "System.Linq.Dynamic.Core_PredefinedTypesHelper.html", "cl": 62, "ucl": 6, "cal": 68, "tl": 104, "ct": "LineCoverage", "mc": "-", "cb": 6, "tb": 8, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.StringParser", "rp": "System.Linq.Dynamic.Core_StringParser.html", "cl": 17, "ucl": 0, "cal": 17, "tl": 41, "ct": "LineCoverage", "mc": "-", "cb": 10, "tb": 10, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData", "rp": "System.Linq.Dynamic.Core_MethodData.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 12, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder", "rp": "System.Linq.Dynamic.Core_MethodFinder.html", "cl": 200, "ucl": 10, "cal": 210, "tl": 324, "ct": "LineCoverage", "mc": "-", "cb": 107, "tb": 116, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.TypeFinder", "rp": "System.Linq.Dynamic.Core_TypeFinder.html", "cl": 51, "ucl": 4, "cal": 55, "tl": 92, "ct": "LineCoverage", "mc": "-", "cb": 26, "tb": 28, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.TypeHelper", "rp": "System.Linq.Dynamic.Core_TypeHelper.html", "cl": 185, "ucl": 6, "cal": 191, "tl": 467, "ct": "LineCoverage", "mc": "-", "cb": 138, "tb": 141, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Parser.WrappedValue", "rp": "System.Linq.Dynamic.Core_WrappedValue_1.html", "cl": 5, "ucl": 0, "cal": 5, "tl": 12, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.ParsingConfig", "rp": "System.Linq.Dynamic.Core_ParsingConfig.html", "cl": 48, "ucl": 0, "cal": 48, "tl": 202, "ct": "LineCoverage", "mc": "-", "cb": 12, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Tokenizer.TextParser", "rp": "System.Linq.Dynamic.Core_TextParser.html", "cl": 348, "ucl": 1, "cal": 349, "tl": 528, "ct": "LineCoverage", "mc": "-", "cb": 184, "tb": 190, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Tokenizer.Token", "rp": "System.Linq.Dynamic.Core_Token.html", "cl": 4, "ucl": 0, "cal": 4, "tl": 28, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.TypeConverters.CustomDateTimeConverter", "rp": "System.Linq.Dynamic.Core_CustomDateTimeConverter.html", "cl": 4, "ucl": 0, "cal": 4, "tl": 23, "ct": "LineCoverage", "mc": "-", "cb": 1, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.TypeConverters.TypeConverterFactory", "rp": "System.Linq.Dynamic.Core_TypeConverterFactory.html", "cl": 16, "ucl": 0, "cal": 16, "tl": 53, "ct": "LineCoverage", "mc": "-", "cb": 12, "tb": 12, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Util.ParameterExpressionRenamer", "rp": "System.Linq.Dynamic.Core_ParameterExpressionRenamer.html", "cl": 24, "ucl": 2, "cal": 26, "tl": 74, "ct": "LineCoverage", "mc": "-", "cb": 3, "tb": 4, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Util.QueryableMethodFinder", "rp": "System.Linq.Dynamic.Core_QueryableMethodFinder.html", "cl": 21, "ucl": 3, "cal": 24, "tl": 47, "ct": "LineCoverage", "mc": "-", "cb": 20, "tb": 22, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Util.RuntimeInformationUtils", "rp": "System.Linq.Dynamic.Core_RuntimeInformationUtils.html", "cl": 9, "ucl": 0, "cal": 9, "tl": 22, "ct": "LineCoverage", "mc": "-", "cb": 1, "tb": 2, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Validation.Check", "rp": "System.Linq.Dynamic.Core_Check.html", "cl": 33, "ucl": 14, "cal": 47, "tl": 136, "ct": "LineCoverage", "mc": "-", "cb": 12, "tb": 16, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Dynamic.Core.Validation.CoreStrings", "rp": "System.Linq.Dynamic.Core_CoreStrings.html", "cl": 3, "ucl": 9, "cal": 12, "tl": 41, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Linq.Expressions.LambdaExpressionExtensions", "rp": "System.Linq.Dynamic.Core_LambdaExpressionExtensions.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 15, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Reflection.CustomIntrospectionExtensions", "rp": "System.Linq.Dynamic.Core_CustomIntrospectionExtensions.html", "cl": 3, "ucl": 0, "cal": 3, "tl": 40, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - { "name": "System.Reflection.CustomTypeBuilderExtensions", "rp": "System.Linq.Dynamic.Core_CustomTypeBuilderExtensions.html", "cl": 0, "ucl": 12, "cal": 12, "tl": 35, "ct": "LineCoverage", "mc": "-", "cb": 0, "tb": 0, "lch": [], "bch": [], "hc": [] }, - ]}, -]; - -var historicCoverageExecutionTimes = []; - -var riskHotspotMetrics = [ - { "name": "Cyclomatic complexity", "explanationUrl": "https://en.wikipedia.org/wiki/Cyclomatic_complexity" }, - { "name": "NPath complexity", "explanationUrl": "https://modess.io/npath-complexity-cyclomatic-complexity-explained" }, -]; - -var riskHotspots = [ - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Tokenizer.TextParser", "reportPath": "System.Linq.Dynamic.Core_TextParser.html", "methodName": "System.Void System.Linq.Dynamic.Core.Tokenizer.TextParser::NextToken()", "methodShortName": "NextToken()", "fileIndex": 0, "line": 97, - "metrics": [ - { "value": 156, "exceeded": true }, - { "value": 156, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseComparisonOperator()", "methodShortName": "ParseComparisonOperator()", "fileIndex": 0, "line": 436, - "metrics": [ - { "value": 118, "exceeded": true }, - { "value": 118, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper", "reportPath": "System.Linq.Dynamic.Core_ConstantExpressionWrapper.html", "methodName": "System.Void System.Linq.Dynamic.Core.Parser.ConstantExpressionWrapper::Wrap(System.Linq.Expressions.Expression&)", "methodShortName": "Wrap(...)", "fileIndex": 0, "line": 12, - "metrics": [ - { "value": 88, "exceeded": true }, - { "value": 88, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseIdentifier()", "methodShortName": "ParseIdentifier()", "fileIndex": 0, "line": 843, - "metrics": [ - { "value": 86, "exceeded": true }, - { "value": 86, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.TypeHelper", "reportPath": "System.Linq.Dynamic.Core_TypeHelper.html", "methodName": "System.Boolean System.Linq.Dynamic.Core.Parser.TypeHelper::IsCompatibleWith(System.Type,System.Type)", "methodShortName": "IsCompatibleWith(...)", "fileIndex": 0, "line": 37, - "metrics": [ - { "value": 68, "exceeded": true }, - { "value": 68, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionHelper", "reportPath": "System.Linq.Dynamic.Core_ExpressionHelper.html", "methodName": "System.Void System.Linq.Dynamic.Core.Parser.ExpressionHelper::ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(System.Linq.Expressions.Expression&,System.Linq.Expressions.Expression&)", "methodShortName": "ConvertNumericTypeToBiggestCommonTypeForBinaryOperator(...)", "fileIndex": 0, "line": 32, - "metrics": [ - { "value": 58, "exceeded": true }, - { "value": 58, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.NumberParser", "reportPath": "System.Linq.Dynamic.Core_NumberParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.NumberParser::ParseIntegerLiteral(System.Int32,System.String)", "methodShortName": "ParseIntegerLiteral(...)", "fileIndex": 0, "line": 38, - "metrics": [ - { "value": 58, "exceeded": true }, - { "value": 58, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseNew()", "methodShortName": "ParseNew()", "fileIndex": 0, "line": 1212, - "metrics": [ - { "value": 54, "exceeded": true }, - { "value": 54, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::GenerateConditional(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Boolean,System.Int32)", "methodShortName": "GenerateConditional(...)", "fileIndex": 0, "line": 1106, - "metrics": [ - { "value": 46, "exceeded": true }, - { "value": 46, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseMemberAccess(System.Type,System.Linq.Expressions.Expression)", "methodShortName": "ParseMemberAccess(...)", "fileIndex": 0, "line": 1607, - "metrics": [ - { "value": 44, "exceeded": true }, - { "value": 44, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionPromoter", "reportPath": "System.Linq.Dynamic.Core_ExpressionPromoter.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionPromoter::Promote(System.Linq.Expressions.Expression,System.Type,System.Boolean,System.Boolean)", "methodShortName": "Promote(...)", "fileIndex": 0, "line": 24, - "metrics": [ - { "value": 43, "exceeded": true }, - { "value": 43, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.DynamicClassFactory", "reportPath": "System.Linq.Dynamic.Core_DynamicClassFactory.html", "methodName": "System.Type System.Linq.Dynamic.Core.DynamicClassFactory::CreateType(System.Collections.Generic.IList`1,System.Boolean)", "methodShortName": "CreateType(...)", "fileIndex": 0, "line": 173, - "metrics": [ - { "value": 42, "exceeded": true }, - { "value": 42, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Boolean System.Linq.Dynamic.Core.Parser.ExpressionParser::TryGenerateConversion(System.Linq.Expressions.Expression,System.Type,System.Linq.Expressions.Expression&)", "methodShortName": "TryGenerateConversion(...)", "fileIndex": 0, "line": 1551, - "metrics": [ - { "value": 38, "exceeded": true }, - { "value": 38, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder", "reportPath": "System.Linq.Dynamic.Core_MethodFinder.html", "methodName": "System.Boolean System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodFinder::IsApplicable(System.Linq.Dynamic.Core.Parser.SupportedMethods.MethodData,System.Linq.Expressions.Expression[])", "methodShortName": "IsApplicable(...)", "fileIndex": 0, "line": 146, - "metrics": [ - { "value": 36, "exceeded": true }, - { "value": 36, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseTypeAccess(System.Type)", "methodShortName": "ParseTypeAccess(...)", "fileIndex": 0, "line": 1478, - "metrics": [ - { "value": 34, "exceeded": true }, - { "value": 34, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseEnumerable(System.Linq.Expressions.Expression,System.Type,System.String,System.Int32,System.Type)", "methodShortName": "ParseEnumerable(...)", "fileIndex": 0, "line": 1780, - "metrics": [ - { "value": 34, "exceeded": true }, - { "value": 34, "exceeded": false }, - ]}, - { - "assembly": "System.Linq.Dynamic.Core", "class": "System.Linq.Dynamic.Core.Parser.ExpressionParser", "reportPath": "System.Linq.Dynamic.Core_ExpressionParser.html", "methodName": "System.Linq.Expressions.Expression System.Linq.Dynamic.Core.Parser.ExpressionParser::ParseLogicalAndOrOperator()", "methodShortName": "ParseLogicalAndOrOperator()", "fileIndex": 0, "line": 381, - "metrics": [ - { "value": 32, "exceeded": true }, - { "value": 32, "exceeded": false }, - ]}, -]; - -var branchCoverageAvailable = true; - - -var translations = { -'top': 'Top:', -'all': 'All', -'assembly': 'Assembly', -'class': 'Class', -'method': 'Method', -'lineCoverage': 'LineCoverage', -'noGrouping': 'No grouping', -'byAssembly': 'By assembly', -'byNamespace': 'By namespace, Level:', -'all': 'All', -'collapseAll': 'Collapse all', -'expandAll': 'Expand all', -'grouping': 'Grouping:', -'filter': 'Filter:', -'name': 'Name', -'covered': 'Covered', -'uncovered': 'Uncovered', -'coverable': 'Coverable', -'total': 'Total', -'coverage': 'Line coverage', -'branchCoverage': 'Branch coverage', -'history': 'Coverage History', -'compareHistory': 'Compare with:', -'date': 'Date', -'allChanges': 'All changes', -'lineCoverageIncreaseOnly': 'Line coverage: Increase only', -'lineCoverageDecreaseOnly': 'Line coverage: Decrease only', -'branchCoverageIncreaseOnly': 'Branch coverage: Increase only', -'branchCoverageDecreaseOnly': 'Branch coverage: Decrease only' -}; - - -(()=>{"use strict";var e,_={},p={};function n(e){var a=p[e];if(void 0!==a)return a.exports;var r=p[e]={exports:{}};return _[e](r,r.exports,n),r.exports}n.m=_,e=[],n.O=(a,r,u,l)=>{if(!r){var c=1/0;for(f=0;f=l)&&Object.keys(n.O).every(d=>n.O[d](r[t]))?r.splice(t--,1):(v=!1,l0&&e[f-1][2]>l;f--)e[f]=e[f-1];e[f]=[r,u,l]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a}),a},n.d=(e,a)=>{for(var r in a)n.o(a,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={666:0};n.O.j=u=>0===e[u];var a=(u,l)=>{var t,o,[f,c,v]=l,s=0;for(t in c)n.o(c,t)&&(n.m[t]=c[t]);if(v)var b=v(n);for(u&&u(l);s{!function(e){const n=e.performance;function i(I){n&&n.mark&&n.mark(I)}function r(I,p){n&&n.measure&&n.measure(I,p)}i("Zone");const c=e.__Zone_symbol_prefix||"__zone_symbol__";function u(I){return c+I}const f=!0===e[u("forceDuplicateZoneCheck")];if(e.Zone){if(f||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}let _=(()=>{class I{constructor(t,o){this._parent=t,this._name=o?o.name||"unnamed":"",this._properties=o&&o.properties||{},this._zoneDelegate=new T(this,this._parent&&this._parent._zoneDelegate,o)}static assertZonePatched(){if(e.Promise!==J.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=I.current;for(;t.parent;)t=t.parent;return t}static get current(){return G.zone}static get currentTask(){return te}static __load_patch(t,o,g=!1){if(J.hasOwnProperty(t)){if(!g&&f)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const P="Zone:"+t;i(P),J[t]=o(e,I,le),r(P,P)}}get parent(){return this._parent}get name(){return this._name}get(t){const o=this.getZoneWith(t);if(o)return o._properties[t]}getZoneWith(t){let o=this;for(;o;){if(o._properties.hasOwnProperty(t))return o;o=o._parent}return null}fork(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)}wrap(t,o){if("function"!=typeof t)throw new Error("Expecting function got: "+t);const g=this._zoneDelegate.intercept(this,t,o),P=this;return function(){return P.runGuarded(g,this,arguments,o)}}run(t,o,g,P){G={parent:G,zone:this};try{return this._zoneDelegate.invoke(this,t,o,g,P)}finally{G=G.parent}}runGuarded(t,o=null,g,P){G={parent:G,zone:this};try{try{return this._zoneDelegate.invoke(this,t,o,g,P)}catch(K){if(this._zoneDelegate.handleError(this,K))throw K}}finally{G=G.parent}}runTask(t,o,g){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||z).name+"; Execution: "+this.name+")");if(t.state===j&&(t.type===R||t.type===M))return;const P=t.state!=X;P&&t._transitionTo(X,O),t.runCount++;const K=te;te=t,G={parent:G,zone:this};try{t.type==M&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,o,g)}catch(l){if(this._zoneDelegate.handleError(this,l))throw l}}finally{t.state!==j&&t.state!==Y&&(t.type==R||t.data&&t.data.isPeriodic?P&&t._transitionTo(O,X):(t.runCount=0,this._updateTaskCount(t,-1),P&&t._transitionTo(j,X,j))),G=G.parent,te=K}}scheduleTask(t){if(t.zone&&t.zone!==this){let g=this;for(;g;){if(g===t.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${t.zone.name}`);g=g.parent}}t._transitionTo(q,j);const o=[];t._zoneDelegates=o,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(g){throw t._transitionTo(Y,q,j),this._zoneDelegate.handleError(this,g),g}return t._zoneDelegates===o&&this._updateTaskCount(t,1),t.state==q&&t._transitionTo(O,q),t}scheduleMicroTask(t,o,g,P){return this.scheduleTask(new m(v,t,o,g,P,void 0))}scheduleMacroTask(t,o,g,P,K){return this.scheduleTask(new m(M,t,o,g,P,K))}scheduleEventTask(t,o,g,P,K){return this.scheduleTask(new m(R,t,o,g,P,K))}cancelTask(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||z).name+"; Execution: "+this.name+")");t._transitionTo(A,O,X);try{this._zoneDelegate.cancelTask(this,t)}catch(o){throw t._transitionTo(Y,A),this._zoneDelegate.handleError(this,o),o}return this._updateTaskCount(t,-1),t._transitionTo(j,A),t.runCount=0,t}_updateTaskCount(t,o){const g=t._zoneDelegates;-1==o&&(t._zoneDelegates=null);for(let P=0;PI.hasTask(t,o),onScheduleTask:(I,p,t,o)=>I.scheduleTask(t,o),onInvokeTask:(I,p,t,o,g,P)=>I.invokeTask(t,o,g,P),onCancelTask:(I,p,t,o)=>I.cancelTask(t,o)};class T{constructor(p,t,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=p,this._parentDelegate=t,this._forkZS=o&&(o&&o.onFork?o:t._forkZS),this._forkDlgt=o&&(o.onFork?t:t._forkDlgt),this._forkCurrZone=o&&(o.onFork?this.zone:t._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:t._interceptZS),this._interceptDlgt=o&&(o.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this.zone:t._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:t._invokeZS),this._invokeDlgt=o&&(o.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this.zone:t._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:t._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this.zone:t._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:t._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this.zone:t._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:t._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this.zone:t._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:t._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this.zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const g=o&&o.onHasTask;(g||t&&t._hasTaskZS)&&(this._hasTaskZS=g?o:y,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=p,o.onScheduleTask||(this._scheduleTaskZS=y,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),o.onInvokeTask||(this._invokeTaskZS=y,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),o.onCancelTask||(this._cancelTaskZS=y,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(p,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,p,t):new _(p,t)}intercept(p,t,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,p,t,o):t}invoke(p,t,o,g,P){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,p,t,o,g,P):t.apply(o,g)}handleError(p,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,p,t)}scheduleTask(p,t){let o=t;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,p,t),o||(o=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=v)throw new Error("Task is missing scheduleFn.");d(t)}return o}invokeTask(p,t,o,g){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,p,t,o,g):t.callback.apply(o,g)}cancelTask(p,t){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,p,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");o=t.cancelFn(t)}return o}hasTask(p,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,p,t)}catch(o){this.handleError(p,o)}}_updateTaskCount(p,t){const o=this._taskCounts,g=o[p],P=o[p]=g+t;if(P<0)throw new Error("More tasks executed then were scheduled.");0!=g&&0!=P||this.hasTask(this.zone,{microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:p})}}class m{constructor(p,t,o,g,P,K){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=p,this.source=t,this.data=g,this.scheduleFn=P,this.cancelFn=K,!o)throw new Error("callback is not defined");this.callback=o;const l=this;this.invoke=p===R&&g&&g.useG?m.invokeTask:function(){return m.invokeTask.call(e,l,this,arguments)}}static invokeTask(p,t,o){p||(p=this),re++;try{return p.runCount++,p.zone.runTask(p,t,o)}finally{1==re&&L(),re--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(j,q)}_transitionTo(p,t,o){if(this._state!==t&&this._state!==o)throw new Error(`${this.type} '${this.source}': can not transition to '${p}', expecting state '${t}'${o?" or '"+o+"'":""}, was '${this._state}'.`);this._state=p,p==j&&(this._zoneDelegates=null)}toString(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const S=u("setTimeout"),D=u("Promise"),Z=u("then");let E,B=[],V=!1;function d(I){if(0===re&&0===B.length)if(E||e[D]&&(E=e[D].resolve(0)),E){let p=E[Z];p||(p=E.then),p.call(E,L)}else e[S](L,0);I&&B.push(I)}function L(){if(!V){for(V=!0;B.length;){const I=B;B=[];for(let p=0;pG,onUnhandledError:F,microtaskDrainDone:F,scheduleMicroTask:d,showUncaughtError:()=>!_[u("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:F,patchMethod:()=>F,bindArguments:()=>[],patchThen:()=>F,patchMacroTask:()=>F,patchEventPrototype:()=>F,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>F,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>F,wrapWithCurrentZone:()=>F,filterProperties:()=>[],attachOriginToPatched:()=>F,_redefineProperty:()=>F,patchCallbacks:()=>F};let G={parent:null,zone:new _(null,null)},te=null,re=0;function F(){}r("Zone","Zone"),e.Zone=_}("undefined"!=typeof window&&window||"undefined"!=typeof self&&self||global);const ue=Object.getOwnPropertyDescriptor,he=Object.defineProperty,de=Object.getPrototypeOf,Be=Object.create,ut=Array.prototype.slice,Se="addEventListener",Oe="removeEventListener",Ze=Zone.__symbol__(Se),Ie=Zone.__symbol__(Oe),se="true",ie="false",ke=Zone.__symbol__("");function Le(e,n){return Zone.current.wrap(e,n)}function Me(e,n,i,r,c){return Zone.current.scheduleMacroTask(e,n,i,r,c)}const x=Zone.__symbol__,Pe="undefined"!=typeof window,pe=Pe?window:void 0,$=Pe&&pe||"object"==typeof self&&self||global,ht=[null];function Ae(e,n){for(let i=e.length-1;i>=0;i--)"function"==typeof e[i]&&(e[i]=Le(e[i],n+"_"+i));return e}function Fe(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&void 0===e.set)}const Ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,Re=!("nw"in $)&&void 0!==$.process&&"[object process]"==={}.toString.call($.process),je=!Re&&!Ue&&!(!Pe||!pe.HTMLElement),We=void 0!==$.process&&"[object process]"==={}.toString.call($.process)&&!Ue&&!(!Pe||!pe.HTMLElement),Ce={},qe=function(e){if(!(e=e||$.event))return;let n=Ce[e.type];n||(n=Ce[e.type]=x("ON_PROPERTY"+e.type));const i=this||e.target||$,r=i[n];let c;if(je&&i===pe&&"error"===e.type){const u=e;c=r&&r.call(this,u.message,u.filename,u.lineno,u.colno,u.error),!0===c&&e.preventDefault()}else c=r&&r.apply(this,arguments),null!=c&&!c&&e.preventDefault();return c};function Xe(e,n,i){let r=ue(e,n);if(!r&&i&&ue(i,n)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;const c=x("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete r.writable,delete r.value;const u=r.get,f=r.set,_=n.substr(2);let y=Ce[_];y||(y=Ce[_]=x("ON_PROPERTY"+_)),r.set=function(T){let m=this;!m&&e===$&&(m=$),m&&(m[y]&&m.removeEventListener(_,qe),f&&f.apply(m,ht),"function"==typeof T?(m[y]=T,m.addEventListener(_,qe,!1)):m[y]=null)},r.get=function(){let T=this;if(!T&&e===$&&(T=$),!T)return null;const m=T[y];if(m)return m;if(u){let S=u&&u.call(this);if(S)return r.set.call(this,S),"function"==typeof T.removeAttribute&&T.removeAttribute(n),S}return null},he(e,n,r),e[c]=!0}function Ye(e,n,i){if(n)for(let r=0;rfunction(f,_){const y=i(f,_);return y.cbIdx>=0&&"function"==typeof _[y.cbIdx]?Me(y.name,_[y.cbIdx],y,c):u.apply(f,_)})}function ae(e,n){e[x("OriginalDelegate")]=n}let $e=!1,He=!1;function mt(){if($e)return He;$e=!0;try{const e=pe.navigator.userAgent;(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/")||-1!==e.indexOf("Edge/"))&&(He=!0)}catch(e){}return He}Zone.__load_patch("ZoneAwarePromise",(e,n,i)=>{const r=Object.getOwnPropertyDescriptor,c=Object.defineProperty,f=i.symbol,_=[],y=!0===e[f("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],T=f("Promise"),m=f("then");i.onUnhandledError=l=>{if(i.showUncaughtError()){const s=l&&l.rejection;s?console.error("Unhandled Promise rejection:",s instanceof Error?s.message:s,"; Zone:",l.zone.name,"; Task:",l.task&&l.task.source,"; Value:",s,s instanceof Error?s.stack:void 0):console.error(l)}},i.microtaskDrainDone=()=>{for(;_.length;){const l=_.shift();try{l.zone.runGuarded(()=>{throw l.throwOriginal?l.rejection:l})}catch(s){Z(s)}}};const D=f("unhandledPromiseRejectionHandler");function Z(l){i.onUnhandledError(l);try{const s=n[D];"function"==typeof s&&s.call(this,l)}catch(s){}}function B(l){return l&&l.then}function V(l){return l}function E(l){return t.reject(l)}const d=f("state"),L=f("value"),z=f("finally"),j=f("parentPromiseValue"),q=f("parentPromiseState"),X=null,A=!0,Y=!1;function M(l,s){return a=>{try{G(l,s,a)}catch(h){G(l,!1,h)}}}const le=f("currentTaskTrace");function G(l,s,a){const h=function(){let l=!1;return function(a){return function(){l||(l=!0,a.apply(null,arguments))}}}();if(l===a)throw new TypeError("Promise resolved with itself");if(l[d]===X){let w=null;try{("object"==typeof a||"function"==typeof a)&&(w=a&&a.then)}catch(C){return h(()=>{G(l,!1,C)})(),l}if(s!==Y&&a instanceof t&&a.hasOwnProperty(d)&&a.hasOwnProperty(L)&&a[d]!==X)re(a),G(l,a[d],a[L]);else if(s!==Y&&"function"==typeof w)try{w.call(a,h(M(l,s)),h(M(l,!1)))}catch(C){h(()=>{G(l,!1,C)})()}else{l[d]=s;const C=l[L];if(l[L]=a,l[z]===z&&s===A&&(l[d]=l[q],l[L]=l[j]),s===Y&&a instanceof Error){const k=n.currentTask&&n.currentTask.data&&n.currentTask.data.__creationTrace__;k&&c(a,le,{configurable:!0,enumerable:!1,writable:!0,value:k})}for(let k=0;k{try{const b=l[L],N=!!a&&z===a[z];N&&(a[j]=b,a[q]=C);const H=s.run(k,void 0,N&&k!==E&&k!==V?[]:[b]);G(a,!0,H)}catch(b){G(a,!1,b)}},a)}const p=function(){};class t{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(s){return G(new this(null),A,s)}static reject(s){return G(new this(null),Y,s)}static race(s){let a,h,w=new this((b,N)=>{a=b,h=N});function C(b){a(b)}function k(b){h(b)}for(let b of s)B(b)||(b=this.resolve(b)),b.then(C,k);return w}static all(s){return t.allWithCallback(s)}static allSettled(s){return(this&&this.prototype instanceof t?this:t).allWithCallback(s,{thenCallback:h=>({status:"fulfilled",value:h}),errorCallback:h=>({status:"rejected",reason:h})})}static allWithCallback(s,a){let h,w,C=new this((H,U)=>{h=H,w=U}),k=2,b=0;const N=[];for(let H of s){B(H)||(H=this.resolve(H));const U=b;try{H.then(Q=>{N[U]=a?a.thenCallback(Q):Q,k--,0===k&&h(N)},Q=>{a?(N[U]=a.errorCallback(Q),k--,0===k&&h(N)):w(Q)})}catch(Q){w(Q)}k++,b++}return k-=2,0===k&&h(N),C}constructor(s){const a=this;if(!(a instanceof t))throw new Error("Must be an instanceof Promise.");a[d]=X,a[L]=[];try{s&&s(M(a,A),M(a,Y))}catch(h){G(a,!1,h)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return t}then(s,a){let h=this.constructor[Symbol.species];(!h||"function"!=typeof h)&&(h=this.constructor||t);const w=new h(p),C=n.current;return this[d]==X?this[L].push(C,w,s,a):F(this,C,w,s,a),w}catch(s){return this.then(null,s)}finally(s){let a=this.constructor[Symbol.species];(!a||"function"!=typeof a)&&(a=t);const h=new a(p);h[z]=z;const w=n.current;return this[d]==X?this[L].push(w,h,s,s):F(this,w,h,s,s),h}}t.resolve=t.resolve,t.reject=t.reject,t.race=t.race,t.all=t.all;const o=e[T]=e.Promise;e.Promise=t;const g=f("thenPatched");function P(l){const s=l.prototype,a=r(s,"then");if(a&&(!1===a.writable||!a.configurable))return;const h=s.then;s[m]=h,l.prototype.then=function(w,C){return new t((b,N)=>{h.call(this,b,N)}).then(w,C)},l[g]=!0}return i.patchThen=P,o&&(P(o),ce(e,"fetch",l=>function(l){return function(s,a){let h=l.apply(s,a);if(h instanceof t)return h;let w=h.constructor;return w[g]||P(w),h}}(l))),Promise[n.__symbol__("uncaughtPromiseErrors")]=_,t}),Zone.__load_patch("toString",e=>{const n=Function.prototype.toString,i=x("OriginalDelegate"),r=x("Promise"),c=x("Error"),u=function(){if("function"==typeof this){const T=this[i];if(T)return"function"==typeof T?n.call(T):Object.prototype.toString.call(T);if(this===Promise){const m=e[r];if(m)return n.call(m)}if(this===Error){const m=e[c];if(m)return n.call(m)}}return n.call(this)};u[i]=n,Function.prototype.toString=u;const f=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":f.call(this)}});let me=!1;if("undefined"!=typeof window)try{const e=Object.defineProperty({},"passive",{get:function(){me=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){me=!1}const Et={useG:!0},ee={},Ke={},Je=new RegExp("^"+ke+"(\\w+)(true|false)$"),xe=x("propagationStopped");function Qe(e,n){const i=(n?n(e):e)+ie,r=(n?n(e):e)+se,c=ke+i,u=ke+r;ee[e]={},ee[e][ie]=c,ee[e][se]=u}function Tt(e,n,i){const r=i&&i.add||Se,c=i&&i.rm||Oe,u=i&&i.listeners||"eventListeners",f=i&&i.rmAll||"removeAllListeners",_=x(r),y="."+r+":",S=function(E,d,L){if(E.isRemoved)return;const z=E.callback;"object"==typeof z&&z.handleEvent&&(E.callback=q=>z.handleEvent(q),E.originalDelegate=z),E.invoke(E,d,[L]);const j=E.options;j&&"object"==typeof j&&j.once&&d[c].call(d,L.type,E.originalDelegate?E.originalDelegate:E.callback,j)},D=function(E){if(!(E=E||e.event))return;const d=this||E.target||e,L=d[ee[E.type][ie]];if(L)if(1===L.length)S(L[0],d,E);else{const z=L.slice();for(let j=0;jfunction(c,u){c[xe]=!0,r&&r.apply(c,u)})}function yt(e,n,i,r,c){const u=Zone.__symbol__(r);if(n[u])return;const f=n[u]=n[r];n[r]=function(_,y,T){return y&&y.prototype&&c.forEach(function(m){const S=`${i}.${r}::`+m,D=y.prototype;if(D.hasOwnProperty(m)){const Z=e.ObjectGetOwnPropertyDescriptor(D,m);Z&&Z.value?(Z.value=e.wrapWithCurrentZone(Z.value,S),e._redefineProperty(y.prototype,m,Z)):D[m]&&(D[m]=e.wrapWithCurrentZone(D[m],S))}else D[m]&&(D[m]=e.wrapWithCurrentZone(D[m],S))}),f.call(n,_,y,T)},e.attachOriginToPatched(n[r],f)}const Ve=["absolutedeviceorientation","afterinput","afterprint","appinstalled","beforeinstallprompt","beforeprint","beforeunload","devicelight","devicemotion","deviceorientation","deviceorientationabsolute","deviceproximity","hashchange","languagechange","message","mozbeforepaint","offline","online","paint","pageshow","pagehide","popstate","rejectionhandled","storage","unhandledrejection","unload","userproximity","vrdisplayconnected","vrdisplaydisconnected","vrdisplaypresentchange"],wt=["encrypted","waitingforkey","msneedkey","mozinterruptbegin","mozinterruptend"],tt=["load"],nt=["blur","error","focus","load","resize","scroll","messageerror"],Dt=["bounce","finish","start"],rt=["loadstart","progress","abort","error","load","progress","timeout","loadend","readystatechange"],Ee=["upgradeneeded","complete","abort","success","error","blocked","versionchange","close"],St=["close","error","open","message"],Ot=["error","message"],Te=["abort","animationcancel","animationend","animationiteration","auxclick","beforeinput","blur","cancel","canplay","canplaythrough","change","compositionstart","compositionupdate","compositionend","cuechange","click","close","contextmenu","curechange","dblclick","drag","dragend","dragenter","dragexit","dragleave","dragover","drop","durationchange","emptied","ended","error","focus","focusin","focusout","gotpointercapture","input","invalid","keydown","keypress","keyup","load","loadstart","loadeddata","loadedmetadata","lostpointercapture","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","mousewheel","orientationchange","pause","play","playing","pointercancel","pointerdown","pointerenter","pointerleave","pointerlockchange","mozpointerlockchange","webkitpointerlockerchange","pointerlockerror","mozpointerlockerror","webkitpointerlockerror","pointermove","pointout","pointerover","pointerup","progress","ratechange","reset","resize","scroll","seeked","seeking","select","selectionchange","selectstart","show","sort","stalled","submit","suspend","timeupdate","volumechange","touchcancel","touchmove","touchstart","touchend","transitioncancel","transitionend","waiting","wheel"].concat(["webglcontextrestored","webglcontextlost","webglcontextcreationerror"],["autocomplete","autocompleteerror"],["toggle"],["afterscriptexecute","beforescriptexecute","DOMContentLoaded","freeze","fullscreenchange","mozfullscreenchange","webkitfullscreenchange","msfullscreenchange","fullscreenerror","mozfullscreenerror","webkitfullscreenerror","msfullscreenerror","readystatechange","visibilitychange","resume"],Ve,["beforecopy","beforecut","beforepaste","copy","cut","paste","dragstart","loadend","animationstart","search","transitionrun","transitionstart","webkitanimationend","webkitanimationiteration","webkitanimationstart","webkittransitionend"],["activate","afterupdate","ariarequest","beforeactivate","beforedeactivate","beforeeditfocus","beforeupdate","cellchange","controlselect","dataavailable","datasetchanged","datasetcomplete","errorupdate","filterchange","layoutcomplete","losecapture","move","moveend","movestart","propertychange","resizeend","resizestart","rowenter","rowexit","rowsdelete","rowsinserted","command","compassneedscalibration","deactivate","help","mscontentzoom","msmanipulationstatechanged","msgesturechange","msgesturedoubletap","msgestureend","msgesturehold","msgesturestart","msgesturetap","msgotpointercapture","msinertiastart","mslostpointercapture","mspointercancel","mspointerdown","mspointerenter","mspointerhover","mspointerleave","mspointermove","mspointerout","mspointerover","mspointerup","pointerout","mssitemodejumplistitemremoved","msthumbnailclick","stop","storagecommit"]);function ot(e,n,i){if(!i||0===i.length)return n;const r=i.filter(u=>u.target===e);if(!r||0===r.length)return n;const c=r[0].ignoreProperties;return n.filter(u=>-1===c.indexOf(u))}function W(e,n,i,r){e&&Ye(e,ot(e,n,i),r)}Zone.__load_patch("util",(e,n,i)=>{i.patchOnProperties=Ye,i.patchMethod=ce,i.bindArguments=Ae,i.patchMacroTask=_t;const r=n.__symbol__("BLACK_LISTED_EVENTS"),c=n.__symbol__("UNPATCHED_EVENTS");e[c]&&(e[r]=e[c]),e[r]&&(n[r]=n[c]=e[r]),i.patchEventPrototype=gt,i.patchEventTarget=Tt,i.isIEOrEdge=mt,i.ObjectDefineProperty=he,i.ObjectGetOwnPropertyDescriptor=ue,i.ObjectCreate=Be,i.ArraySlice=ut,i.patchClass=ve,i.wrapWithCurrentZone=Le,i.filterProperties=ot,i.attachOriginToPatched=ae,i._redefineProperty=Object.defineProperty,i.patchCallbacks=yt,i.getGlobalObjects=()=>({globalSources:Ke,zoneSymbolEventNames:ee,eventNames:Te,isBrowser:je,isMix:We,isNode:Re,TRUE_STR:se,FALSE_STR:ie,ZONE_SYMBOL_PREFIX:ke,ADD_EVENT_LISTENER_STR:Se,REMOVE_EVENT_LISTENER_STR:Oe})});const Ne=x("zoneTask");function ge(e,n,i,r){let c=null,u=null;i+=r;const f={};function _(T){const m=T.data;return m.args[0]=function(){return T.invoke.apply(this,arguments)},m.handleId=c.apply(e,m.args),T}function y(T){return u.call(e,T.data.handleId)}c=ce(e,n+=r,T=>function(m,S){if("function"==typeof S[0]){const D={isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?S[1]||0:void 0,args:S},Z=S[0];S[0]=function(){try{return Z.apply(this,arguments)}finally{D.isPeriodic||("number"==typeof D.handleId?delete f[D.handleId]:D.handleId&&(D.handleId[Ne]=null))}};const B=Me(n,S[0],D,_,y);if(!B)return B;const V=B.data.handleId;return"number"==typeof V?f[V]=B:V&&(V[Ne]=B),V&&V.ref&&V.unref&&"function"==typeof V.ref&&"function"==typeof V.unref&&(B.ref=V.ref.bind(V),B.unref=V.unref.bind(V)),"number"==typeof V||V?V:B}return T.apply(e,S)}),u=ce(e,i,T=>function(m,S){const D=S[0];let Z;"number"==typeof D?Z=f[D]:(Z=D&&D[Ne],Z||(Z=D)),Z&&"string"==typeof Z.type?"notScheduled"!==Z.state&&(Z.cancelFn&&Z.data.isPeriodic||0===Z.runCount)&&("number"==typeof D?delete f[D]:D&&(D[Ne]=null),Z.zone.cancelTask(Z)):T.apply(e,S)})}Zone.__load_patch("legacy",e=>{const n=e[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("queueMicrotask",(e,n,i)=>{i.patchMethod(e,"queueMicrotask",r=>function(c,u){n.current.scheduleMicroTask("queueMicrotask",u[0])})}),Zone.__load_patch("timers",e=>{const n="set",i="clear";ge(e,n,i,"Timeout"),ge(e,n,i,"Interval"),ge(e,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{ge(e,"request","cancel","AnimationFrame"),ge(e,"mozRequest","mozCancel","AnimationFrame"),ge(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,n)=>{const i=["alert","prompt","confirm"];for(let r=0;rfunction(y,T){return n.current.run(u,e,T,_)})}),Zone.__load_patch("EventTarget",(e,n,i)=>{(function(e,n){n.patchEventPrototype(e,n)})(e,i),function(e,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:r,TRUE_STR:c,FALSE_STR:u,ZONE_SYMBOL_PREFIX:f}=n.getGlobalObjects();for(let y=0;y{ve("MutationObserver"),ve("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(e,n,i)=>{ve("IntersectionObserver")}),Zone.__load_patch("FileReader",(e,n,i)=>{ve("FileReader")}),Zone.__load_patch("on_property",(e,n,i)=>{!function(e,n){if(Re&&!We||Zone[e.symbol("patchEvents")])return;const i="undefined"!=typeof WebSocket,r=n.__Zone_ignore_on_properties;if(je){const f=window,_=function(){try{const e=pe.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch(e){}return!1}()?[{target:f,ignoreProperties:["error"]}]:[];W(f,Te.concat(["messageerror"]),r&&r.concat(_),de(f)),W(Document.prototype,Te,r),void 0!==f.SVGElement&&W(f.SVGElement.prototype,Te,r),W(Element.prototype,Te,r),W(HTMLElement.prototype,Te,r),W(HTMLMediaElement.prototype,wt,r),W(HTMLFrameSetElement.prototype,Ve.concat(nt),r),W(HTMLBodyElement.prototype,Ve.concat(nt),r),W(HTMLFrameElement.prototype,tt,r),W(HTMLIFrameElement.prototype,tt,r);const y=f.HTMLMarqueeElement;y&&W(y.prototype,Dt,r);const T=f.Worker;T&&W(T.prototype,Ot,r)}const c=n.XMLHttpRequest;c&&W(c.prototype,rt,r);const u=n.XMLHttpRequestEventTarget;u&&W(u&&u.prototype,rt,r),"undefined"!=typeof IDBIndex&&(W(IDBIndex.prototype,Ee,r),W(IDBRequest.prototype,Ee,r),W(IDBOpenDBRequest.prototype,Ee,r),W(IDBDatabase.prototype,Ee,r),W(IDBTransaction.prototype,Ee,r),W(IDBCursor.prototype,Ee,r)),i&&W(WebSocket.prototype,St,r)}(i,e)}),Zone.__load_patch("customElements",(e,n,i)=>{!function(e,n){const{isBrowser:i,isMix:r}=n.getGlobalObjects();(i||r)&&e.customElements&&"customElements"in e&&n.patchCallbacks(n,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,i)}),Zone.__load_patch("XHR",(e,n)=>{!function(T){const m=T.XMLHttpRequest;if(!m)return;const S=m.prototype;let Z=S[Ze],B=S[Ie];if(!Z){const v=T.XMLHttpRequestEventTarget;if(v){const M=v.prototype;Z=M[Ze],B=M[Ie]}}const V="readystatechange",E="scheduled";function d(v){const M=v.data,R=M.target;R[u]=!1,R[_]=!1;const J=R[c];Z||(Z=R[Ze],B=R[Ie]),J&&B.call(R,V,J);const le=R[c]=()=>{if(R.readyState===R.DONE)if(!M.aborted&&R[u]&&v.state===E){const te=R[n.__symbol__("loadfalse")];if(0!==R.status&&te&&te.length>0){const re=v.invoke;v.invoke=function(){const F=R[n.__symbol__("loadfalse")];for(let I=0;Ifunction(v,M){return v[r]=0==M[2],v[f]=M[1],j.apply(v,M)}),O=x("fetchTaskAborting"),X=x("fetchTaskScheduling"),A=ce(S,"send",()=>function(v,M){if(!0===n.current[X]||v[r])return A.apply(v,M);{const R={target:v,url:v[f],isPeriodic:!1,args:M,aborted:!1},J=Me("XMLHttpRequest.send",L,R,d,z);v&&!0===v[_]&&!R.aborted&&J.state===E&&J.invoke()}}),Y=ce(S,"abort",()=>function(v,M){const R=function(v){return v[i]}(v);if(R&&"string"==typeof R.type){if(null==R.cancelFn||R.data&&R.data.aborted)return;R.zone.cancelTask(R)}else if(!0===n.current[O])return Y.apply(v,M)})}(e);const i=x("xhrTask"),r=x("xhrSync"),c=x("xhrListener"),u=x("xhrScheduled"),f=x("xhrURL"),_=x("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&&function(e,n){const i=e.constructor.name;for(let r=0;r{const y=function(){return _.apply(this,Ae(arguments,i+"."+c))};return ae(y,_),y})(u)}}}(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,n)=>{function i(r){return function(c){et(e,r).forEach(f=>{const _=e.PromiseRejectionEvent;if(_){const y=new _(r,{promise:c.promise,reason:c.rejection});f.invoke(y)}})}}e.PromiseRejectionEvent&&(n[x("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[x("rejectionHandledHandler")]=i("rejectionhandled"))})},443:(we,ue,he)=>{he(273)}},we=>{we(we.s=443)}]); - -(self.webpackChunkcoverage_app=self.webpackChunkcoverage_app||[]).push([[179],{255:wo=>{function Mn(Io){return Promise.resolve().then(()=>{var Tn=new Error("Cannot find module '"+Io+"'");throw Tn.code="MODULE_NOT_FOUND",Tn})}Mn.keys=()=>[],Mn.resolve=Mn,Mn.id=255,wo.exports=Mn},15:(wo,Mn,Io)=>{"use strict";function Tn(e){return"function"==typeof e}let ja=!1;const Rt={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else ja&&console.log("RxJS: Back to a better error behavior. Thank you. <3");ja=e},get useDeprecatedSynchronousErrorHandling(){return ja}};function _r(e){setTimeout(()=>{throw e},0)}const $i={closed:!0,next(e){},error(e){if(Rt.useDeprecatedSynchronousErrorHandling)throw e;_r(e)},complete(){}},$a=Array.isArray||(e=>e&&"number"==typeof e.length);function Ua(e){return null!==e&&"object"==typeof e}const Ui=(()=>{function e(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return e.prototype=Object.create(Error.prototype),e})();class Ee{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let t;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:o,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof Ee)n.remove(this);else if(null!==n)for(let s=0;st.concat(n instanceof Ui?n.errors:n),[])}Ee.EMPTY=((e=new Ee).closed=!0,e);const Gi="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class lt extends Ee{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=$i;break;case 1:if(!t){this.destination=$i;break}if("object"==typeof t){t instanceof lt?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new Gd(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new Gd(this,t,n,r)}}[Gi](){return this}static create(t,n,r){const o=new lt(t,n,r);return o.syncErrorThrowable=!1,o}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class Gd extends lt{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;Tn(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==$i&&(s=Object.create(n),Tn(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=i,this._error=r,this._complete=o}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;Rt.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=Rt;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=t,n.syncErrorThrown=!0):_r(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;_r(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);Rt.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,n){try{t.call(this._context,n)}catch(r){if(this.unsubscribe(),Rt.useDeprecatedSynchronousErrorHandling)throw r;_r(r)}}__tryOrSetError(t,n,r){if(!Rt.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return Rt.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(_r(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const Mo="function"==typeof Symbol&&Symbol.observable||"@@observable";function zd(e){return e}let qe=(()=>{class e{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const{operator:i}=this,s=function(e,t,n){if(e){if(e instanceof lt)return e;if(e[Gi])return e[Gi]()}return e||t||n?new lt(e,t,n):new lt($i)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||Rt.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),Rt.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){Rt.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof lt?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=qd(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){i(l),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[Mo](){return this}pipe(...n){return 0===n.length?this:function(e){return 0===e.length?zd:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=qd(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function qd(e){if(e||(e=Rt.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const To=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class pv extends Ee{constructor(t,n){super(),this.subject=t,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,n=t.observers;if(this.subject=null,!n||0===n.length||t.isStopped||t.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class Qd extends lt{constructor(t){super(t),this.destination=t}}let Ga=(()=>{class e extends qe{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[Gi](){return new Qd(this)}lift(n){const r=new Kd(this,this);return r.operator=n,r}next(n){if(this.closed)throw new To;if(!this.isStopped){const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;snew Kd(t,n),e})();class Kd extends Ga{constructor(t,n){super(),this.destination=t,this.source=n}next(t){const{destination:n}=this;n&&n.next&&n.next(t)}error(t){const{destination:n}=this;n&&n.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:n}=this;return n?this.source.subscribe(t):Ee.EMPTY}}function za(e,t){return function(r){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return r.lift(new mv(e,t))}}class mv{constructor(t,n){this.project=t,this.thisArg=n}call(t,n){return n.subscribe(new _v(t,this.project,this.thisArg))}}class _v extends lt{constructor(t,n,r){super(t),this.project=n,this.count=0,this.thisArg=r||this}_next(t){let n;try{n=this.project.call(this.thisArg,t,this.count++)}catch(r){return void this.destination.error(r)}this.destination.next(n)}}const Yd=e=>t=>{for(let n=0,r=e.length;ne&&"number"==typeof e.length&&"function"!=typeof e;function Jd(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}const Xd=e=>{if(e&&"function"==typeof e[Mo])return(e=>t=>{const n=e[Mo]();if("function"!=typeof n.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return n.subscribe(t)})(e);if(Zd(e))return Yd(e);if(Jd(e))return(e=>t=>(e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,_r),t))(e);if(e&&"function"==typeof e[zi])return(e=>t=>{const n=e[zi]();for(;;){let r;try{r=n.next()}catch(o){return t.error(o),t}if(r.done){t.complete();break}if(t.next(r.value),t.closed)break}return"function"==typeof n.return&&t.add(()=>{n.return&&n.return()}),t})(e);{const n=`You provided ${Ua(e)?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`;throw new TypeError(n)}};function ef(e,t){return new qe(n=>{const r=new Ee;let o=0;return r.add(t.schedule(function(){o!==e.length?(n.next(e[o++]),n.closed||r.add(this.schedule())):n.complete()})),r})}function Wa(e,t){return t?function(e,t){if(null!=e){if(function(e){return e&&"function"==typeof e[Mo]}(e))return function(e,t){return new qe(n=>{const r=new Ee;return r.add(t.schedule(()=>{const o=e[Mo]();r.add(o.subscribe({next(i){r.add(t.schedule(()=>n.next(i)))},error(i){r.add(t.schedule(()=>n.error(i)))},complete(){r.add(t.schedule(()=>n.complete()))}}))})),r})}(e,t);if(Jd(e))return function(e,t){return new qe(n=>{const r=new Ee;return r.add(t.schedule(()=>e.then(o=>{r.add(t.schedule(()=>{n.next(o),r.add(t.schedule(()=>n.complete()))}))},o=>{r.add(t.schedule(()=>n.error(o)))}))),r})}(e,t);if(Zd(e))return ef(e,t);if(function(e){return e&&"function"==typeof e[zi]}(e)||"string"==typeof e)return function(e,t){if(!e)throw new Error("Iterable cannot be null");return new qe(n=>{const r=new Ee;let o;return r.add(()=>{o&&"function"==typeof o.return&&o.return()}),r.add(t.schedule(()=>{o=e[zi](),r.add(t.schedule(function(){if(n.closed)return;let i,s;try{const a=o.next();i=a.value,s=a.done}catch(a){return void n.error(a)}s?n.complete():(n.next(i),this.schedule())}))})),r})}(e,t)}throw new TypeError((null!==e&&typeof e||e)+" is not observable")}(e,t):e instanceof qe?e:new qe(Xd(e))}class Av extends lt{constructor(t){super(),this.parent=t}_next(t){this.parent.notifyNext(t)}_error(t){this.parent.notifyError(t),this.unsubscribe()}_complete(){this.parent.notifyComplete(),this.unsubscribe()}}class Sv extends lt{notifyNext(t){this.destination.next(t)}notifyError(t){this.destination.error(t)}notifyComplete(){this.destination.complete()}}function tf(e,t,n=Number.POSITIVE_INFINITY){return"function"==typeof t?r=>r.pipe(tf((o,i)=>Wa(e(o,i)).pipe(za((s,a)=>t(o,s,i,a))),n)):("number"==typeof t&&(n=t),r=>r.lift(new Nv(e,n)))}class Nv{constructor(t,n=Number.POSITIVE_INFINITY){this.project=t,this.concurrent=n}call(t,n){return n.subscribe(new Rv(t,this.project,this.concurrent))}}class Rv extends Sv{constructor(t,n,r=Number.POSITIVE_INFINITY){super(t),this.project=n,this.concurrent=r,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(t){this.active0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}function Fv(e=Number.POSITIVE_INFINITY){return tf(zd,e)}function nf(){return function(t){return t.lift(new Vv(t))}}class Vv{constructor(t){this.connectable=t}call(t,n){const{connectable:r}=this;r._refCount++;const o=new kv(t,r),i=n.subscribe(o);return o.closed||(o.connection=r.connect()),i}}class kv extends lt{constructor(t,n){super(t),this.connectable=n}_unsubscribe(){const{connectable:t}=this;if(!t)return void(this.connection=null);this.connectable=null;const n=t._refCount;if(n<=0)return void(this.connection=null);if(t._refCount=n-1,n>1)return void(this.connection=null);const{connection:r}=this,o=t._connection;this.connection=null,o&&(!r||o===r)&&o.unsubscribe()}}class Lv extends qe{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._refCount=0,this._isComplete=!1}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}connect(){let t=this._connection;return t||(this._isComplete=!1,t=this._connection=new Ee,t.add(this.source.subscribe(new Hv(this.getSubject(),this))),t.closed&&(this._connection=null,t=Ee.EMPTY)),t}refCount(){return nf()(this)}}const Bv=(()=>{const e=Lv.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:e._subscribe},_isComplete:{value:e._isComplete,writable:!0},getSubject:{value:e.getSubject},connect:{value:e.connect},refCount:{value:e.refCount}}})();class Hv extends Qd{constructor(t,n){super(t),this.connectable=n}_error(t){this._unsubscribe(),super._error(t)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const t=this.connectable;if(t){this.connectable=null;const n=t._connection;t._refCount=0,t._subject=null,t._connection=null,n&&n.unsubscribe()}}}function Gv(){return new Ga}function ee(e){for(let t in e)if(e[t]===ee)return t;throw Error("Could not find renamed property on target object.")}function qa(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function W(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(W).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Qa(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const Wv=ee({__forward_ref__:ee});function ue(e){return e.__forward_ref__=ue,e.toString=function(){return W(this())},e}function N(e){return rf(e)?e():e}function rf(e){return"function"==typeof e&&e.hasOwnProperty(Wv)&&e.__forward_ref__===ue}class Qn extends Error{constructor(t,n){super(function(e,t){return`${e?`NG0${e}: `:""}${t}`}(t,n)),this.code=t}}function U(e){return"string"==typeof e?e:null==e?"":String(e)}function Qe(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():U(e)}function Wi(e,t){const n=t?` in ${t}`:"";throw new Qn("201",`No provider for ${Qe(e)} found${n}`)}function ut(e,t){null==e&&function(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(null==r?"":` [Expected=> ${n} ${r} ${t} <=Actual]`))}(t,e,null,"!=")}function te(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Ft(e){return{providers:e.providers||[],imports:e.imports||[]}}function pn(e){return of(e,qi)||of(e,af)}function of(e,t){return e.hasOwnProperty(t)?e[t]:null}function sf(e){return e&&(e.hasOwnProperty(Ya)||e.hasOwnProperty(Xv))?e[Ya]:null}const qi=ee({\u0275prov:ee}),Ya=ee({\u0275inj:ee}),af=ee({ngInjectableDef:ee}),Xv=ee({ngInjectorDef:ee});var O=(()=>((O=O||{})[O.Default=0]="Default",O[O.Host=1]="Host",O[O.Self=2]="Self",O[O.SkipSelf=4]="SkipSelf",O[O.Optional=8]="Optional",O))();let Za;function An(e){const t=Za;return Za=e,t}function lf(e,t,n){const r=pn(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&O.Optional?null:void 0!==t?t:void Wi(W(e),"Injector")}function Sn(e){return{toString:e}.toString()}var yt=(()=>((yt=yt||{})[yt.OnPush=0]="OnPush",yt[yt.Default=1]="Default",yt))(),Se=(()=>((Se=Se||{})[Se.Emulated=0]="Emulated",Se[Se.None=2]="None",Se[Se.ShadowDom=3]="ShadowDom",Se))();const tD="undefined"!=typeof globalThis&&globalThis,nD="undefined"!=typeof window&&window,rD="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,oD="undefined"!=typeof global&&global,ne=tD||oD||nD||rD,yr={},ie=[],Qi=ee({\u0275cmp:ee}),Ja=ee({\u0275dir:ee}),Xa=ee({\u0275pipe:ee}),cf=ee({\u0275mod:ee}),iD=ee({\u0275loc:ee}),gn=ee({\u0275fac:ee}),Ao=ee({__NG_ELEMENT_ID__:ee});let sD=0;function xn(e){return Sn(()=>{const n={},r={type:e.type,providersResolver:null,decls:e.decls,vars:e.vars,factory:null,template:e.template||null,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:n,inputs:null,outputs:null,exportAs:e.exportAs||null,onPush:e.changeDetection===yt.OnPush,directiveDefs:null,pipeDefs:null,selectors:e.selectors||ie,viewQuery:e.viewQuery||null,features:e.features||null,data:e.data||{},encapsulation:e.encapsulation||Se.Emulated,id:"c",styles:e.styles||ie,_:null,setInput:null,schemas:e.schemas||null,tView:null},o=e.directives,i=e.features,s=e.pipes;return r.id+=sD++,r.inputs=hf(e.inputs,n),r.outputs=hf(e.outputs),i&&i.forEach(a=>a(r)),r.directiveDefs=o?()=>("function"==typeof o?o():o).map(uf):null,r.pipeDefs=s?()=>("function"==typeof s?s():s).map(df):null,r})}function uf(e){return Ke(e)||function(e){return e[Ja]||null}(e)}function df(e){return function(e){return e[Xa]||null}(e)}const ff={};function mn(e){return Sn(()=>{const t={type:e.type,bootstrap:e.bootstrap||ie,declarations:e.declarations||ie,imports:e.imports||ie,exports:e.exports||ie,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null};return null!=e.id&&(ff[e.id]=e.type),t})}function hf(e,t){if(null==e)return yr;const n={};for(const r in e)if(e.hasOwnProperty(r)){let o=e[r],i=o;Array.isArray(o)&&(i=o[1],o=o[0]),n[o]=r,t&&(t[o]=i)}return n}const L=xn;function ot(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,onDestroy:e.type.prototype.ngOnDestroy||null}}function Ke(e){return e[Qi]||null}function Ct(e,t){const n=e[cf]||null;if(!n&&!0===t)throw new Error(`Type ${W(e)} does not have '\u0275mod' property.`);return n}const G=11;function Yt(e){return Array.isArray(e)&&"object"==typeof e[1]}function Pt(e){return Array.isArray(e)&&!0===e[1]}function nl(e){return 0!=(8&e.flags)}function Ji(e){return 2==(2&e.flags)}function Xi(e){return 1==(1&e.flags)}function Vt(e){return null!==e.template}function hD(e){return 0!=(512&e[2])}function Xn(e,t){return e.hasOwnProperty(gn)?e[gn]:null}class gf{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function ft(){return mf}function mf(e){return e.type.prototype.ngOnChanges&&(e.setInput=_D),mD}function mD(){const e=yf(this),t=null==e?void 0:e.current;if(t){const n=e.previous;if(n===yr)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function _D(e,t,n,r){const o=yf(e)||function(e,t){return e[_f]=t}(e,{previous:yr,current:null}),i=o.current||(o.current={}),s=o.previous,a=this.declaredInputs[n],l=s[a];i[a]=new gf(l&&l.currentValue,t,s===yr),e[r]=t}ft.ngInherit=!0;const _f="__ngSimpleChanges__";function yf(e){return e[_f]||null}const Cf="http://www.w3.org/2000/svg";let il;function ve(e){return!!e.listen}const Df={createRenderer:(e,t)=>void 0!==il?il:"undefined"!=typeof document?document:void 0};function Me(e){for(;Array.isArray(e);)e=e[0];return e}function es(e,t){return Me(t[e])}function bt(e,t){return Me(t[e.index])}function al(e,t){return e.data[t]}function ht(e,t){const n=t[e];return Yt(n)?n:n[0]}function ll(e){return 128==(128&e[2])}function Rn(e,t){return null==t?null:e[t]}function Ef(e){e[18]=0}function cl(e,t){e[5]+=t;let n=e,r=e[3];for(;null!==r&&(1===t&&1===n[5]||-1===t&&0===n[5]);)r[5]+=t,n=r,r=r[3]}const B={lFrame:Nf(null),bindingsEnabled:!0,isInCheckNoChangesMode:!1};function wf(){return B.bindingsEnabled}function b(){return B.lFrame.lView}function J(){return B.lFrame.tView}function le(e){return B.lFrame.contextLView=e,e[8]}function xe(){let e=If();for(;null!==e&&64===e.type;)e=e.parent;return e}function If(){return B.lFrame.currentTNode}function Zt(e,t){const n=B.lFrame;n.currentTNode=e,n.isParent=t}function ul(){return B.lFrame.isParent}function dl(){B.lFrame.isParent=!1}function ts(){return B.isInCheckNoChangesMode}function ns(e){B.isInCheckNoChangesMode=e}function Ye(){const e=B.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function wr(){return B.lFrame.bindingIndex++}function _n(e){const t=B.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function RD(e,t){const n=B.lFrame;n.bindingIndex=n.bindingRootIndex=e,fl(t)}function fl(e){B.lFrame.currentDirectiveIndex=e}function pl(e){B.lFrame.currentQueryIndex=e}function OD(e){const t=e[1];return 2===t.type?t.declTNode:1===t.type?e[6]:null}function Sf(e,t,n){if(n&O.SkipSelf){let o=t,i=e;for(;!(o=o.parent,null!==o||n&O.Host||(o=OD(i),null===o||(i=i[15],10&o.type))););if(null===o)return!1;t=o,e=i}const r=B.lFrame=xf();return r.currentTNode=t,r.lView=e,!0}function rs(e){const t=xf(),n=e[1];B.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function xf(){const e=B.lFrame,t=null===e?null:e.child;return null===t?Nf(e):t}function Nf(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function Rf(){const e=B.lFrame;return B.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const Ff=Rf;function os(){const e=Rf();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Ze(){return B.lFrame.selectedIndex}function Fn(e){B.lFrame.selectedIndex=e}function De(){const e=B.lFrame;return al(e.tView,e.selectedIndex)}function is(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[l]<0&&(e[18]+=65536),(a>11>16&&(3&e[2])===t){e[2]+=2048;try{i.call(a)}finally{}}}else try{i.call(a)}finally{}}class Fo{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function ls(e,t,n){const r=ve(e);let o=0;for(;ot){s=i-1;break}}}for(;i>16}(e),r=t;for(;n>0;)r=r[15],n--;return r}let yl=!0;function us(e){const t=yl;return yl=e,t}let QD=0;function Po(e,t){const n=vl(e,t);if(-1!==n)return n;const r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,Cl(r.data,e),Cl(t,null),Cl(r.blueprint,null));const o=ds(e,t),i=e.injectorIndex;if(Lf(o)){const s=Ir(o),a=Mr(o,t),l=a[1].data;for(let c=0;c<8;c++)t[i+c]=a[s+c]|l[s+c]}return t[i+8]=o,i}function Cl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function vl(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function ds(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;null!==o;){const i=o[1],s=i.type;if(r=2===s?i.declTNode:1===s?o[6]:null,null===r)return-1;if(n++,o=o[15],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return-1}function fs(e,t,n){!function(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(Ao)&&(r=n[Ao]),null==r&&(r=n[Ao]=QD++);const o=255&r;t.data[e+(o>>5)]|=1<=0?255&t:ZD:t}(n);if("function"==typeof i){if(!Sf(t,e,r))return r&O.Host?jf(o,n,r):$f(t,n,r,o);try{const s=i(r);if(null!=s||r&O.Optional)return s;Wi(n)}finally{Ff()}}else if("number"==typeof i){let s=null,a=vl(e,t),l=-1,c=r&O.Host?t[16][6]:null;for((-1===a||r&O.SkipSelf)&&(l=-1===a?ds(e,t):t[a+8],-1!==l&&Wf(r,!1)?(s=t[1],a=Ir(l),t=Mr(l,t)):a=-1);-1!==a;){const u=t[1];if(zf(i,a,u.data)){const d=JD(a,t,n,s,r,c);if(d!==Gf)return d}l=t[a+8],-1!==l&&Wf(r,t[1].data[a+8]===c)&&zf(i,a,t)?(s=u,a=Ir(l),t=Mr(l,t)):a=-1}}}return $f(t,n,r,o)}const Gf={};function ZD(){return new Tr(xe(),b())}function JD(e,t,n,r,o,i){const s=t[1],a=s.data[e+8],u=function(e,t,n,r,o){const i=e.providerIndexes,s=t.data,a=1048575&i,l=e.directiveStart,u=i>>20,f=o?a+u:e.directiveEnd;for(let h=r?a:a+u;h=l&&p.type===n)return h}if(o){const h=s[l];if(h&&Vt(h)&&h.type===n)return l}return null}(a,s,n,null==r?Ji(a)&&yl:r!=s&&0!=(3&a.type),o&O.Host&&i===a);return null!==u?Vo(t,s,u,a):Gf}function Vo(e,t,n,r){let o=e[n];const i=t.data;if(function(e){return e instanceof Fo}(o)){const s=o;s.resolving&&function(e,t){throw new Qn("200",`Circular dependency in DI detected for ${e}`)}(Qe(i[n]));const a=us(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?An(s.injectImpl):null;Sf(e,r,O.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&function(e,t,n){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){const s=mf(t);(n.preOrderHooks||(n.preOrderHooks=[])).push(e,s),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,s)}o&&(n.preOrderHooks||(n.preOrderHooks=[])).push(0-e,o),i&&((n.preOrderHooks||(n.preOrderHooks=[])).push(e,i),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,i))}(n,i[n],t)}finally{null!==l&&An(l),us(a),s.resolving=!1,Ff()}}return o}function zf(e,t,n){return!!(n[t+(e>>5)]&1<{const t=e.prototype.constructor,n=t[gn]||Dl(t),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[gn]||Dl(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Dl(e){return rf(e)?()=>{const t=Dl(N(e));return t&&t()}:Xn(e)}const Sr="__parameters__";function er(e,t,n){return Sn(()=>{const r=function(e){return function(...n){if(e){const r=e(...n);for(const o in r)this[o]=r[o]}}}(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;const s=new o(...i);return a.annotation=s,a;function a(l,c,u){const d=l.hasOwnProperty(Sr)?l[Sr]:Object.defineProperty(l,Sr,{value:[]})[Sr];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),l}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}class X{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=te({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}toString(){return`InjectionToken ${this._desc}`}}function Xt(e,t){e.forEach(n=>Array.isArray(n)?Xt(n,t):t(n))}function gs(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function tr(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function pt(e,t,n){let r=Nr(e,t);return r>=0?e[1|r]=n:(r=~r,function(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(1===o)e.push(r,e[0]),e[0]=n;else{for(o--,e.push(e[o-1],e[o]);o>t;)e[o]=e[o-2],o--;e[t]=n,e[t+1]=r}}(e,r,t,n)),r}function Il(e,t){const n=Nr(e,t);if(n>=0)return e[1|n]}function Nr(e,t){return function(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){const i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o< ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+("string"==typeof a?JSON.stringify(a):W(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(db,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[Rr]=null,e}const Uo=$o(er("Inject",e=>({token:e})),-1),en=$o(er("Optional"),8),rr=$o(er("SkipSelf"),4);class or{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see https://g.co/ng/security#xss)`}}function gt(e){return e instanceof or?e.changingThisBreaksApplicationSecurity:e}function tn(e,t){const n=function(e){return e instanceof or&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see https://g.co/ng/security#xss)`)}return n===t}const Lb=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi,Bb=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;var ce=(()=>((ce=ce||{})[ce.NONE=0]="NONE",ce[ce.HTML=1]="HTML",ce[ce.STYLE=2]="STYLE",ce[ce.SCRIPT=3]="SCRIPT",ce[ce.URL=4]="URL",ce[ce.RESOURCE_URL=5]="RESOURCE_URL",ce))();function Vr(e){const t=function(){const e=b();return e&&e[12]}();return t?t.sanitize(ce.URL,e)||"":tn(e,"URL")?gt(e):function(e){return(e=String(e)).match(Lb)||e.match(Bb)?e:"unsafe:"+e}(U(e))}const _h="__ngContext__";function He(e,t){e[_h]=t}function Ll(e){const t=function(e){return e[_h]||null}(e);return t?Array.isArray(t)?t:t.lView:null}function bs(e){return e.ngOriginalError}function aE(e,...t){e.error(...t)}class ir{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t),r=this._findContext(t),o=function(e){return e&&e.ngErrorLogger||aE}(t);o(this._console,"ERROR",t),n&&o(this._console,"ORIGINAL ERROR",n),r&&o(this._console,"ERROR CONTEXT",r)}_findContext(t){return t?function(e){return e.ngDebugContext}(t)||this._findContext(bs(t)):null}_findOriginalError(t){let n=t&&bs(t);for(;n&&bs(n);)n=bs(n);return n||null}}const Mh=(()=>("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(ne))();function Hl(e){return e.ownerDocument.defaultView}function rn(e){return e instanceof Function?e():e}var mt=(()=>((mt=mt||{})[mt.Important=1]="Important",mt[mt.DashCase=2]="DashCase",mt))();function $l(e,t){return undefined(e,t)}function Ko(e){const t=e[3];return Pt(t)?t[3]:t}function Ul(e){return Nh(e[13])}function Gl(e){return Nh(e[4])}function Nh(e){for(;null!==e&&!Pt(e);)e=e[4];return e}function Lr(e,t,n,r,o){if(null!=r){let i,s=!1;Pt(r)?i=r:Yt(r)&&(s=!0,r=r[0]);const a=Me(r);0===e&&null!==n?null==o?kh(t,n,a):sr(t,n,a,o||null,!0):1===e&&null!==n?sr(t,n,a,o||null,!0):2===e?function(e,t,n){const r=ws(e,t);r&&function(e,t,n,r){ve(e)?e.removeChild(t,n,r):t.removeChild(n)}(e,r,t,n)}(t,a,s):3===e&&t.destroyNode(a),null!=i&&function(e,t,n,r,o){const i=n[7];i!==Me(n)&&Lr(t,e,r,i,o);for(let a=10;a0&&(e[n-1][4]=r[4]);const i=tr(e,10+t);!function(e,t){Yo(e,t,t[G],2,null,null),t[0]=null,t[6]=null}(r[1],r);const s=i[19];null!==s&&s.detachView(i[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Oh(e,t){if(!(256&t[2])){const n=t[G];ve(n)&&n.destroyNode&&Yo(e,t,n,3,null,null),function(e){let t=e[13];if(!t)return Ql(e[1],e);for(;t;){let n=null;if(Yt(t))n=t[13];else{const r=t[10];r&&(n=r)}if(!n){for(;t&&!t[4]&&t!==e;)Yt(t)&&Ql(t[1],t),t=t[3];null===t&&(t=e),Yt(t)&&Ql(t[1],t),n=t&&t[4]}t=n}}(t)}}function Ql(e,t){if(!(256&t[2])){t[2]&=-129,t[2]|=256,function(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let r=0;r=0?r[o=c]():r[o=-c].unsubscribe(),i+=2}else{const s=r[o=n[i+1]];n[i].call(s)}if(null!==r){for(let i=o+1;ii?"":o[d+1].toLowerCase();const h=8&r?f:null;if(h&&-1!==qh(h,c,0)||2&r&&c!==f){if(kt(r))return!1;s=!0}}}}else{if(!s&&!kt(r)&&!kt(l))return!1;if(s&&kt(l))continue;s=!1,r=l|1&r}}return kt(r)||s}function kt(e){return 0==(1&e)}function PE(e,t,n,r){if(null===t)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+a+'"':"")+"]"}else 8&r?o+="."+s:4&r&&(o+=" "+s);else""!==o&&!kt(s)&&(t+=Zh(i,o),o=""),r=s,i=i||!kt(r);n++}return""!==o&&(t+=Zh(i,o)),t}const j={};function g(e){Jh(J(),b(),Ze()+e,ts())}function Jh(e,t,n,r){if(!r)if(3==(3&t[2])){const i=e.preOrderCheckHooks;null!==i&&ss(t,i,n)}else{const i=e.preOrderHooks;null!==i&&as(t,i,0,n)}Fn(n)}function Ts(e,t){return e<<17|t<<2}function Lt(e){return e>>17&32767}function Xl(e){return 2|e}function yn(e){return(131068&e)>>2}function ec(e,t){return-131069&e|t<<2}function tc(e){return 1|e}function lp(e,t){const n=e.contentQueries;if(null!==n)for(let r=0;r20&&Jh(e,t,20,ts()),n(r,o)}finally{Fn(i)}}function up(e,t,n){if(nl(t)){const o=t.directiveEnd;for(let i=t.directiveStart;i0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(a)!=l&&a.push(l),a.push(r,o,s)}}function yp(e,t){null!==e.hostBindings&&e.hostBindings(1,t)}function Cp(e,t){t.flags|=2,(e.components||(e.components=[])).push(t.index)}function fw(e,t,n){if(n){if(t.exportAs)for(let r=0;r0&&hc(n)}}function hc(e){for(let r=Ul(e);null!==r;r=Gl(r))for(let o=10;o0&&hc(i)}const n=e[1].components;if(null!==n)for(let r=0;r0&&hc(o)}}function Cw(e,t){const n=ht(t,e),r=n[1];(function(e,t){for(let n=t.length;nPromise.resolve(null))();function wp(e){return e[7]||(e[7]=[])}function Ip(e){return e.cleanup||(e.cleanup=[])}function Tp(e,t){const n=e[9],r=n?n.get(ir,null):null;r&&r.handleError(t)}function Ap(e,t,n,r,o){for(let i=0;ithis.processProvider(a,t,n)),Xt([t],a=>this.processInjectorType(a,[],i)),this.records.set($r,Ur(void 0,this));const s=this.records.get(Xo);this.scope=null!=s?s.value:null,this.source=o||("object"==typeof t?null:W(t))}get destroyed(){return this._destroyed}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach(t=>t.ngOnDestroy())}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}get(t,n=Ho,r=O.Default){this.assertNotDestroyed();const o=Fr(this),i=An(void 0);try{if(!(r&O.SkipSelf)){let a=this.records.get(t);if(void 0===a){const l=function(e){return"function"==typeof e||"object"==typeof e&&e instanceof X}(t)&&pn(t);a=l&&this.injectableDefInScope(l)?Ur(Cc(t),ei):null,this.records.set(t,a)}if(null!=a)return this.hydrate(t,a)}return(r&O.Self?xp():this.parent).get(t,n=r&O.Optional&&n===Ho?null:n)}catch(s){if("NullInjectorError"===s.name){if((s[Rr]=s[Rr]||[]).unshift(W(t)),o)throw s;return Jf(s,t,"R3InjectorError",this.source)}throw s}finally{An(i),Fr(o)}}_resolveInjectorDefTypes(){this.injectorDefTypes.forEach(t=>this.get(t))}toString(){const t=[];return this.records.forEach((r,o)=>t.push(W(o))),`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}processInjectorType(t,n,r){if(!(t=N(t)))return!1;let o=sf(t);const i=null==o&&t.ngModule||void 0,s=void 0===i?t:i,a=-1!==r.indexOf(s);if(void 0!==i&&(o=sf(i)),null==o)return!1;if(null!=o.imports&&!a){let u;r.push(s);try{Xt(o.imports,d=>{this.processInjectorType(d,n,r)&&(void 0===u&&(u=[]),u.push(d))})}finally{}if(void 0!==u)for(let d=0;dthis.processProvider(p,f,h||ie))}}this.injectorDefTypes.add(s);const l=Xn(s)||(()=>new s);this.records.set(s,Ur(l,ei));const c=o.providers;if(null!=c&&!a){const u=t;Xt(c,d=>this.processProvider(d,u,c))}return void 0!==i&&void 0!==t.providers}processProvider(t,n,r){let o=Gr(t=N(t))?t:N(t&&t.provide);const i=function(e,t,n){return Fp(e)?Ur(void 0,e.useValue):Ur(Rp(e),ei)}(t);if(Gr(t)||!0!==t.multi)this.records.get(o);else{let s=this.records.get(o);s||(s=Ur(void 0,ei,!0),s.factory=()=>nr(s.multi),this.records.set(o,s)),o=t,s.multi.push(t)}this.records.set(o,i)}hydrate(t,n){return n.value===ei&&(n.value=Tw,n.value=n.factory()),"object"==typeof n.value&&n.value&&function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this.onDestroy.add(n.value),n.value}injectableDefInScope(t){if(!t.providedIn)return!1;const n=N(t.providedIn);return"string"==typeof n?"any"===n||n===this.scope:this.injectorDefTypes.has(n)}}function Cc(e){const t=pn(e),n=null!==t?t.factory:Xn(e);if(null!==n)return n;if(e instanceof X)throw new Error(`Token ${W(e)} is missing a \u0275prov definition.`);if(e instanceof Function)return function(e){const t=e.length;if(t>0){const r=function(e,t){const n=[];for(let r=0;rn.factory(e):()=>new e}(e);throw new Error("unreachable")}function Rp(e,t,n){let r;if(Gr(e)){const o=N(e);return Xn(o)||Cc(o)}if(Fp(e))r=()=>N(e.useValue);else if(function(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...nr(e.deps||[]));else if(function(e){return!(!e||!e.useExisting)}(e))r=()=>Y(N(e.useExisting));else{const o=N(e&&(e.useClass||e.provide));if(!function(e){return!!e.deps}(e))return Xn(o)||Cc(o);r=()=>new o(...nr(e.deps))}return r}function Ur(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Fp(e){return null!==e&&"object"==typeof e&&Sl in e}function Gr(e){return"function"==typeof e}const Op=function(e,t,n){return function(e,t=null,n=null,r){const o=Np(e,t,n,r);return o._resolveInjectorDefTypes(),o}({name:n},t,e,n)};let pe=(()=>{class e{static create(n,r){return Array.isArray(n)?Op(n,r,""):Op(n.providers,n.parent,n.name||"")}}return e.THROW_IF_NOT_FOUND=Ho,e.NULL=new Sp,e.\u0275prov=te({token:e,providedIn:"any",factory:()=>Y($r)}),e.__NG_ELEMENT_ID__=-1,e})();function Yw(e,t){is(Ll(e)[1],xe())}function ge(e){let t=function(e){return Object.getPrototypeOf(e.prototype).constructor}(e.type),n=!0;const r=[e];for(;t;){let o;if(Vt(e))o=t.\u0275cmp||t.\u0275dir;else{if(t.\u0275cmp)throw new Error("Directives cannot inherit Components");o=t.\u0275dir}if(o){if(n){r.push(o);const s=e;s.inputs=Ic(e.inputs),s.declaredInputs=Ic(e.declaredInputs),s.outputs=Ic(e.outputs);const a=o.hostBindings;a&&e0(e,a);const l=o.viewQuery,c=o.contentQueries;if(l&&Jw(e,l),c&&Xw(e,c),qa(e.inputs,o.inputs),qa(e.declaredInputs,o.declaredInputs),qa(e.outputs,o.outputs),Vt(o)&&o.data.animation){const u=e.data;u.animation=(u.animation||[]).concat(o.data.animation)}}const i=o.features;if(i)for(let s=0;s=0;r--){const o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=cs(o.hostAttrs,n=cs(n,o.hostAttrs))}}(r)}function Ic(e){return e===yr?{}:e===ie?[]:e}function Jw(e,t){const n=e.viewQuery;e.viewQuery=n?(r,o)=>{t(r,o),n(r,o)}:t}function Xw(e,t){const n=e.contentQueries;e.contentQueries=n?(r,o,i)=>{t(r,o,i),n(r,o,i)}:t}function e0(e,t){const n=e.hostBindings;e.hostBindings=n?(r,o)=>{t(r,o),n(r,o)}:t}let Fs=null;function zr(){if(!Fs){const e=ne.Symbol;if(e&&e.iterator)Fs=e.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let n=0;na(Me(R[r.index])):r.index;if(ve(n)){let R=null;if(!a&&l&&(R=function(e,t,n,r){const o=e.cleanup;if(null!=o)for(let i=0;il?a[l]:null}"string"==typeof s&&(i+=2)}return null}(e,t,o,r.index)),null!==R)(R.__ngLastListenerFn__||R).__ngNextListenerFn__=i,R.__ngLastListenerFn__=i,h=!1;else{i=Fc(r,t,d,i,!1);const q=n.listen(E,o,i);f.push(i,q),u&&u.push(o,x,v,v+1)}}else i=Fc(r,t,d,i,!0),E.addEventListener(o,i,s),f.push(i),u&&u.push(o,x,v,s)}else i=Fc(r,t,d,i,!1);const p=r.outputs;let _;if(h&&null!==p&&(_=p[o])){const m=_.length;if(m)for(let E=0;E0;)t=t[15],e--;return t}(e,B.lFrame.contextLView))[8]}(e)}function oi(e,t,n){return Oc(e,"",t,"",n),oi}function Oc(e,t,n,r,o){const i=b(),s=qr(i,t,n,r);return s!==j&&_t(J(),De(),i,e,s,i[G],o,!1),Oc}function xg(e,t,n,r,o){const i=e[n+1],s=null===t;let a=r?Lt(i):yn(i),l=!1;for(;0!==a&&(!1===l||s);){const u=e[a+1];j0(e[a],t)&&(l=!0,e[a+1]=r?tc(u):Xl(u)),a=r?Lt(u):yn(u)}l&&(e[n+1]=r?Xl(i):tc(i))}function j0(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&Nr(e,t)>=0}const Re={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Ng(e){return e.substring(Re.key,Re.keyEnd)}function Rg(e,t){const n=Re.textEnd;return n===t?-1:(t=Re.keyEnd=function(e,t,n){for(;t32;)t++;return t}(e,Re.key=t,n),no(e,t,n))}function no(e,t,n){for(;t=0;n=Rg(t,n))pt(e,Ng(t),!0)}function Lg(e,t){return t>=e.expandoStartIndex}function Bg(e,t,n,r){const o=e.data;if(null===o[n+1]){const i=o[Ze()],s=Lg(e,n);Ug(i,r)&&null===t&&!s&&(t=!1),t=function(e,t,n,r){const o=function(e){const t=B.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let i=r?t.residualClasses:t.residualStyles;if(null===o)0===(r?t.classBindings:t.styleBindings)&&(n=ii(n=Pc(null,e,t,n,r),t.attrs,r),i=null);else{const s=t.directiveStylingLast;if(-1===s||e[s]!==o)if(n=Pc(o,e,t,n,r),null===i){let l=function(e,t,n){const r=n?t.classBindings:t.styleBindings;if(0!==yn(r))return e[Lt(r)]}(e,t,r);void 0!==l&&Array.isArray(l)&&(l=Pc(null,e,t,l[1],r),l=ii(l,t.attrs,r),function(e,t,n,r){e[Lt(n?t.classBindings:t.styleBindings)]=r}(e,t,r,l))}else i=function(e,t,n){let r;const o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0)&&(c=!0)}else u=n;if(o)if(0!==l){const f=Lt(e[a+1]);e[r+1]=Ts(f,a),0!==f&&(e[f+1]=ec(e[f+1],r)),e[a+1]=function(e,t){return 131071&e|t<<17}(e[a+1],r)}else e[r+1]=Ts(a,0),0!==a&&(e[a+1]=ec(e[a+1],r)),a=r;else e[r+1]=Ts(l,0),0===a?a=r:e[l+1]=ec(e[l+1],r),l=r;c&&(e[r+1]=Xl(e[r+1])),xg(e,u,r,!0),xg(e,u,r,!1),function(e,t,n,r,o){const i=o?e.residualClasses:e.residualStyles;null!=i&&"string"==typeof t&&Nr(i,t)>=0&&(n[r+1]=tc(n[r+1]))}(t,u,e,r,i),s=Ts(a,l),i?t.classBindings=s:t.styleBindings=s}(o,i,t,n,s,r)}}function Pc(e,t,n,r,o){let i=null;const s=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const l=e[o],c=Array.isArray(l),u=c?l[1]:l,d=null===u;let f=n[o+1];f===j&&(f=d?ie:void 0);let h=d?Il(f,r):u===r?f:void 0;if(c&&!Ls(h)&&(h=Il(l,r)),Ls(h)&&(a=h,s))return a;const p=e[o+1];o=s?Lt(p):yn(p)}if(null!==t){let l=i?t.residualClasses:t.residualStyles;null!=l&&(a=Il(l,r))}return a}function Ls(e){return void 0!==e}function Ug(e,t){return 0!=(e.flags&(t?16:32))}function M(e,t=""){const n=b(),r=J(),o=e+20,i=r.firstCreatePass?Br(r,o,1,t,null):r.data[o],s=n[o]=function(e,t){return ve(e)?e.createText(t):e.createTextNode(t)}(n[G],t);Is(r,n,s,i),Zt(i,!1)}function P(e){return oe("",e,""),P}function oe(e,t,n){const r=b(),o=qr(r,e,t,n);return o!==j&&vn(r,Ze(),o),oe}function Ln(e,t,n){!function(e,t,n,r){const o=J(),i=_n(2);o.firstUpdatePass&&Bg(o,null,i,r);const s=b();if(n!==j&&je(s,i,n)){const a=o.data[Ze()];if(Ug(a,r)&&!Lg(o,i)){let l=r?a.classesWithoutHost:a.stylesWithoutHost;null!==l&&(n=Qa(l,n||"")),Nc(o,a,s,n,r)}else!function(e,t,n,r,o,i,s,a){o===j&&(o=ie);let l=0,c=0,u=0((A=A||{})[A.LocaleId=0]="LocaleId",A[A.DayPeriodsFormat=1]="DayPeriodsFormat",A[A.DayPeriodsStandalone=2]="DayPeriodsStandalone",A[A.DaysFormat=3]="DaysFormat",A[A.DaysStandalone=4]="DaysStandalone",A[A.MonthsFormat=5]="MonthsFormat",A[A.MonthsStandalone=6]="MonthsStandalone",A[A.Eras=7]="Eras",A[A.FirstDayOfWeek=8]="FirstDayOfWeek",A[A.WeekendRange=9]="WeekendRange",A[A.DateFormat=10]="DateFormat",A[A.TimeFormat=11]="TimeFormat",A[A.DateTimeFormat=12]="DateTimeFormat",A[A.NumberSymbols=13]="NumberSymbols",A[A.NumberFormats=14]="NumberFormats",A[A.CurrencyCode=15]="CurrencyCode",A[A.CurrencySymbol=16]="CurrencySymbol",A[A.CurrencyName=17]="CurrencyName",A[A.Currencies=18]="Currencies",A[A.Directionality=19]="Directionality",A[A.PluralCase=20]="PluralCase",A[A.ExtraData=21]="ExtraData",A))();const Bs="en-US";let dm=Bs;function Vc(e){ut(e,"Expected localeId to be defined"),"string"==typeof e&&(dm=e.toLowerCase().replace(/_/g,"-"))}function Bc(e,t,n,r,o){if(e=N(e),Array.isArray(e))for(let i=0;i>20;if(Gr(e)||!e.multi){const h=new Fo(l,o,I),p=jc(a,t,o?u:u+f,d);-1===p?(fs(Po(c,s),i,a),Hc(i,e,t.length),t.push(a),c.directiveStart++,c.directiveEnd++,o&&(c.providerIndexes+=1048576),n.push(h),s.push(h)):(n[p]=h,s[p]=h)}else{const h=jc(a,t,u+f,d),p=jc(a,t,u,u+f),_=h>=0&&n[h],m=p>=0&&n[p];if(o&&!m||!o&&!_){fs(Po(c,s),i,a);const E=function(e,t,n,r,o){const i=new Fo(e,n,I);return i.multi=[],i.index=t,i.componentProviders=0,Pm(i,o,r&&!n),i}(o?y1:_1,n.length,o,r,l);!o&&m&&(n[p].providerFactory=E),Hc(i,e,t.length,0),t.push(a),c.directiveStart++,c.directiveEnd++,o&&(c.providerIndexes+=1048576),n.push(E),s.push(E)}else Hc(i,e,h>-1?h:p,Pm(n[o?p:h],l,!o&&r));!o&&r&&m&&n[p].componentProviders++}}}function Hc(e,t,n,r){const o=Gr(t);if(o||function(e){return!!e.useClass}(t)){const s=(t.useClass||t).prototype.ngOnDestroy;if(s){const a=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){const l=a.indexOf(n);-1===l?a.push(n,[r,s]):a[l+1].push(r,s)}else a.push(n,s)}}}function Pm(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function jc(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>function(e,t,n){const r=J();if(r.firstCreatePass){const o=Vt(e);Bc(n,r.data,r.blueprint,o,!0),Bc(t,r.data,r.blueprint,o,!1)}}(r,o?o(e):e,t)}}class Vm{}const Lm="ngComponent";class D1{resolveComponentFactory(t){throw function(e){const t=Error(`No component factory found for ${W(e)}. Did you add it to @NgModule.entryComponents?`);return t[Lm]=e,t}(t)}}let io=(()=>{class e{}return e.NULL=new D1,e})();function Gs(...e){}function so(e,t){return new $e(bt(e,t))}const w1=function(){return so(xe(),b())};let $e=(()=>{class e{constructor(n){this.nativeElement=n}}return e.__NG_ELEMENT_ID__=w1,e})();class zs{}let cr=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>M1(),e})();const M1=function(){const e=b(),n=ht(xe().index,e);return function(e){return e[G]}(Yt(n)?n:e)};let Gc=(()=>{class e{}return e.\u0275prov=te({token:e,providedIn:"root",factory:()=>null}),e})();class Ws{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const Hm=new Ws("12.2.6");class jm{constructor(){}supports(t){return ni(t)}create(t){return new x1(t)}}const S1=(e,t)=>t;class x1{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||S1}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){const s=!r||n&&n.currentIndex{s=this._trackByFn(o,a),null!==n&&Object.is(n.trackById,s)?(r&&(n=this._verifyReinsertion(n,a,s,o)),Object.is(n.item,a)||this._addIdentityChange(n,a)):(n=this._mismatch(n,a,s,o),r=!0),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return null===t?i=this._itTail:(i=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(r,o))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new N1(n,r),i,o),t}_verifyReinsertion(t,n,r,o){let i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null);return null!==i?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const o=t._prevRemoved,i=t._nextRemoved;return null===o?this._removalsHead=i:o._nextRemoved=i,null===i?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){const o=null===n?this._itHead:n._next;return t._next=o,t._prev=n,null===o?this._itTail=t:o._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new $m),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,r=t._next;return null===n?this._itHead=r:n._next=r,null===r?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new $m),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class N1{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class R1{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;null!==r;r=r._nextDup)if((null===n||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){const n=t._prevDup,r=t._nextDup;return null===n?this._head=r:n._nextDup=r,null===r?this._tail=n:r._prevDup=n,null===this._head}}class $m{constructor(){this.map=new Map}put(t){const n=t.trackById;let r=this.map.get(n);r||(r=new R1,this.map.set(n,r)),r.add(t)}get(t,n){const o=this.map.get(t);return o?o.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function Um(e,t,n){const r=e.previousIndex;if(null===r)return r;let o=0;return n&&r{if(n&&n.key===o)this._maybeAddToChanges(n,r),this._appendAfter=n,n=n._next;else{const i=this._getOrCreateRecordForKey(o,r);n=this._insertBeforeOrAppend(n,i)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let r=n;null!==r;r=r._nextRemoved)r===this._mapHead&&(this._mapHead=null),this._records.delete(r.key),r._nextRemoved=r._next,r.previousValue=r.currentValue,r.currentValue=null,r._prev=null,r._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const r=t._prev;return n._next=t,n._prev=r,t._prev=n,r&&(r._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const o=this._records.get(t);this._maybeAddToChanges(o,n);const i=o._prev,s=o._next;return i&&(i._next=s),s&&(s._prev=i),o._next=null,o._prev=null,o}const r=new O1(t);return this._records.set(t,r),r.currentValue=n,this._addToAdditions(r),r}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(r=>n(t[r],r))}}class O1{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function zm(){return new ui([new jm])}let ui=(()=>{class e{constructor(n){this.factories=n}static create(n,r){if(null!=r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||zm()),deps:[[e,new rr,new en]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(null!=r)return r;throw new Error(`Cannot find a differ supporting object '${n}' of type '${function(e){return e.name||typeof e}(n)}'`)}}return e.\u0275prov=te({token:e,providedIn:"root",factory:zm}),e})();function Wm(){return new ao([new Gm])}let ao=(()=>{class e{constructor(n){this.factories=n}static create(n,r){if(r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Wm()),deps:[[e,new rr,new en]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(r)return r;throw new Error(`Cannot find a differ supporting object '${n}'`)}}return e.\u0275prov=te({token:e,providedIn:"root",factory:Wm}),e})();function qs(e,t,n,r,o=!1){for(;null!==n;){const i=t[n.index];if(null!==i&&r.push(Me(i)),Pt(i))for(let a=10;a-1&&(ql(t,r),tr(n,r))}this._attachedToViewContainer=!1}Oh(this._lView[1],this._lView)}onDestroy(t){!function(e,t,n,r){const o=wp(t);null===n?o.push(r):(o.push(n),e.firstCreatePass&&Ip(e).push(r,o.length-1))}(this._lView[1],this._lView,null,t)}markForCheck(){pc(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-129}reattach(){this._lView[2]|=128}detectChanges(){mc(this._lView[1],this._lView,this.context)}checkNoChanges(){!function(e,t,n){ns(!0);try{mc(e,t,n)}finally{ns(!1)}}(this._lView[1],this._lView,this.context)}attachToViewContainerRef(){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function(e,t){Yo(e,t,t[G],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}}class V1 extends di{constructor(t){super(t),this._view=t}detectChanges(){Ep(this._view)}checkNoChanges(){!function(e){ns(!0);try{Ep(e)}finally{ns(!1)}}(this._view)}get context(){return null}}const $1=[new Gm],G1=new ui([new jm]),z1=new ao($1),q1=function(){return function(e,t){return 4&e.type?new K1(t,e,so(e,t)):null}(xe(),b())};let bn=(()=>{class e{}return e.__NG_ELEMENT_ID__=q1,e})();const Q1=bn,K1=class extends Q1{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}createEmbeddedView(t){const n=this._declarationTContainer.tViews,r=Zo(this._declarationLView,n,t,16,null,n.declTNode,null,null,null,null);r[17]=this._declarationLView[this._declarationTContainer.index];const i=this._declarationLView[19];return null!==i&&(r[19]=i.createEmbeddedView(n)),Jo(n,r,t),new di(r)}};class ur{}const X1=function(){return function(e,t){let n;const r=t[e.index];if(Pt(r))n=r;else{let o;if(8&e.type)o=Me(r);else{const i=t[G];o=i.createComment("");const s=bt(e,t);sr(i,ws(i,s),o,function(e,t){return ve(e)?e.nextSibling(t):t.nextSibling}(i,s),!1)}t[e.index]=n=bp(r,t,o,e),Ns(t,n)}return new qm(n,e,t)}(xe(),b())};let dn=(()=>{class e{}return e.__NG_ELEMENT_ID__=X1,e})();const tM=dn,qm=class extends tM{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return so(this._hostTNode,this._hostLView)}get injector(){return new Tr(this._hostTNode,this._hostLView)}get parentInjector(){const t=ds(this._hostTNode,this._hostLView);if(Lf(t)){const n=Mr(t,this._hostLView),r=Ir(t);return new Tr(n[1].data[r+8],n)}return new Tr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=Qm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-10}createEmbeddedView(t,n,r){const o=t.createEmbeddedView(n||{});return this.insert(o,r),o}createComponent(t,n,r,o,i){const s=r||this.parentInjector;if(!i&&null==t.ngModule&&s){const l=s.get(ur,null);l&&(i=l)}const a=t.create(s,o,void 0,i);return this.insert(a.hostView,n),a}insert(t,n){const r=t._lView,o=r[1];if(function(e){return Pt(e[3])}(r)){const u=this.indexOf(t);if(-1!==u)this.detach(u);else{const d=r[3],f=new qm(d,d[6],d[3]);f.detach(f.indexOf(t))}}const i=this._adjustIndex(n),s=this._lContainer;!function(e,t,n,r){const o=10+r,i=n.length;r>0&&(n[o-1][4]=t),rMh});class __ extends Vm{constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=function(e){return e.map(HE).join(",")}(t.selectors),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!n}get inputs(){return m_(this.componentDef.inputs)}get outputs(){return m_(this.componentDef.outputs)}create(t,n,r,o){const i=(o=o||this.ngModule)?function(e,t){return{get:(n,r,o)=>{const i=e.get(n,fo,o);return i!==fo||r===fo?i:t.get(n,r,o)}}}(t,o.injector):t,s=i.get(zs,Df),a=i.get(Gc,null),l=s.createRenderer(null,this.componentDef),c=this.componentDef.selectors[0][0]||"div",u=r?function(e,t,n){if(ve(e))return e.selectRootElement(t,n===Se.ShadowDom);let r="string"==typeof t?e.querySelector(t):t;return r.textContent="",r}(l,r,this.componentDef.encapsulation):Wl(s.createRenderer(null,this.componentDef),c,function(e){const t=e.toLowerCase();return"svg"===t?Cf:"math"===t?"http://www.w3.org/1998/MathML/":null}(c)),d=this.componentDef.onPush?576:528,f=function(e,t){return{components:[],scheduler:e||Mh,clean:ww,playerHandler:t||null,flags:0}}(),h=xs(0,null,null,1,0,null,null,null,null,null),p=Zo(null,h,f,d,null,null,s,l,a,i);let _,m;rs(p);try{const E=function(e,t,n,r,o,i){const s=n[1];n[20]=e;const l=Br(s,20,2,"#host",null),c=l.mergedAttrs=t.hostAttrs;null!==c&&(Rs(l,c,!0),null!==e&&(ls(o,e,c),null!==l.classes&&Jl(o,e,l.classes),null!==l.styles&&Wh(o,e,l.styles)));const u=r.createRenderer(e,t),d=Zo(n,dp(t),null,t.onPush?64:16,n[20],l,r,u,i||null,null);return s.firstCreatePass&&(fs(Po(l,n),s,t.type),Cp(s,l),vp(l,n.length,1)),Ns(n,d),n[20]=d}(u,this.componentDef,p,s,l);if(u)if(r)ls(l,u,["ng-version",Hm.full]);else{const{attrs:v,classes:x}=function(e){const t=[],n=[];let r=1,o=2;for(;r0&&Jl(l,u,x.join(" "))}if(m=al(h,20),void 0!==n){const v=m.projection=[];for(let x=0;xl(s,t)),t.contentQueries){const l=xe();t.contentQueries(1,s,l.directiveStart)}const a=xe();return!i.firstCreatePass||null===t.hostBindings&&null===t.hostAttrs||(Fn(a.index),_p(n[1],a,0,a.directiveStart,a.directiveEnd,t),yp(t,s)),s}(E,this.componentDef,p,f,[Yw]),Jo(h,p,null)}finally{os()}return new eT(this.componentType,_,so(m,p),p,m)}}class eT extends class{}{constructor(t,n,r,o,i){super(),this.location=r,this._rootLView=o,this._tNode=i,this.instance=n,this.hostView=this.changeDetectorRef=new V1(o),this.componentType=t}get injector(){return new Tr(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}}const ho=new Map;class rT extends ur{constructor(t,n){super(),this._parent=n,this._bootstrapComponents=[],this.injector=this,this.destroyCbs=[],this.componentFactoryResolver=new g_(this);const r=Ct(t),o=function(e){return e[iD]||null}(t);o&&Vc(o),this._bootstrapComponents=rn(r.bootstrap),this._r3Injector=Np(t,n,[{provide:ur,useValue:this},{provide:io,useValue:this.componentFactoryResolver}],W(t)),this._r3Injector._resolveInjectorDefTypes(),this.instance=this.get(t)}get(t,n=pe.THROW_IF_NOT_FOUND,r=O.Default){return t===pe||t===ur||t===$r?this:this._r3Injector.get(t,n,r)}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class ou extends class{}{constructor(t){super(),this.moduleType=t,null!==Ct(t)&&function(e){const t=new Set;!function n(r){const o=Ct(r,!0),i=o.id;null!==i&&(function(e,t,n){if(t&&t!==n)throw new Error(`Duplicate module registered for ${e} - ${W(t)} vs ${W(t.name)}`)}(i,ho.get(i),r),ho.set(i,r));const s=rn(o.imports);for(const a of s)t.has(a)||(t.add(a),n(a))}(e)}(t)}create(t){return new rT(this.moduleType,t)}}function iu(e,t,n,r){return function(e,t,n,r,o,i){const s=t+n;return je(e,s,o)?sn(e,s+1,i?r.call(i,o):r(o)):Ci(e,s+1)}(b(),Ye(),e,t,n,r)}function su(e,t,n,r,o){return function(e,t,n,r,o,i,s){const a=t+n;return ar(e,a,o,i)?sn(e,a+2,s?r.call(s,o,i):r(o,i)):Ci(e,a+2)}(b(),Ye(),e,t,n,r,o)}function st(e,t,n,r,o,i){return b_(b(),Ye(),e,t,n,r,o,i)}function Ci(e,t){const n=e[t];return n===j?void 0:n}function b_(e,t,n,r,o,i,s,a){const l=t+n;return function(e,t,n,r,o){const i=ar(e,t,n,r);return je(e,t+2,o)||i}(e,l,o,i,s)?sn(e,l+3,a?r.call(a,o,i,s):r(o,i,s)):Ci(e,l+3)}function M_(e,t,n,r,o){const i=e+20,s=b(),a=function(e,t){return e[t]}(s,i);return function(e,t){Ht.isWrapped(t)&&(t=Ht.unwrap(t),e[B.lFrame.bindingIndex]=j);return t}(s,function(e,t){return e[1].data[t].pure}(s,i)?b_(s,Ye(),t,a.transform,n,r,o,a):a.transform(n,r,o))}function au(e){return t=>{setTimeout(e,void 0,t)}}const ze=class extends Ga{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,n,r){var o,i,s;let a=t,l=n||(()=>null),c=r;if(t&&"object"==typeof t){const d=t;a=null===(o=d.next)||void 0===o?void 0:o.bind(d),l=null===(i=d.error)||void 0===i?void 0:i.bind(d),c=null===(s=d.complete)||void 0===s?void 0:s.bind(d)}this.__isAsync&&(l=au(l),a&&(a=au(a)),c&&(c=au(c)));const u=super.subscribe({next:a,error:l,complete:c});return t instanceof Ee&&t.add(u),u}};Symbol;const na=new X("Application Initializer");let go=(()=>{class e{constructor(n){this.appInits=n,this.resolve=Gs,this.reject=Gs,this.initialized=!1,this.done=!1,this.donePromise=new Promise((r,o)=>{this.resolve=r,this.reject=o})}runInitializers(){if(this.initialized)return;const n=[],r=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let o=0;o{i.subscribe({complete:a,error:l})});n.push(s)}}Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),0===n.length&&r(),this.initialized=!0}}return e.\u0275fac=function(n){return new(n||e)(Y(na,8))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const Ei=new X("AppId"),rA={provide:Ei,useFactory:function(){return`${yu()}${yu()}${yu()}`},deps:[]};function yu(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const K_=new X("Platform Initializer"),Cu=new X("Platform ID"),oA=new X("appBootstrapListener");let vu=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const Hn=new X("LocaleId"),Y_=new X("DefaultCurrencyCode");class sA{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}const Du=function(e){return new ou(e)},aA=Du,lA=function(e){return Promise.resolve(Du(e))},Z_=function(e){const t=Du(e),r=rn(Ct(e).declarations).reduce((o,i)=>{const s=Ke(i);return s&&o.push(new __(s)),o},[]);return new sA(t,r)},cA=Z_,uA=function(e){return Promise.resolve(Z_(e))};let oa=(()=>{class e{constructor(){this.compileModuleSync=aA,this.compileModuleAsync=lA,this.compileModuleAndAllComponentsSync=cA,this.compileModuleAndAllComponentsAsync=uA}clearCache(){}clearCacheFor(n){}getModuleId(n){}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const hA=(()=>Promise.resolve(0))();function bu(e){"undefined"==typeof Zone?hA.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class Le{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ze(!1),this.onMicrotaskEmpty=new ze(!1),this.onStable=new ze(!1),this.onError=new ze(!1),"undefined"==typeof Zone)throw new Error("In this configuration Angular requires Zone.js");Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=function(){let e=ne.requestAnimationFrame,t=ne.cancelAnimationFrame;if("undefined"!=typeof Zone&&e&&t){const n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);const r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function(e){const t=()=>{!function(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(ne,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,wu(e),e.isCheckStableRunning=!0,Eu(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),wu(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,o,i,s,a)=>{try{return J_(e),n.invokeTask(o,i,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||e.shouldCoalesceRunChangeDetection)&&t(),X_(e)}},onInvoke:(n,r,o,i,s,a,l)=>{try{return J_(e),n.invoke(o,i,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&t(),X_(e)}},onHasTask:(n,r,o,i)=>{n.hasTask(o,i),r===o&&("microTask"==i.change?(e._hasPendingMicrotasks=i.microTask,wu(e),Eu(e)):"macroTask"==i.change&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(n,r,o,i)=>(n.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}(o)}static isInAngularZone(){return!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Le.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")}static assertNotInAngularZone(){if(Le.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,gA,Gs,Gs);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const gA={};function Eu(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function wu(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function J_(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function X_(e){e._nesting--,Eu(e)}class yA{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ze,this.onMicrotaskEmpty=new ze,this.onStable=new ze,this.onError=new ze}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}}let Iu=(()=>{class e{constructor(n){this._ngZone=n,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone="undefined"==typeof Zone?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Le.assertNotInAngularZone(),bu(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())bu(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb(this._didWork)}this._didWork=!1});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==i),n(this._didWork,this.getPendingTasks())},r)),this._callbacks.push({doneCb:n,timeoutId:i,updateCb:o})}whenStable(n,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,o),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}findProviders(n,r,o){return[]}}return e.\u0275fac=function(n){return new(n||e)(Y(Le))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})(),ey=(()=>{class e{constructor(){this._applications=new Map,Mu.addToWindow(this)}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return Mu.findTestabilityInTree(this,n,r)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();class CA{addToWindow(t){}findTestabilityInTree(t,n,r){return null}}let Mu=new CA,ny=!1;let zt;const oy=new X("AllowMultipleToken");function iy(e,t,n=[]){const r=`Platform: ${t}`,o=new X(r);return(i=[])=>{let s=sy();if(!s||s.injector.get(oy,!1))if(e)e(n.concat(i).concat({provide:o,useValue:!0}));else{const a=n.concat(i).concat({provide:o,useValue:!0},{provide:Xo,useValue:"platform"});!function(e){if(zt&&!zt.destroyed&&!zt.injector.get(oy,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");zt=e.get(ay);const t=e.get(K_,null);t&&t.forEach(n=>n())}(pe.create({providers:a,name:r}))}return function(e){const t=sy();if(!t)throw new Error("No platform exists!");if(!t.injector.get(e,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return t}(o)}}function sy(){return zt&&!zt.destroyed?zt:null}let ay=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,r){const a=function(e,t){let n;return n="noop"===e?new yA:("zone.js"===e?void 0:e)||new Le({enableLongStackTrace:(ny=!0,!0),shouldCoalesceEventChangeDetection:!!(null==t?void 0:t.ngZoneEventCoalescing),shouldCoalesceRunChangeDetection:!!(null==t?void 0:t.ngZoneRunCoalescing)}),n}(r?r.ngZone:void 0,{ngZoneEventCoalescing:r&&r.ngZoneEventCoalescing||!1,ngZoneRunCoalescing:r&&r.ngZoneRunCoalescing||!1}),l=[{provide:Le,useValue:a}];return a.run(()=>{const c=pe.create({providers:l,parent:this.injector,name:n.moduleType.name}),u=n.create(c),d=u.injector.get(ir,null);if(!d)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return a.runOutsideAngular(()=>{const f=a.onError.subscribe({next:h=>{d.handleError(h)}});u.onDestroy(()=>{Tu(this._modules,u),f.unsubscribe()})}),function(e,t,n){try{const r=n();return Vs(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(d,a,()=>{const f=u.injector.get(go);return f.runInitializers(),f.donePromise.then(()=>(Vc(u.injector.get(Hn,Bs)||Bs),this._moduleDoBootstrap(u),u))})})}bootstrapModule(n,r=[]){const o=ly({},r);return function(e,t,n){const r=new ou(n);return Promise.resolve(r)}(0,0,n).then(i=>this.bootstrapModuleFactory(i,o))}_moduleDoBootstrap(n){const r=n.injector.get(wi);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(o=>r.bootstrap(o));else{if(!n.instance.ngDoBootstrap)throw new Error(`The module ${W(n.instance.constructor)} was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.`);n.instance.ngDoBootstrap(r)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(n=>n.destroy()),this._destroyListeners.forEach(n=>n()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(n){return new(n||e)(Y(pe))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();function ly(e,t){return Array.isArray(t)?t.reduce(ly,e):Object.assign(Object.assign({},e),t)}let wi=(()=>{class e{constructor(n,r,o,i,s){this._zone=n,this._injector=r,this._exceptionHandler=o,this._componentFactoryResolver=i,this._initStatus=s,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const a=new qe(c=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{c.next(this._stable),c.complete()})}),l=new qe(c=>{let u;this._zone.runOutsideAngular(()=>{u=this._zone.onStable.subscribe(()=>{Le.assertNotInAngularZone(),bu(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,c.next(!0))})})});const d=this._zone.onUnstable.subscribe(()=>{Le.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{c.next(!1)}))});return()=>{u.unsubscribe(),d.unsubscribe()}});this.isStable=function(...e){let t=Number.POSITIVE_INFINITY,n=null,r=e[e.length-1];return function(e){return e&&"function"==typeof e.schedule}(r)?(n=e.pop(),e.length>1&&"number"==typeof e[e.length-1]&&(t=e.pop())):"number"==typeof r&&(t=e.pop()),null===n&&1===e.length&&e[0]instanceof qe?e[0]:Fv(t)(function(e,t){return t?ef(e,t):new qe(Yd(e))}(e,n))}(a,l.pipe(e=>nf()(function(e,t){return function(r){let o;o="function"==typeof e?e:function(){return e};const i=Object.create(r,Bv);return i.source=r,i.subjectFactory=o,i}}(Gv)(e))))}bootstrap(n,r){if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");let o;o=n instanceof Vm?n:this._componentFactoryResolver.resolveComponentFactory(n),this.componentTypes.push(o.componentType);const i=function(e){return e.isBoundToModule}(o)?void 0:this._injector.get(ur),a=o.create(pe.NULL,[],r||o.selector,i),l=a.location.nativeElement,c=a.injector.get(Iu,null),u=c&&a.injector.get(ey);return c&&u&&u.registerApplication(l,c),a.onDestroy(()=>{this.detachView(a.hostView),Tu(this.components,a),u&&u.unregisterApplication(l)}),this._loadComponent(a),a}tick(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;for(let n of this._views)n.detectChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;Tu(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n),this._injector.get(oA,[]).concat(this._bootstrapListeners).forEach(o=>o(n))}ngOnDestroy(){this._views.slice().forEach(n=>n.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}get viewCount(){return this._views.length}}return e.\u0275fac=function(n){return new(n||e)(Y(Le),Y(pe),Y(ir),Y(io),Y(go))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();function Tu(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const WA=iy(null,"core",[{provide:Cu,useValue:"unknown"},{provide:ay,deps:[pe]},{provide:ey,deps:[]},{provide:vu,deps:[]}]),ZA=[{provide:wi,useClass:wi,deps:[Le,pe,ir,io,go]},{provide:ZM,deps:[Le],useFactory:function(e){let t=[];return e.onStable.subscribe(()=>{for(;t.length;)t.pop()()}),function(n){t.push(n)}}},{provide:go,useClass:go,deps:[[new en,na]]},{provide:oa,useClass:oa,deps:[]},rA,{provide:ui,useFactory:function(){return G1},deps:[]},{provide:ao,useFactory:function(){return z1},deps:[]},{provide:Hn,useFactory:function(e){return Vc(e=e||"undefined"!=typeof $localize&&$localize.locale||Bs),e},deps:[[new Uo(Hn),new en,new rr]]},{provide:Y_,useValue:"USD"}];let XA=(()=>{class e{constructor(n){}}return e.\u0275fac=function(n){return new(n||e)(Y(wi))},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({providers:ZA}),e})(),pa=null;function gr(){return pa}const nt=new X("DocumentToken");var Te=(()=>((Te=Te||{})[Te.Zero=0]="Zero",Te[Te.One=1]="One",Te[Te.Two=2]="Two",Te[Te.Few=3]="Few",Te[Te.Many=4]="Many",Te[Te.Other=5]="Other",Te))();const ax=function(e){return function(e){const t=function(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=um(t);if(n)return n;const r=t.split("-")[0];if(n=um(r),n)return n;if("en"===r)return DI;throw new Error(`Missing locale data for the locale "${e}".`)}(e)[A.PluralCase]};class wa{}let Vx=(()=>{class e extends wa{constructor(n){super(),this.locale=n}getPluralCategory(n,r){switch(ax(r||this.locale)(n)){case Te.Zero:return"zero";case Te.One:return"one";case Te.Two:return"two";case Te.Few:return"few";case Te.Many:return"many";default:return"other"}}}return e.\u0275fac=function(n){return new(n||e)(Y(Hn))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})(),Ni=(()=>{class e{constructor(n,r,o,i){this._iterableDiffers=n,this._keyValueDiffers=r,this._ngEl=o,this._renderer=i,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(n){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof n?n.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(n){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof n?n.split(/\s+/):n,this._rawClass&&(ni(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const n=this._iterableDiffer.diff(this._rawClass);n&&this._applyIterableChanges(n)}else if(this._keyValueDiffer){const n=this._keyValueDiffer.diff(this._rawClass);n&&this._applyKeyValueChanges(n)}}_applyKeyValueChanges(n){n.forEachAddedItem(r=>this._toggleClass(r.key,r.currentValue)),n.forEachChangedItem(r=>this._toggleClass(r.key,r.currentValue)),n.forEachRemovedItem(r=>{r.previousValue&&this._toggleClass(r.key,!1)})}_applyIterableChanges(n){n.forEachAddedItem(r=>{if("string"!=typeof r.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${W(r.item)}`);this._toggleClass(r.item,!0)}),n.forEachRemovedItem(r=>this._toggleClass(r.item,!1))}_applyClasses(n){n&&(Array.isArray(n)||n instanceof Set?n.forEach(r=>this._toggleClass(r,!0)):Object.keys(n).forEach(r=>this._toggleClass(r,!!n[r])))}_removeClasses(n){n&&(Array.isArray(n)||n instanceof Set?n.forEach(r=>this._toggleClass(r,!1)):Object.keys(n).forEach(r=>this._toggleClass(r,!1)))}_toggleClass(n,r){(n=n.trim())&&n.split(/\s+/g).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}}return e.\u0275fac=function(n){return new(n||e)(I(ui),I(ao),I($e),I(cr))},e.\u0275dir=L({type:e,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),e})();class Bx{constructor(t,n,r,o){this.$implicit=t,this.ngForOf=n,this.index=r,this.count=o}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let Yu=(()=>{class e{constructor(n,r,o){this._viewContainer=n,this._template=r,this._differs=o,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForOf(n){this._ngForOf=n,this._ngForOfDirty=!0}set ngForTrackBy(n){this._trackByFn=n}get ngForTrackBy(){return this._trackByFn}set ngForTemplate(n){n&&(this._template=n)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const n=this._ngForOf;if(!this._differ&&n)try{this._differ=this._differs.find(n).create(this.ngForTrackBy)}catch(r){throw new Error(`Cannot find a differ supporting object '${n}' of type '${function(e){return e.name||typeof e}(n)}'. NgFor only supports binding to Iterables such as Arrays.`)}}if(this._differ){const n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}}_applyChanges(n){const r=[];n.forEachOperation((o,i,s)=>{if(null==o.previousIndex){const a=this._viewContainer.createEmbeddedView(this._template,new Bx(null,this._ngForOf,-1,-1),null===s?void 0:s),l=new Wy(o,a);r.push(l)}else if(null==s)this._viewContainer.remove(null===i?void 0:i);else if(null!==i){const a=this._viewContainer.get(i);this._viewContainer.move(a,s);const l=new Wy(o,a);r.push(l)}});for(let o=0;o{this._viewContainer.get(o.currentIndex).context.$implicit=o.item})}_perViewChange(n,r){n.context.$implicit=r.item}static ngTemplateContextGuard(n,r){return!0}}return e.\u0275fac=function(n){return new(n||e)(I(dn),I(bn),I(ui))},e.\u0275dir=L({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"}}),e})();class Wy{constructor(t,n){this.record=t,this.view=n}}let yo=(()=>{class e{constructor(n,r){this._viewContainer=n,this._context=new jx,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=r}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){qy("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){qy("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,r){return!0}}return e.\u0275fac=function(n){return new(n||e)(I(dn),I(bn))},e.\u0275dir=L({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"}}),e})();class jx{constructor(){this.$implicit=null,this.ngIf=null}}function qy(e,t){if(t&&!t.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${W(t)}'.`)}let Yy=(()=>{class e{transform(n,r,o){if(null==n)return null;if(!this.supports(n))throw function(e,t){return Error(`InvalidPipeArgument: '${t}' for pipe '${W(e)}'`)}(e,n);return n.slice(r,o)}supports(n){return"string"==typeof n||Array.isArray(n)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275pipe=ot({name:"slice",type:e,pure:!1}),e})(),fN=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({providers:[{provide:wa,useClass:Vx}]}),e})();class td extends class extends class{}{constructor(){super(...arguments),this.supportsDOMEvents=!0}}{static makeCurrent(){!function(e){pa||(pa=e)}(new td)}onAndCancel(t,n,r){return t.addEventListener(n,r,!1),()=>{t.removeEventListener(n,r,!1)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.parentNode&&t.parentNode.removeChild(t)}createElement(t,n){return(n=n||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return"window"===n?window:"document"===n?t:"body"===n?t.body:null}getBaseHref(t){const n=(Ri=Ri||document.querySelector("base"),Ri?Ri.getAttribute("href"):null);return null==n?null:function(e){Ia=Ia||document.createElement("a"),Ia.setAttribute("href",e);const t=Ia.pathname;return"/"===t.charAt(0)?t:`/${t}`}(n)}resetBaseElement(){Ri=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return function(e,t){t=encodeURIComponent(t);for(const n of e.split(";")){const r=n.indexOf("="),[o,i]=-1==r?[n,""]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}(document.cookie,t)}}let Ia,Ri=null;const Xy=new X("TRANSITION_ID"),bN=[{provide:na,useFactory:function(e,t,n){return()=>{n.get(go).donePromise.then(()=>{const r=gr(),o=t.querySelectorAll(`style[ng-transition="${e}"]`);for(let i=0;i{const i=t.findTestabilityInTree(r,o);if(null==i)throw new Error("Could not find testability for element.");return i},ne.getAllAngularTestabilities=()=>t.getAllTestabilities(),ne.getAllAngularRootElements=()=>t.getAllRootElements(),ne.frameworkStabilizers||(ne.frameworkStabilizers=[]),ne.frameworkStabilizers.push(r=>{const o=ne.getAllAngularTestabilities();let i=o.length,s=!1;const a=function(l){s=s||l,i--,0==i&&r(s)};o.forEach(function(l){l.whenStable(a)})})}findTestabilityInTree(t,n,r){if(null==n)return null;const o=t.getTestability(n);return null!=o?o:r?gr().isShadowRoot(n)?this.findTestabilityInTree(t,n.host,!0):this.findTestabilityInTree(t,n.parentElement,!0):null}}let EN=(()=>{class e{build(){return new XMLHttpRequest}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const Fi=new X("EventManagerPlugins");let Ta=(()=>{class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(o=>o.manager=this),this._plugins=n.slice().reverse()}addEventListener(n,r,o){return this._findPluginFor(r).addEventListener(n,r,o)}addGlobalEventListener(n,r,o){return this._findPluginFor(r).addGlobalEventListener(n,r,o)}getZone(){return this._zone}_findPluginFor(n){const r=this._eventNameToPlugin.get(n);if(r)return r;const o=this._plugins;for(let i=0;i{class e{constructor(){this._stylesSet=new Set}addStyles(n){const r=new Set;n.forEach(o=>{this._stylesSet.has(o)||(this._stylesSet.add(o),r.add(o))}),this.onStylesAdded(r)}onStylesAdded(n){}getAllStyles(){return Array.from(this._stylesSet)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})(),Oi=(()=>{class e extends tC{constructor(n){super(),this._doc=n,this._hostNodes=new Map,this._hostNodes.set(n.head,[])}_addStylesToHost(n,r,o){n.forEach(i=>{const s=this._doc.createElement("style");s.textContent=i,o.push(r.appendChild(s))})}addHost(n){const r=[];this._addStylesToHost(this._stylesSet,n,r),this._hostNodes.set(n,r)}removeHost(n){const r=this._hostNodes.get(n);r&&r.forEach(nC),this._hostNodes.delete(n)}onStylesAdded(n){this._hostNodes.forEach((r,o)=>{this._addStylesToHost(n,o,r)})}ngOnDestroy(){this._hostNodes.forEach(n=>n.forEach(nC))}}return e.\u0275fac=function(n){return new(n||e)(Y(nt))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();function nC(e){gr().remove(e)}const od={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},id=/%COMP%/g;function Aa(e,t,n){for(let r=0;r{if("__ngUnwrap__"===t)return e;!1===e(t)&&(t.preventDefault(),t.returnValue=!1)}}let sd=(()=>{class e{constructor(n,r,o){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.rendererByCompId=new Map,this.defaultRenderer=new ad(n)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;switch(r.encapsulation){case Se.Emulated:{let o=this.rendererByCompId.get(r.id);return o||(o=new LN(this.eventManager,this.sharedStylesHost,r,this.appId),this.rendererByCompId.set(r.id,o)),o.applyToHost(n),o}case 1:case Se.ShadowDom:return new BN(this.eventManager,this.sharedStylesHost,n,r);default:if(!this.rendererByCompId.has(r.id)){const o=Aa(r.id,r.styles,[]);this.sharedStylesHost.addStyles(o),this.rendererByCompId.set(r.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return e.\u0275fac=function(n){return new(n||e)(Y(Ta),Y(Oi),Y(Ei))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();class ad{constructor(t){this.eventManager=t,this.data=Object.create(null)}destroy(){}createElement(t,n){return n?document.createElementNS(od[n]||n,t):document.createElement(t)}createComment(t){return document.createComment(t)}createText(t){return document.createTextNode(t)}appendChild(t,n){t.appendChild(n)}insertBefore(t,n,r){t&&t.insertBefore(n,r)}removeChild(t,n){t&&t.removeChild(n)}selectRootElement(t,n){let r="string"==typeof t?document.querySelector(t):t;if(!r)throw new Error(`The selector "${t}" did not match any elements`);return n||(r.textContent=""),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+":"+n;const i=od[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){const o=od[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){o&(mt.DashCase|mt.Important)?t.style.setProperty(n,r,o&mt.Important?"important":""):t.style[n]=r}removeStyle(t,n,r){r&mt.DashCase?t.style.removeProperty(n):t.style[n]=""}setProperty(t,n,r){t[n]=r}setValue(t,n){t.nodeValue=n}listen(t,n,r){return"string"==typeof t?this.eventManager.addGlobalEventListener(t,n,iC(r)):this.eventManager.addEventListener(t,n,iC(r))}}class LN extends ad{constructor(t,n,r,o){super(t),this.component=r;const i=Aa(o+"-"+r.id,r.styles,[]);n.addStyles(i),this.contentAttr=function(e){return"_ngcontent-%COMP%".replace(id,e)}(o+"-"+r.id),this.hostAttr=function(e){return"_nghost-%COMP%".replace(id,e)}(o+"-"+r.id)}applyToHost(t){super.setAttribute(t,this.hostAttr,"")}createElement(t,n){const r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,""),r}}class BN extends ad{constructor(t,n,r,o){super(t),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const i=Aa(o.id,o.styles,[]);for(let s=0;s{class e extends rd{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o){return n.addEventListener(r,o,!1),()=>this.removeEventListener(n,r,o)}removeEventListener(n,r,o){return n.removeEventListener(r,o)}}return e.\u0275fac=function(n){return new(n||e)(Y(nt))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const lC=["alt","control","meta","shift"],qN={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},cC={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","\x90":"NumLock"},QN={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let KN=(()=>{class e extends rd{constructor(n){super(n)}supports(n){return null!=e.parseEventName(n)}addEventListener(n,r,o){const i=e.parseEventName(r),s=e.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>gr().onAndCancel(n,i.domEventName,s))}static parseEventName(n){const r=n.toLowerCase().split("."),o=r.shift();if(0===r.length||"keydown"!==o&&"keyup"!==o)return null;const i=e._normalizeKey(r.pop());let s="";if(lC.forEach(l=>{const c=r.indexOf(l);c>-1&&(r.splice(c,1),s+=l+".")}),s+=i,0!=r.length||0===i.length)return null;const a={};return a.domEventName=o,a.fullKey=s,a}static getEventFullKey(n){let r="",o=function(e){let t=e.key;if(null==t){if(t=e.keyIdentifier,null==t)return"Unidentified";t.startsWith("U+")&&(t=String.fromCharCode(parseInt(t.substring(2),16)),3===e.location&&cC.hasOwnProperty(t)&&(t=cC[t]))}return qN[t]||t}(n);return o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),lC.forEach(i=>{i!=o&&QN[i](n)&&(r+=i+".")}),r+=o,r}static eventCallback(n,r,o){return i=>{e.getEventFullKey(i)===n&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){switch(n){case"esc":return"escape";default:return n}}}return e.\u0275fac=function(n){return new(n||e)(Y(nt))},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();const rR=iy(WA,"browser",[{provide:Cu,useValue:"browser"},{provide:K_,useValue:function(){td.makeCurrent(),nd.init()},multi:!0},{provide:nt,useFactory:function(){return function(e){il=e}(document),document},deps:[]}]),oR=[[],{provide:Xo,useValue:"root"},{provide:ir,useFactory:function(){return new ir},deps:[]},{provide:Fi,useClass:HN,multi:!0,deps:[nt,Le,Cu]},{provide:Fi,useClass:KN,multi:!0,deps:[nt]},[],{provide:sd,useClass:sd,deps:[Ta,Oi,Ei]},{provide:zs,useExisting:sd},{provide:tC,useExisting:Oi},{provide:Oi,useClass:Oi,deps:[nt]},{provide:Iu,useClass:Iu,deps:[Le]},{provide:Ta,useClass:Ta,deps:[Fi,Le]},{provide:class{},useClass:EN,deps:[]},[]];let iR=(()=>{class e{constructor(n){if(n)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}static withServerTransition(n){return{ngModule:e,providers:[{provide:Ei,useValue:n.appId},{provide:Xy,useExisting:Ei},bN]}}}return e.\u0275fac=function(n){return new(n||e)(Y(e,12))},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({providers:oR,imports:[fN,XA]}),e})();function Sa(e,t){return new qe(n=>{const r=e.length;if(0===r)return void n.complete();const o=new Array(r);let i=0,s=0;for(let a=0;a{c||(c=!0,s++),o[a]=u},error:u=>n.error(u),complete:()=>{i++,(i===r||!c)&&(s===r&&n.next(t?t.reduce((u,d,f)=>(u[d]=o[f],u),{}):o),n.complete())}}))}})}"undefined"!=typeof window&&window;let dC=(()=>{class e{constructor(n,r){this._renderer=n,this._elementRef=r,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(n,r){this._renderer.setProperty(this._elementRef.nativeElement,n,r)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}}return e.\u0275fac=function(n){return new(n||e)(I(cr),I($e))},e.\u0275dir=L({type:e}),e})(),mr=(()=>{class e extends dC{}return e.\u0275fac=function(){let t;return function(r){return(t||(t=Et(e)))(r||e)}}(),e.\u0275dir=L({type:e,features:[ge]}),e})();const fn=new X("NgValueAccessor"),gR={provide:fn,useExisting:ue(()=>Pi),multi:!0},_R=new X("CompositionEventMode");let Pi=(()=>{class e extends dC{constructor(n,r,o){super(n,r),this._compositionMode=o,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function(){const e=gr()?gr().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}())}writeValue(n){this.setProperty("value",null==n?"":n)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}}return e.\u0275fac=function(n){return new(n||e)(I(cr),I($e),I(_R,8))},e.\u0275dir=L({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(n,r){1&n&&Z("input",function(i){return r._handleInput(i.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(i){return r._compositionEnd(i.target.value)})},features:[_e([gR]),ge]}),e})();const We=new X("NgValidators"),Gn=new X("NgAsyncValidators");function bC(e){return null!=e}function EC(e){const t=Vs(e)?Wa(e):e;return Rc(t),t}function wC(e){let t={};return e.forEach(n=>{t=null!=n?Object.assign(Object.assign({},t),n):t}),0===Object.keys(t).length?null:t}function IC(e,t){return t.map(n=>n(e))}function MC(e){return e.map(t=>function(e){return!e.validate}(t)?t:n=>t.validate(n))}function fd(e){return null!=e?function(e){if(!e)return null;const t=e.filter(bC);return 0==t.length?null:function(n){return wC(IC(n,t))}}(MC(e)):null}function hd(e){return null!=e?function(e){if(!e)return null;const t=e.filter(bC);return 0==t.length?null:function(n){return function(...e){if(1===e.length){const t=e[0];if($a(t))return Sa(t,null);if(Ua(t)&&Object.getPrototypeOf(t)===Object.prototype){const n=Object.keys(t);return Sa(n.map(r=>t[r]),n)}}if("function"==typeof e[e.length-1]){const t=e.pop();return Sa(e=1===e.length&&$a(e[0])?e[0]:e,null).pipe(za(n=>t(...n)))}return Sa(e,null)}(IC(n,t).map(EC)).pipe(za(wC))}}(MC(e)):null}function SC(e,t){return null===e?[t]:Array.isArray(e)?[...e,t]:[e,t]}function pd(e){return e?Array.isArray(e)?e:[e]:[]}function xa(e,t){return Array.isArray(e)?e.includes(t):e===t}function RC(e,t){const n=pd(t);return pd(e).forEach(o=>{xa(n,o)||n.push(o)}),n}function FC(e,t){return pd(t).filter(n=>!xa(e,n))}let OC=(()=>{class e{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=fd(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=hd(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n){this.control&&this.control.reset(n)}hasError(n,r){return!!this.control&&this.control.hasError(n,r)}getError(n,r){return this.control?this.control.getError(n,r):null}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275dir=L({type:e}),e})(),rt=(()=>{class e extends OC{get formDirective(){return null}get path(){return null}}return e.\u0275fac=function(){let t;return function(r){return(t||(t=Et(e)))(r||e)}}(),e.\u0275dir=L({type:e,features:[ge]}),e})();class Wn extends OC{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}let gd=(()=>{class e extends class{constructor(t){this._cd=t}is(t){var n,r,o;return"submitted"===t?!!(null===(n=this._cd)||void 0===n?void 0:n.submitted):!!(null===(o=null===(r=this._cd)||void 0===r?void 0:r.control)||void 0===o?void 0:o[t])}}{constructor(n){super(n)}}return e.\u0275fac=function(n){return new(n||e)(I(Wn,2))},e.\u0275dir=L({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(n,r){2&n&&ks("ng-untouched",r.is("untouched"))("ng-touched",r.is("touched"))("ng-pristine",r.is("pristine"))("ng-dirty",r.is("dirty"))("ng-valid",r.is("valid"))("ng-invalid",r.is("invalid"))("ng-pending",r.is("pending"))},features:[ge]}),e})();function Vi(e,t){(function(e,t){const n=function(e){return e._rawValidators}(e);null!==t.validator?e.setValidators(SC(n,t.validator)):"function"==typeof n&&e.setValidators([n]);const r=function(e){return e._rawAsyncValidators}(e);null!==t.asyncValidator?e.setAsyncValidators(SC(r,t.asyncValidator)):"function"==typeof r&&e.setAsyncValidators([r]);const o=()=>e.updateValueAndValidity();Oa(t._rawValidators,o),Oa(t._rawAsyncValidators,o)})(e,t),t.valueAccessor.writeValue(e.value),function(e,t){t.valueAccessor.registerOnChange(n=>{e._pendingValue=n,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&VC(e,t)})}(e,t),function(e,t){const n=(r,o)=>{t.valueAccessor.writeValue(r),o&&t.viewToModelUpdate(r)};e.registerOnChange(n),t._registerOnDestroy(()=>{e._unregisterOnChange(n)})}(e,t),function(e,t){t.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&VC(e,t),"submit"!==e.updateOn&&e.markAsTouched()})}(e,t),function(e,t){if(t.valueAccessor.setDisabledState){const n=r=>{t.valueAccessor.setDisabledState(r)};e.registerOnDisabledChange(n),t._registerOnDestroy(()=>{e._unregisterOnDisabledChange(n)})}}(e,t)}function Oa(e,t){e.forEach(n=>{n.registerOnValidatorChange&&n.registerOnValidatorChange(t)})}function VC(e,t){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function Va(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const ki="VALID",ka="INVALID",Co="PENDING",Li="DISABLED";function Dd(e){return(Ed(e)?e.validators:e)||null}function BC(e){return Array.isArray(e)?fd(e):e||null}function bd(e,t){return(Ed(t)?t.asyncValidators:e)||null}function HC(e){return Array.isArray(e)?hd(e):e||null}function Ed(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}class wd{constructor(t,n){this._hasOwnPendingAsyncValidator=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._rawValidators=t,this._rawAsyncValidators=n,this._composedValidatorFn=BC(this._rawValidators),this._composedAsyncValidatorFn=HC(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get valid(){return this.status===ki}get invalid(){return this.status===ka}get pending(){return this.status==Co}get disabled(){return this.status===Li}get enabled(){return this.status!==Li}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this._rawValidators=t,this._composedValidatorFn=BC(t)}setAsyncValidators(t){this._rawAsyncValidators=t,this._composedAsyncValidatorFn=HC(t)}addValidators(t){this.setValidators(RC(t,this._rawValidators))}addAsyncValidators(t){this.setAsyncValidators(RC(t,this._rawAsyncValidators))}removeValidators(t){this.setValidators(FC(t,this._rawValidators))}removeAsyncValidators(t){this.setAsyncValidators(FC(t,this._rawAsyncValidators))}hasValidator(t){return xa(this._rawValidators,t)}hasAsyncValidator(t){return xa(this._rawAsyncValidators,t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(t=>t.markAllAsTouched())}markAsUntouched(t={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(n=>{n.markAsUntouched({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}markAsDirty(t={}){this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}markAsPristine(t={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(n=>{n.markAsPristine({onlySelf:!0})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}markAsPending(t={}){this.status=Co,!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}disable(t={}){const n=this._parentMarkedDirty(t.onlySelf);this.status=Li,this.errors=null,this._forEachChild(r=>{r.disable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:n})),this._onDisabledChange.forEach(r=>r(!0))}enable(t={}){const n=this._parentMarkedDirty(t.onlySelf);this.status=ki,this._forEachChild(r=>{r.enable(Object.assign(Object.assign({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:n})),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(t){this._parent=t}updateValueAndValidity(t={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ki||this.status===Co)&&this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(n=>n._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Li:ki}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t){if(this.asyncValidator){this.status=Co,this._hasOwnPendingAsyncValidator=!0;const n=EC(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(r=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(r,{emitEvent:t})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(t,n={}){this.errors=t,this._updateControlsErrors(!1!==n.emitEvent)}get(t){return function(e,t,n){if(null==t||(Array.isArray(t)||(t=t.split(".")),Array.isArray(t)&&0===t.length))return null;let r=e;return t.forEach(o=>{r=r instanceof Id?r.controls.hasOwnProperty(o)?r.controls[o]:null:r instanceof RR&&r.at(o)||null}),r}(this,t)}getError(t,n){const r=n?this.get(n):this;return r&&r.errors?r.errors[t]:null}hasError(t,n){return!!this.getError(t,n)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}_initObservables(){this.valueChanges=new ze,this.statusChanges=new ze}_calculateStatus(){return this._allControlsDisabled()?Li:this.errors?ka:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Co)?Co:this._anyControlsHaveStatus(ka)?ka:ki}_anyControlsHaveStatus(t){return this._anyControls(n=>n.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t={}){this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}_updateTouched(t={}){this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}_isBoxedValue(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){Ed(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){return!t&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}}class La extends wd{constructor(t=null,n,r){super(Dd(n),bd(r,n)),this._onChange=[],this._applyFormState(t),this._setUpdateStrategy(n),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}setValue(t,n={}){this.value=this._pendingValue=t,this._onChange.length&&!1!==n.emitModelToViewChange&&this._onChange.forEach(r=>r(this.value,!1!==n.emitViewToModelChange)),this.updateValueAndValidity(n)}patchValue(t,n={}){this.setValue(t,n)}reset(t=null,n={}){this._applyFormState(t),this.markAsPristine(n),this.markAsUntouched(n),this.setValue(this.value,n),this._pendingChange=!1}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){Va(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){Va(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}class Id extends wd{constructor(t,n,r){super(Dd(n),bd(r,n)),this.controls=t,this._initObservables(),this._setUpdateStrategy(n),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(t,n){return this.controls[t]?this.controls[t]:(this.controls[t]=n,n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange),n)}addControl(t,n,r={}){this.registerControl(t,n),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}removeControl(t,n={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}setControl(t,n,r={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],n&&this.registerControl(t,n),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,n={}){this._checkAllValuesPresent(t),Object.keys(t).forEach(r=>{this._throwIfControlMissing(r),this.controls[r].setValue(t[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)}patchValue(t,n={}){null!=t&&(Object.keys(t).forEach(r=>{this.controls[r]&&this.controls[r].patchValue(t[r],{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n))}reset(t={},n={}){this._forEachChild((r,o)=>{r.reset(t[o],{onlySelf:!0,emitEvent:n.emitEvent})}),this._updatePristine(n),this._updateTouched(n),this.updateValueAndValidity(n)}getRawValue(){return this._reduceChildren({},(t,n,r)=>(t[r]=n instanceof La?n.value:n.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(n,r)=>!!r._syncPendingControls()||n);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!Object.keys(this.controls).length)throw new Error("\n There are no form controls registered with this group yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.controls[t])throw new Error(`Cannot find form control with name: ${t}.`)}_forEachChild(t){Object.keys(this.controls).forEach(n=>{const r=this.controls[n];r&&t(r,n)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(const n of Object.keys(this.controls)){const r=this.controls[n];if(this.contains(n)&&t(r))return!0}return!1}_reduceValue(){return this._reduceChildren({},(t,n,r)=>((n.enabled||this.disabled)&&(t[r]=n.value),t))}_reduceChildren(t,n){let r=t;return this._forEachChild((o,i)=>{r=n(r,o,i)}),r}_allControlsDisabled(){for(const t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_checkAllValuesPresent(t){this._forEachChild((n,r)=>{if(void 0===t[r])throw new Error(`Must supply a value for form control with name: '${r}'.`)})}}class RR extends wd{constructor(t,n,r){super(Dd(n),bd(r,n)),this.controls=t,this._initObservables(),this._setUpdateStrategy(n),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(t){return this.controls[t]}push(t,n={}){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity({emitEvent:n.emitEvent}),this._onCollectionChange()}insert(t,n,r={}){this.controls.splice(t,0,n),this._registerControl(n),this.updateValueAndValidity({emitEvent:r.emitEvent})}removeAt(t,n={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),this.updateValueAndValidity({emitEvent:n.emitEvent})}setControl(t,n,r={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),this.controls.splice(t,1),n&&(this.controls.splice(t,0,n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,n={}){this._checkAllValuesPresent(t),t.forEach((r,o)=>{this._throwIfControlMissing(o),this.at(o).setValue(r,{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n)}patchValue(t,n={}){null!=t&&(t.forEach((r,o)=>{this.at(o)&&this.at(o).patchValue(r,{onlySelf:!0,emitEvent:n.emitEvent})}),this.updateValueAndValidity(n))}reset(t=[],n={}){this._forEachChild((r,o)=>{r.reset(t[o],{onlySelf:!0,emitEvent:n.emitEvent})}),this._updatePristine(n),this._updateTouched(n),this.updateValueAndValidity(n)}getRawValue(){return this.controls.map(t=>t instanceof La?t.value:t.getRawValue())}clear(t={}){this.controls.length<1||(this._forEachChild(n=>n._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:t.emitEvent}))}_syncPendingControls(){let t=this.controls.reduce((n,r)=>!!r._syncPendingControls()||n,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_throwIfControlMissing(t){if(!this.controls.length)throw new Error("\n There are no form controls registered with this array yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.at(t))throw new Error(`Cannot find form control at index ${t}`)}_forEachChild(t){this.controls.forEach((n,r)=>{t(n,r)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(n=>n.enabled&&t(n))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_checkAllValuesPresent(t){this._forEachChild((n,r)=>{if(void 0===t[r])throw new Error(`Must supply a value for form control at index: ${r}.`)})}_allControlsDisabled(){for(const t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}}const PR={provide:Wn,useExisting:ue(()=>Ba)},UC=(()=>Promise.resolve(null))();let Ba=(()=>{class e extends Wn{constructor(n,r,o,i){super(),this.control=new La,this._registered=!1,this.update=new ze,this._parent=n,this._setValidators(r),this._setAsyncValidators(o),this.valueAccessor=function(e,t){if(!t)return null;let n,r,o;return Array.isArray(t),t.forEach(i=>{i.constructor===Pi?n=i:function(e){return Object.getPrototypeOf(e.constructor)===mr}(i)?r=i:o=i}),o||r||n||null}(0,i)}ngOnChanges(n){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in n&&this._updateDisabled(n),function(e,t){if(!e.hasOwnProperty("model"))return!1;const n=e.model;return!!n.isFirstChange()||!Object.is(t,n.currentValue)}(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._parent?function(e,t){return[...t.path,e]}(this.name,this._parent):[this.name]}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Vi(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(n){UC.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1})})}_updateDisabled(n){const r=n.isDisabled.currentValue,o=""===r||r&&"false"!==r;UC.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable()})}}return e.\u0275fac=function(n){return new(n||e)(I(rt,9),I(We,10),I(Gn,10),I(fn,10))},e.\u0275dir=L({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[_e([PR]),ge,ft]}),e})(),zC=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({}),e})();const HR={provide:fn,useExisting:ue(()=>Td),multi:!0};let Td=(()=>{class e extends mr{writeValue(n){this.setProperty("value",parseFloat(n))}registerOnChange(n){this.onChange=r=>{n(""==r?null:parseFloat(r))}}}return e.\u0275fac=function(){let t;return function(r){return(t||(t=Et(e)))(r||e)}}(),e.\u0275dir=L({type:e,selectors:[["input","type","range","formControlName",""],["input","type","range","formControl",""],["input","type","range","ngModel",""]],hostBindings:function(n,r){1&n&&Z("change",function(i){return r.onChange(i.target.value)})("input",function(i){return r.onChange(i.target.value)})("blur",function(){return r.onTouched()})},features:[_e([HR]),ge]}),e})();const WR={provide:fn,useExisting:ue(()=>Hi),multi:!0};function YC(e,t){return null==e?`${t}`:(t&&"object"==typeof t&&(t="Object"),`${e}: ${t}`.slice(0,50))}let Hi=(()=>{class e extends mr{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(n){this._compareWith=n}writeValue(n){this.value=n;const r=this._getOptionId(n);null==r&&this.setProperty("selectedIndex",-1);const o=YC(r,n);this.setProperty("value",o)}registerOnChange(n){this.onChange=r=>{this.value=this._getOptionValue(r),n(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(n){for(const r of Array.from(this._optionMap.keys()))if(this._compareWith(this._optionMap.get(r),n))return r;return null}_getOptionValue(n){const r=function(e){return e.split(":")[0]}(n);return this._optionMap.has(r)?this._optionMap.get(r):n}}return e.\u0275fac=function(){let t;return function(r){return(t||(t=Et(e)))(r||e)}}(),e.\u0275dir=L({type:e,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(n,r){1&n&&Z("change",function(i){return r.onChange(i.target.value)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},features:[_e([WR]),ge]}),e})(),Rd=(()=>{class e{constructor(n,r,o){this._element=n,this._renderer=r,this._select=o,this._select&&(this.id=this._select._registerOption())}set ngValue(n){null!=this._select&&(this._select._optionMap.set(this.id,n),this._setElementValue(YC(this.id,n)),this._select.writeValue(this._select.value))}set value(n){this._setElementValue(n),this._select&&this._select.writeValue(this._select.value)}_setElementValue(n){this._renderer.setProperty(this._element.nativeElement,"value",n)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return e.\u0275fac=function(n){return new(n||e)(I($e),I(cr),I(Hi,9))},e.\u0275dir=L({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),e})();const QR={provide:fn,useExisting:ue(()=>Fd),multi:!0};function ZC(e,t){return null==e?`${t}`:("string"==typeof t&&(t=`'${t}'`),t&&"object"==typeof t&&(t="Object"),`${e}: ${t}`.slice(0,50))}let Fd=(()=>{class e extends mr{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(n){this._compareWith=n}writeValue(n){let r;if(this.value=n,Array.isArray(n)){const o=n.map(i=>this._getOptionId(i));r=(i,s)=>{i._setSelected(o.indexOf(s.toString())>-1)}}else r=(o,i)=>{o._setSelected(!1)};this._optionMap.forEach(r)}registerOnChange(n){this.onChange=r=>{const o=[];if(void 0!==r.selectedOptions){const i=r.selectedOptions;for(let s=0;s{class e{constructor(n,r,o){this._element=n,this._renderer=r,this._select=o,this._select&&(this.id=this._select._registerOption(this))}set ngValue(n){null!=this._select&&(this._value=n,this._setElementValue(ZC(this.id,n)),this._select.writeValue(this._select.value))}set value(n){this._select?(this._value=n,this._setElementValue(ZC(this.id,n)),this._select.writeValue(this._select.value)):this._setElementValue(n)}_setElementValue(n){this._renderer.setProperty(this._element.nativeElement,"value",n)}_setSelected(n){this._renderer.setProperty(this._element.nativeElement,"selected",n)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}}return e.\u0275fac=function(n){return new(n||e)(I($e),I(cr),I(Fd,9))},e.\u0275dir=L({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}}),e})(),av=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({imports:[[zC]]}),e})(),oF=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=mn({type:e}),e.\u0275inj=Ft({imports:[av]}),e})();class lv{constructor(){this.riskHotspotsSettings=null,this.coverageInfoSettings=null}}class iF{constructor(){this.groupingMaximum=0,this.grouping=0,this.historyComparisionDate="",this.historyComparisionType="",this.filter="",this.sortBy="name",this.sortOrder="asc",this.collapseStates=[]}}class sF{constructor(t){this.et="",this.et=t.et,this.cl=t.cl,this.ucl=t.ucl,this.cal=t.cal,this.tl=t.tl,this.lcq=t.lcq,this.cb=t.cb,this.tb=t.tb,this.bcq=t.bcq}get coverageRatioText(){return 0===this.tl?"-":this.cl+"/"+this.cal}get branchCoverageRatioText(){return 0===this.tb?"-":this.cb+"/"+this.tb}}class vo{static roundNumber(t,n){return Math.floor(t*Math.pow(10,n))/Math.pow(10,n)}static getNthOrLastIndexOf(t,n,r){let o=0,i=-1,s=-1;for(;o{this.historicCoverages.push(new sF(r))})}get coverage(){return 0===this.coverableLines?"-"!==this.methodCoverage?parseFloat(this.methodCoverage):NaN:vo.roundNumber(100*this.coveredLines/this.coverableLines,1)}get coverageType(){return 0===this.coverableLines?"-"!==this.methodCoverage?this._coverageType:"":this._coverageType}visible(t,n){if(""!==t&&-1===this.name.toLowerCase().indexOf(t.toLowerCase()))return!1;if(""===n||null===this.currentHistoricCoverage)return!0;if("allChanges"===n){if(this.coveredLines===this.currentHistoricCoverage.cl&&this.uncoveredLines===this.currentHistoricCoverage.ucl&&this.coverableLines===this.currentHistoricCoverage.cal&&this.totalLines===this.currentHistoricCoverage.tl&&this.coveredBranches===this.currentHistoricCoverage.cb&&this.totalBranches===this.currentHistoricCoverage.tb)return!1}else if("lineCoverageIncreaseOnly"===n){let r=this.coverage;if(isNaN(r)||r<=this.currentHistoricCoverage.lcq)return!1}else if("lineCoverageDecreaseOnly"===n){let r=this.coverage;if(isNaN(r)||r>=this.currentHistoricCoverage.lcq)return!1}else if("branchCoverageIncreaseOnly"===n){let r=this.branchCoverage;if(isNaN(r)||r<=this.currentHistoricCoverage.bcq)return!1}else if("branchCoverageDecreaseOnly"===n){let r=this.branchCoverage;if(isNaN(r)||r>=this.currentHistoricCoverage.bcq)return!1}return!0}updateCurrentHistoricCoverage(t){if(this.currentHistoricCoverage=null,""!==t)for(let n=0;n-1&&null===n}visible(t,n){if(""!==t&&this.name.toLowerCase().indexOf(t.toLowerCase())>-1)return!0;for(let r=0;r{class e{get nativeWindow(){return window}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=te({token:e,factory:e.\u0275fac}),e})();function lF(e,t){1&e&&k(0,"td",3)}function cF(e,t){1&e&&k(0,"td"),2&e&&Ln("green ",w().greenClass,"")}function uF(e,t){1&e&&k(0,"td"),2&e&&Ln("red ",w().redClass,"")}let uv=(()=>{class e{constructor(){this.grayVisible=!0,this.greenVisible=!1,this.redVisible=!1,this.greenClass="",this.redClass="",this._percentage=NaN}get percentage(){return this._percentage}set percentage(n){this._percentage=n,this.grayVisible=isNaN(n),this.greenVisible=!isNaN(n)&&Math.round(n)>0,this.redVisible=!isNaN(n)&&100-Math.round(n)>0,this.greenClass="covered"+Math.round(n),this.redClass="covered"+(100-Math.round(n))}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275cmp=xn({type:e,selectors:[["coverage-bar"]],inputs:{percentage:"percentage"},decls:4,vars:3,consts:[[1,"coverage"],["class","gray covered100",4,"ngIf"],[3,"class",4,"ngIf"],[1,"gray","covered100"]],template:function(n,r){1&n&&(y(0,"table",0),S(1,lF,1,0,"td",1),S(2,cF,1,3,"td",2),S(3,uF,1,3,"td",2),C()),2&n&&(g(1),D("ngIf",r.grayVisible),g(1),D("ngIf",r.greenVisible),g(1),D("ngIf",r.redVisible))},directives:[yo],encapsulation:2,changeDetection:0}),e})();const dF=["codeelement-row",""];function fF(e,t){if(1&e&&(y(0,"th",2),M(1),C()),2&e){const n=w();g(1),P(n.element.coveredBranches)}}function hF(e,t){if(1&e&&(y(0,"th",2),M(1),C()),2&e){const n=w();g(1),P(n.element.totalBranches)}}function pF(e,t){if(1&e&&(y(0,"th",3),M(1),C()),2&e){const n=w();D("title",n.element.branchCoverageRatioText),g(1),P(n.element.branchCoveragePercentage)}}function gF(e,t){if(1&e&&(y(0,"th",2),k(1,"coverage-bar",4),C()),2&e){const n=w();g(1),D("percentage",n.element.branchCoverage)}}const mF=function(e,t){return{"icon-plus":e,"icon-minus":t}};let _F=(()=>{class e{constructor(){this.collapsed=!1,this.branchCoverageAvailable=!1}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275cmp=xn({type:e,selectors:[["","codeelement-row",""]],inputs:{element:"element",collapsed:"collapsed",branchCoverageAvailable:"branchCoverageAvailable"},attrs:dF,decls:20,vars:16,consts:[["href","#",3,"click"],[3,"ngClass"],[1,"right"],[1,"right",3,"title"],[3,"percentage"],["class","right",4,"ngIf"],["class","right",3,"title",4,"ngIf"]],template:function(n,r){1&n&&(y(0,"th"),y(1,"a",0),Z("click",function(i){return r.element.toggleCollapse(i)}),k(2,"i",1),M(3),C(),C(),y(4,"th",2),M(5),C(),y(6,"th",2),M(7),C(),y(8,"th",2),M(9),C(),y(10,"th",2),M(11),C(),y(12,"th",3),M(13),C(),y(14,"th",2),k(15,"coverage-bar",4),C(),S(16,fF,2,1,"th",5),S(17,hF,2,1,"th",5),S(18,pF,2,2,"th",6),S(19,gF,2,1,"th",5)),2&n&&(g(2),D("ngClass",su(13,mF,r.element.collapsed,!r.element.collapsed)),g(1),oe(" ",r.element.name,""),g(2),P(r.element.coveredLines),g(2),P(r.element.uncoveredLines),g(2),P(r.element.coverableLines),g(2),P(r.element.totalLines),g(1),D("title",r.element.coverageRatioText),g(1),P(r.element.coveragePercentage),g(2),D("percentage",r.element.coverage),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable))},directives:[Ni,uv,yo],encapsulation:2,changeDetection:0}),e})();const yF=["coverage-history-chart",""];let CF=(()=>{class e{constructor(){this.path=null,this._historicCoverages=[]}get historicCoverages(){return this._historicCoverages}set historicCoverages(n){if(this._historicCoverages=n,n.length>1){let r="";for(let o=0;o1),g(1),D("ngIf",null!==n.clazz.currentHistoricCoverage),g(1),D("ngIf",null===n.clazz.currentHistoricCoverage)}}function GF(e,t){if(1&e&&(y(0,"td",2),k(1,"coverage-bar",5),C()),2&e){const n=w();g(1),D("percentage",n.clazz.branchCoverage)}}let zF=(()=>{class e{constructor(){this.translations={},this.branchCoverageAvailable=!1,this.historyComparisionDate=""}getClassName(n,r){return n>r?"lightgreen":n1),g(1),D("ngIf",null!==r.clazz.currentHistoricCoverage),g(1),D("ngIf",null===r.clazz.currentHistoricCoverage),g(2),D("percentage",r.clazz.coverage),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable),g(1),D("ngIf",r.branchCoverageAvailable))},directives:[yo,uv,CF,Ni],encapsulation:2,changeDetection:0}),e})();function WF(e,t){if(1&e&&(se(0),M(1),ae()),2&e){const n=w(2);g(1),P(n.translations.noGrouping)}}function qF(e,t){if(1&e&&(se(0),M(1),ae()),2&e){const n=w(2);g(1),P(n.translations.byAssembly)}}function QF(e,t){if(1&e&&(se(0),M(1),ae()),2&e){const n=w(2);g(1),P(n.translations.byNamespace+" "+n.settings.grouping)}}function KF(e,t){if(1&e&&(y(0,"option",26),M(1),C()),2&e){const n=t.$implicit;D("value",n),g(1),P(n)}}function YF(e,t){1&e&&k(0,"br")}function ZF(e,t){if(1&e&&(y(0,"option",32),M(1),C()),2&e){const n=w(4);g(1),oe(" ",n.translations.branchCoverageIncreaseOnly," ")}}function JF(e,t){if(1&e&&(y(0,"option",33),M(1),C()),2&e){const n=w(4);g(1),oe(" ",n.translations.branchCoverageDecreaseOnly," ")}}function XF(e,t){if(1&e){const n=ln();y(0,"div"),y(1,"select",23),Z("ngModelChange",function(o){return le(n),w(3).settings.historyComparisionType=o}),y(2,"option",24),M(3),C(),y(4,"option",27),M(5),C(),y(6,"option",28),M(7),C(),y(8,"option",29),M(9),C(),S(10,ZF,2,1,"option",30),S(11,JF,2,1,"option",31),C(),C()}if(2&e){const n=w(3);g(1),D("ngModel",n.settings.historyComparisionType),g(2),P(n.translations.filter),g(2),P(n.translations.allChanges),g(2),P(n.translations.lineCoverageIncreaseOnly),g(2),P(n.translations.lineCoverageDecreaseOnly),g(1),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable)}}function eO(e,t){if(1&e){const n=ln();se(0),y(1,"div"),M(2),y(3,"select",23),Z("ngModelChange",function(o){return le(n),w(2).settings.historyComparisionDate=o})("ngModelChange",function(){return le(n),w(2).updateCurrentHistoricCoverage()}),y(4,"option",24),M(5),C(),S(6,KF,2,2,"option",25),C(),C(),S(7,YF,1,0,"br",0),S(8,XF,12,7,"div",0),ae()}if(2&e){const n=w(2);g(2),oe(" ",n.translations.compareHistory," "),g(1),D("ngModel",n.settings.historyComparisionDate),g(2),P(n.translations.date),g(1),D("ngForOf",n.historicCoverageExecutionTimes),g(1),D("ngIf",""!==n.settings.historyComparisionDate),g(1),D("ngIf",""!==n.settings.historyComparisionDate)}}function tO(e,t){1&e&&k(0,"col",8)}function nO(e,t){1&e&&k(0,"col",11)}function rO(e,t){1&e&&k(0,"col",12)}function oO(e,t){1&e&&k(0,"col",13)}const In=function(e,t,n){return{"icon-up-dir_active":e,"icon-down-dir_active":t,"icon-down-dir":n}};function iO(e,t){if(1&e){const n=ln();y(0,"th",5),y(1,"a",2),Z("click",function(o){return le(n),w(2).updateSorting("covered_branches",o)}),k(2,"i",18),M(3),C(),C()}if(2&e){const n=w(2);g(2),D("ngClass",st(2,In,"covered_branches"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"covered_branches"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"covered_branches"!==n.settings.sortBy)),g(1),P(n.translations.covered)}}function sO(e,t){if(1&e){const n=ln();y(0,"th",5),y(1,"a",2),Z("click",function(o){return le(n),w(2).updateSorting("total_branches",o)}),k(2,"i",18),M(3),C(),C()}if(2&e){const n=w(2);g(2),D("ngClass",st(2,In,"total_branches"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"total_branches"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"total_branches"!==n.settings.sortBy)),g(1),P(n.translations.total)}}function aO(e,t){if(1&e){const n=ln();y(0,"th",19),y(1,"a",2),Z("click",function(o){return le(n),w(2).updateSorting("branchcoverage",o)}),k(2,"i",18),M(3),C(),C()}if(2&e){const n=w(2);g(2),D("ngClass",st(2,In,"branchcoverage"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"branchcoverage"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"branchcoverage"!==n.settings.sortBy)),g(1),P(n.translations.branchCoverage)}}function lO(e,t){if(1&e&&k(0,"tr",35),2&e){const n=w().$implicit,r=w(2);D("element",n)("collapsed",n.collapsed)("branchCoverageAvailable",r.branchCoverageAvailable)}}function cO(e,t){if(1&e&&k(0,"tr",37),2&e){const n=w().$implicit,r=w(3);D("clazz",n)("translations",r.translations)("branchCoverageAvailable",r.branchCoverageAvailable)("historyComparisionDate",r.settings.historyComparisionDate)}}function uO(e,t){if(1&e&&(se(0),S(1,cO,1,4,"tr",36),ae()),2&e){const n=t.$implicit,r=w().$implicit,o=w(2);g(1),D("ngIf",!r.collapsed&&n.visible(o.settings.filter,o.settings.historyComparisionType))}}function dO(e,t){if(1&e&&k(0,"tr",40),2&e){const n=w().$implicit,r=w(5);D("clazz",n)("translations",r.translations)("branchCoverageAvailable",r.branchCoverageAvailable)("historyComparisionDate",r.settings.historyComparisionDate)}}function fO(e,t){if(1&e&&(se(0),S(1,dO,1,4,"tr",39),ae()),2&e){const n=t.$implicit,r=w(2).$implicit,o=w(3);g(1),D("ngIf",!r.collapsed&&n.visible(o.settings.filter,o.settings.historyComparisionType))}}function hO(e,t){if(1&e&&(se(0),k(1,"tr",38),S(2,fO,2,1,"ng-container",22),ae()),2&e){const n=w().$implicit,r=w(3);g(1),D("element",n)("collapsed",n.collapsed)("branchCoverageAvailable",r.branchCoverageAvailable),g(1),D("ngForOf",n.classes)}}function pO(e,t){if(1&e&&(se(0),S(1,hO,3,4,"ng-container",0),ae()),2&e){const n=t.$implicit,r=w().$implicit,o=w(2);g(1),D("ngIf",!r.collapsed&&n.visible(o.settings.filter,o.settings.historyComparisionType))}}function gO(e,t){if(1&e&&(se(0),S(1,lO,1,3,"tr",34),S(2,uO,2,1,"ng-container",22),S(3,pO,2,1,"ng-container",22),ae()),2&e){const n=t.$implicit,r=w(2);g(1),D("ngIf",n.visible(r.settings.filter,r.settings.historyComparisionType)),g(1),D("ngForOf",n.classes),g(1),D("ngForOf",n.subElements)}}function mO(e,t){if(1&e){const n=ln();y(0,"div"),y(1,"div",1),y(2,"div"),y(3,"a",2),Z("click",function(o){return le(n),w().collapseAll(o)}),M(4),C(),M(5," | "),y(6,"a",2),Z("click",function(o){return le(n),w().expandAll(o)}),M(7),C(),C(),y(8,"div",3),S(9,WF,2,1,"ng-container",0),S(10,qF,2,1,"ng-container",0),S(11,QF,2,1,"ng-container",0),k(12,"br"),M(13),y(14,"input",4),Z("ngModelChange",function(o){return le(n),w().settings.grouping=o})("ngModelChange",function(){return le(n),w().updateCoverageInfo()}),C(),C(),y(15,"div",3),S(16,eO,9,6,"ng-container",0),C(),y(17,"div",5),y(18,"span"),M(19),C(),y(20,"input",6),Z("ngModelChange",function(o){return le(n),w().settings.filter=o}),C(),C(),C(),y(21,"table",7),y(22,"colgroup"),k(23,"col"),k(24,"col",8),k(25,"col",9),k(26,"col",10),k(27,"col",11),k(28,"col",12),k(29,"col",13),S(30,tO,1,0,"col",14),S(31,nO,1,0,"col",15),S(32,rO,1,0,"col",16),S(33,oO,1,0,"col",17),C(),y(34,"thead"),y(35,"tr"),y(36,"th"),y(37,"a",2),Z("click",function(o){return le(n),w().updateSorting("name",o)}),k(38,"i",18),M(39),C(),C(),y(40,"th",5),y(41,"a",2),Z("click",function(o){return le(n),w().updateSorting("covered",o)}),k(42,"i",18),M(43),C(),C(),y(44,"th",5),y(45,"a",2),Z("click",function(o){return le(n),w().updateSorting("uncovered",o)}),k(46,"i",18),M(47),C(),C(),y(48,"th",5),y(49,"a",2),Z("click",function(o){return le(n),w().updateSorting("coverable",o)}),k(50,"i",18),M(51),C(),C(),y(52,"th",5),y(53,"a",2),Z("click",function(o){return le(n),w().updateSorting("total",o)}),k(54,"i",18),M(55),C(),C(),y(56,"th",19),y(57,"a",2),Z("click",function(o){return le(n),w().updateSorting("coverage",o)}),k(58,"i",18),M(59),C(),C(),S(60,iO,4,6,"th",20),S(61,sO,4,6,"th",20),S(62,aO,4,6,"th",21),C(),C(),y(63,"tbody"),S(64,gO,4,3,"ng-container",22),C(),C(),C()}if(2&e){const n=w();g(4),P(n.translations.collapseAll),g(3),P(n.translations.expandAll),g(2),D("ngIf",-1===n.settings.grouping),g(1),D("ngIf",0===n.settings.grouping),g(1),D("ngIf",n.settings.grouping>0),g(2),oe(" ",n.translations.grouping," "),g(1),D("max",n.settings.groupingMaximum)("ngModel",n.settings.grouping),g(2),D("ngIf",n.historicCoverageExecutionTimes.length>0),g(3),oe("",n.translations.filter," "),g(1),D("ngModel",n.settings.filter),g(10),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable),g(5),D("ngClass",st(31,In,"name"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"name"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"name"!==n.settings.sortBy)),g(1),P(n.translations.name),g(3),D("ngClass",st(35,In,"covered"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"covered"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"covered"!==n.settings.sortBy)),g(1),P(n.translations.covered),g(3),D("ngClass",st(39,In,"uncovered"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"uncovered"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"uncovered"!==n.settings.sortBy)),g(1),P(n.translations.uncovered),g(3),D("ngClass",st(43,In,"coverable"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"coverable"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"coverable"!==n.settings.sortBy)),g(1),P(n.translations.coverable),g(3),D("ngClass",st(47,In,"total"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"total"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"total"!==n.settings.sortBy)),g(1),P(n.translations.total),g(3),D("ngClass",st(51,In,"coverage"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"coverage"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"coverage"!==n.settings.sortBy)),g(1),P(n.translations.coverage),g(1),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable),g(1),D("ngIf",n.branchCoverageAvailable),g(2),D("ngForOf",n.codeElements)}}let _O=(()=>{class e{constructor(n){this.queryString="",this.historicCoverageExecutionTimes=[],this.branchCoverageAvailable=!1,this.codeElements=[],this.translations={},this.settings=new iF,this.window=n.nativeWindow}ngOnInit(){this.historicCoverageExecutionTimes=this.window.historicCoverageExecutionTimes,this.branchCoverageAvailable=this.window.branchCoverageAvailable,this.translations=this.window.translations;let n=!1;if(void 0!==this.window.history&&void 0!==this.window.history.replaceState&&null!==this.window.history.state&&null!=this.window.history.state.coverageInfoSettings)console.log("Coverage info: Restoring from history",this.window.history.state.coverageInfoSettings),n=!0,this.settings=JSON.parse(JSON.stringify(this.window.history.state.coverageInfoSettings));else{let o=0,i=this.window.assemblies;for(let s=0;s-1&&(this.queryString=window.location.href.substr(r)),this.updateCoverageInfo(),n&&this.restoreCollapseState()}onDonBeforeUnlodad(){if(this.saveCollapseState(),void 0!==this.window.history&&void 0!==this.window.history.replaceState){console.log("Coverage info: Updating history",this.settings);let n=new lv;null!==window.history.state&&(n=JSON.parse(JSON.stringify(this.window.history.state))),n.coverageInfoSettings=JSON.parse(JSON.stringify(this.settings)),window.history.replaceState(n,"")}}updateCoverageInfo(){let n=(new Date).getTime(),r=this.window.assemblies,o=[],i=0;if(0===this.settings.grouping)for(let l=0;l{for(let o=0;o{for(let i=0;in&&(o[i].collapsed=this.settings.collapseStates[n]),n++,r(o[i].subElements)};r(this.codeElements)}}return e.\u0275fac=function(n){return new(n||e)(I(kd))},e.\u0275cmp=xn({type:e,selectors:[["coverage-info"]],hostBindings:function(n,r){1&n&&Z("beforeunload",function(){return r.onDonBeforeUnlodad()},!1,Hl)},decls:1,vars:1,consts:[[4,"ngIf"],[1,"customizebox"],["href","#",3,"click"],[1,"center"],["type","range","step","1","min","-1",3,"max","ngModel","ngModelChange"],[1,"right"],["type","text",3,"ngModel","ngModelChange"],[1,"overview","table-fixed","stripped"],[1,"column90"],[1,"column105"],[1,"column100"],[1,"column70"],[1,"column98"],[1,"column112"],["class","column90",4,"ngIf"],["class","column70",4,"ngIf"],["class","column98",4,"ngIf"],["class","column112",4,"ngIf"],[1,"icon-down-dir",3,"ngClass"],["colspan","2",1,"center"],["class","right",4,"ngIf"],["class","center","colspan","2",4,"ngIf"],[4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange"],["value",""],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["value","allChanges"],["value","lineCoverageIncreaseOnly"],["value","lineCoverageDecreaseOnly"],["value","branchCoverageIncreaseOnly",4,"ngIf"],["value","branchCoverageDecreaseOnly",4,"ngIf"],["value","branchCoverageIncreaseOnly"],["value","branchCoverageDecreaseOnly"],["codeelement-row","",3,"element","collapsed","branchCoverageAvailable",4,"ngIf"],["codeelement-row","",3,"element","collapsed","branchCoverageAvailable"],["class-row","",3,"clazz","translations","branchCoverageAvailable","historyComparisionDate",4,"ngIf"],["class-row","",3,"clazz","translations","branchCoverageAvailable","historyComparisionDate"],["codeelement-row","",1,"namespace",3,"element","collapsed","branchCoverageAvailable"],["class","namespace","class-row","",3,"clazz","translations","branchCoverageAvailable","historyComparisionDate",4,"ngIf"],["class-row","",1,"namespace",3,"clazz","translations","branchCoverageAvailable","historyComparisionDate"]],template:function(n,r){1&n&&S(0,mO,65,55,"div",0),2&n&&D("ngIf",r.codeElements.length>0)},directives:[yo,Td,Pi,gd,Ba,Ni,Yu,Hi,Rd,Od,_F,zF],encapsulation:2}),e})();class yO{constructor(){this.assembly="",this.numberOfRiskHotspots=10,this.filter="",this.sortBy="",this.sortOrder="asc"}}function CO(e,t){if(1&e&&(y(0,"option",14),M(1),C()),2&e){const n=t.$implicit;D("value",n),g(1),P(n)}}function vO(e,t){if(1&e&&(y(0,"span"),M(1),C()),2&e){const n=w(2);g(1),P(n.translations.top)}}function DO(e,t){1&e&&(y(0,"option",21),M(1,"20"),C())}function bO(e,t){1&e&&(y(0,"option",22),M(1,"50"),C())}function EO(e,t){1&e&&(y(0,"option",23),M(1,"100"),C())}function wO(e,t){if(1&e&&(y(0,"option",14),M(1),C()),2&e){const n=w(3);D("value",n.totalNumberOfRiskHotspots),g(1),P(n.translations.all)}}function IO(e,t){if(1&e){const n=ln();y(0,"select",15),Z("ngModelChange",function(o){return le(n),w(2).settings.numberOfRiskHotspots=o}),y(1,"option",16),M(2,"10"),C(),S(3,DO,2,0,"option",17),S(4,bO,2,0,"option",18),S(5,EO,2,0,"option",19),S(6,wO,2,2,"option",20),C()}if(2&e){const n=w(2);D("ngModel",n.settings.numberOfRiskHotspots),g(3),D("ngIf",n.totalNumberOfRiskHotspots>10),g(1),D("ngIf",n.totalNumberOfRiskHotspots>20),g(1),D("ngIf",n.totalNumberOfRiskHotspots>50),g(1),D("ngIf",n.totalNumberOfRiskHotspots>100)}}function MO(e,t){1&e&&k(0,"col",24)}const Ha=function(e,t,n){return{"icon-up-dir_active":e,"icon-down-dir_active":t,"icon-down-dir":n}};function TO(e,t){if(1&e){const n=ln();y(0,"th"),y(1,"a",11),Z("click",function(o){const s=le(n).index;return w(2).updateSorting(""+s,o)}),k(2,"i",12),M(3),C(),y(4,"a",25),k(5,"i",26),C(),C()}if(2&e){const n=t.$implicit,r=t.index,o=w(2);g(2),D("ngClass",st(3,Ha,o.settings.sortBy===""+r&&"desc"===o.settings.sortOrder,o.settings.sortBy===""+r&&"asc"===o.settings.sortOrder,o.settings.sortBy!==""+r)),g(1),P(n.name),g(1),oi("href",n.explanationUrl,Vr)}}const AO=function(e,t){return{lightred:e,lightgreen:t}};function SO(e,t){if(1&e&&(y(0,"td",29),M(1),C()),2&e){const n=t.$implicit;D("ngClass",su(2,AO,n.exceeded,!n.exceeded)),g(1),P(n.value)}}function xO(e,t){if(1&e&&(y(0,"tr"),y(1,"td"),M(2),C(),y(3,"td"),y(4,"a",25),M(5),C(),C(),y(6,"td",27),y(7,"a",25),M(8),C(),C(),S(9,SO,2,5,"td",28),C()),2&e){const n=t.$implicit,r=w(2);g(2),P(n.assembly),g(2),D("href",n.reportPath+r.queryString,Vr),g(1),P(n.class),g(1),D("title",n.methodName),g(1),D("href",n.reportPath+r.queryString+"#file"+n.fileIndex+"_line"+n.line,Vr),g(1),oe(" ",n.methodShortName," "),g(1),D("ngForOf",n.metrics)}}function NO(e,t){if(1&e){const n=ln();y(0,"div"),y(1,"div",1),y(2,"div"),y(3,"select",2),Z("ngModelChange",function(o){return le(n),w().settings.assembly=o})("ngModelChange",function(){return le(n),w().updateRiskHotpots()}),y(4,"option",3),M(5),C(),S(6,CO,2,2,"option",4),C(),C(),y(7,"div",5),S(8,vO,2,1,"span",0),S(9,IO,7,5,"select",6),C(),k(10,"div",5),y(11,"div",7),y(12,"span"),M(13),C(),y(14,"input",8),Z("ngModelChange",function(o){return le(n),w().settings.filter=o})("ngModelChange",function(){return le(n),w().updateRiskHotpots()}),C(),C(),C(),y(15,"table",9),y(16,"colgroup"),k(17,"col"),k(18,"col"),k(19,"col"),S(20,MO,1,0,"col",10),C(),y(21,"thead"),y(22,"tr"),y(23,"th"),y(24,"a",11),Z("click",function(o){return le(n),w().updateSorting("assembly",o)}),k(25,"i",12),M(26),C(),C(),y(27,"th"),y(28,"a",11),Z("click",function(o){return le(n),w().updateSorting("class",o)}),k(29,"i",12),M(30),C(),C(),y(31,"th"),y(32,"a",11),Z("click",function(o){return le(n),w().updateSorting("method",o)}),k(33,"i",12),M(34),C(),C(),S(35,TO,6,7,"th",13),C(),C(),y(36,"tbody"),S(37,xO,10,7,"tr",13),function(e,t){const n=J();let r;const o=e+20;n.firstCreatePass?(r=function(e,t){if(t)for(let n=t.length-1;n>=0;n--){const r=t[n];if(e===r.name)return r}throw new Qn("302",`The pipe '${e}' could not be found!`)}(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(o,r.onDestroy)):r=n.data[o];const i=r.factory||(r.factory=Xn(r.type)),s=An(I);try{const a=us(!1),l=i();us(a),function(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}(n,b(),o,l)}finally{An(s)}}(38,"slice"),C(),C(),C()}if(2&e){const n=w();g(3),D("ngModel",n.settings.assembly),g(2),P(n.translations.assembly),g(1),D("ngForOf",n.assemblies),g(2),D("ngIf",n.totalNumberOfRiskHotspots>10),g(1),D("ngIf",n.totalNumberOfRiskHotspots>10),g(4),oe("",n.translations.filter," "),g(1),D("ngModel",n.settings.filter),g(6),D("ngForOf",n.riskHotspotMetrics),g(5),D("ngClass",st(20,Ha,"assembly"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"assembly"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"assembly"!==n.settings.sortBy)),g(1),P(n.translations.assembly),g(3),D("ngClass",st(24,Ha,"class"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"class"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"class"!==n.settings.sortBy)),g(1),P(n.translations.class),g(3),D("ngClass",st(28,Ha,"method"===n.settings.sortBy&&"desc"===n.settings.sortOrder,"method"===n.settings.sortBy&&"asc"===n.settings.sortOrder,"method"!==n.settings.sortBy)),g(1),P(n.translations.method),g(1),D("ngForOf",n.riskHotspotMetrics),g(2),D("ngForOf",M_(38,16,n.riskHotspots,0,n.settings.numberOfRiskHotspots))}}let RO=(()=>{class e{constructor(n){this.queryString="",this.riskHotspotMetrics=[],this.riskHotspots=[],this.totalNumberOfRiskHotspots=0,this.assemblies=[],this.translations={},this.settings=new yO,this.window=n.nativeWindow}ngOnInit(){this.riskHotspotMetrics=this.window.riskHotspotMetrics,this.translations=this.window.translations,void 0!==this.window.history&&void 0!==this.window.history.replaceState&&null!==this.window.history.state&&null!=this.window.history.state.riskHotspotsSettings&&(console.log("Risk hotspots: Restoring from history",this.window.history.state.riskHotspotsSettings),this.settings=JSON.parse(JSON.stringify(this.window.history.state.riskHotspotsSettings)));const n=window.location.href.indexOf("?");n>-1&&(this.queryString=window.location.href.substr(n)),this.updateRiskHotpots()}onDonBeforeUnlodad(){if(void 0!==this.window.history&&void 0!==this.window.history.replaceState){console.log("Risk hotspots: Updating history",this.settings);let n=new lv;null!==window.history.state&&(n=JSON.parse(JSON.stringify(this.window.history.state))),n.riskHotspotsSettings=JSON.parse(JSON.stringify(this.settings)),window.history.replaceState(n,"")}}updateRiskHotpots(){const n=this.window.riskHotspots;if(this.totalNumberOfRiskHotspots=n.length,0===this.assemblies.length){let s=[];for(let a=0;a0)},directives:[yo,Hi,gd,Ba,Rd,Od,Yu,Pi,Ni],pipes:[Yy],encapsulation:2}),e})(),FO=(()=>{class e{}return e.\u0275fac=function(n){return new(n||e)},e.\u0275mod=mn({type:e,bootstrap:[RO,_O]}),e.\u0275inj=Ft({providers:[kd],imports:[[iR,oF]]}),e})();rR().bootstrapModule(FO).catch(e=>console.error(e))}},wo=>{wo(wo.s=15)}]); \ No newline at end of file diff --git a/report/coverlet/report.css b/report/coverlet/report.css deleted file mode 100644 index 27ef3f3c..00000000 --- a/report/coverlet/report.css +++ /dev/null @@ -1,564 +0,0 @@ -html { font-family: sans-serif; margin: 0; padding: 0; font-size: 0.9em; background-color: #d6d6d6; height: 100%; } -body { margin: 0; padding: 0; height: 100%; color: #000; } -h1 { font-family: 'Century Gothic', sans-serif; font-size: 1.2em; font-weight: normal; color: #fff; background-color: #6f6f6f; padding: 10px; margin: 20px -20px 20px -20px; } -h1:first-of-type { margin-top: 0; } -h2 { font-size: 1.0em; font-weight: bold; margin: 10px 0 15px 0; padding: 0; } -h3 { font-size: 1.0em; font-weight: bold; margin: 0 0 10px 0; padding: 0; display: inline-block; } -a { color: #c00; text-decoration: none; } -a:hover { color: #000; text-decoration: none; } -h1 a.back { color: #fff; background-color: #949494; display: inline-block; margin: -12px 5px -10px -10px; padding: 10px; border-right: 1px solid #fff; } -h1 a.back:hover { background-color: #ccc; } -h1 a.button { color: #000; background-color: #bebebe; margin: -5px 0 0 10px; padding: 5px 8px 5px 8px; border: 1px solid #fff; font-size: 0.9em; border-radius: 3px; float:right; } -h1 a.button:hover { background-color: #ccc; } -h1 a.button i { position: relative; top: 1px; } - -.container { margin: auto; max-width: 1650px; width: 90%; background-color: #fff; display: flex; box-shadow: 0 0 60px #7d7d7d; min-height: 100%; } -.containerleft { padding: 0 20px 20px 20px; flex: 1; } -.containerright { width: 340px; min-width: 340px; background-color: #e5e5e5; height: 100%; } -.containerrightfixed { position: fixed; padding: 0 20px 20px 20px; border-left: solid 1px #6f6f6f; width: 300px; overflow-y: auto; height: 100%; top: 0; bottom: 0; } -.containerrightfixed h1 { background-color: #c00; } -.containerrightfixed label, .containerright a { white-space: nowrap; overflow: hidden; display: inline-block; width: 100%; max-width: 300px; text-overflow: ellipsis; } -.containerright a { margin-bottom: 3px; } - -@media screen and (max-width:1200px){ - .container { box-shadow: none; width: 100%; } - .containerright { display: none; } -} - -.footer { font-size: 0.7em; text-align: center; margin-top: 35px; } - -th { text-align: left; } -.table-fixed { table-layout: fixed; } -.overview { border: solid 1px #c1c1c1; border-collapse: collapse; width: 100%; word-wrap: break-word; } -.overview th { border: solid 1px #c1c1c1; border-collapse: collapse; padding: 2px 4px 2px 4px; background-color: #ddd; } -.overview tr.namespace th { background-color: #dcdcdc; } -.overview thead th { background-color: #d1d1d1; } -.overview th a { color: #000; } -.overview tr.namespace a { margin-left: 15px; display: block; } -.overview td { border: solid 1px #c1c1c1; border-collapse: collapse; padding: 2px 5px 2px 5px; } -div.currenthistory { margin: -2px -5px 0 -5px; padding: 2px 5px 2px 5px; height: 16px; } -.coverage { border-collapse: collapse; font-size: 5px; height: 10px; } -.coverage td { padding: 0; border: none; } -.stripped tr:nth-child(2n+1) { background-color: #F3F3F3; } - -.customizebox { font-size: 0.75em; margin-bottom: 7px; } -.customizebox>div { width: 25%; display: inline-block; } -.customizebox div.right input { width: 150px; } -#namespaceslider { width: 200px; display: inline-block; margin-left: 8px; } - -.percentagebar { - padding-left: 3px; -} -a.percentagebar { - padding-left: 6px; -} -.percentagebarundefined { - border-left: 2px solid #fff; -} -.percentagebar0 { - border-left: 2px solid #c10909; -} -.percentagebar10 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 90%, #0aad0a 90%, #0aad0a 100%) 1; -} -.percentagebar20 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 80%, #0aad0a 80%, #0aad0a 100%) 1; -} -.percentagebar30 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 70%, #0aad0a 70%, #0aad0a 100%) 1; -} -.percentagebar40 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 60%, #0aad0a 60%, #0aad0a 100%) 1; -} -.percentagebar50 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 50%, #0aad0a 50%, #0aad0a 100%) 1; -} -.percentagebar60 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 40%, #0aad0a 40%, #0aad0a 100%) 1; -} -.percentagebar70 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 30%, #0aad0a 30%, #0aad0a 100%) 1; -} -.percentagebar80 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 20%, #0aad0a 20%, #0aad0a 100%) 1; -} -.percentagebar90 { - border-left: 2px solid; - border-image: linear-gradient(to bottom, #c10909 10%, #0aad0a 10%, #0aad0a 100%) 1; -} -.percentagebar100 { - border-left: 2px solid #0aad0a; -} - -.hidden, .ng-hide { display: none; } -.right { text-align: right; } -.center { text-align: center; } -.rightmargin { padding-right: 8px; } -.leftmargin { padding-left: 5px; } -.green { background-color: #0aad0a; } -.lightgreen { background-color: #dcf4dc; } -.red { background-color: #c10909; } -.lightred { background-color: #f7dede; } -.orange { background-color: #FFA500; } -.lightorange { background-color: #FFEFD5; } -.gray { background-color: #dcdcdc; } -.lightgray { color: #888888; } -.lightgraybg { background-color: #dadada; } - -code { font-family: Consolas, monospace; font-size: 0.9em; } - -.toggleZoom { text-align:right; } - -.ct-chart { position: relative; } -.ct-chart .ct-line { stroke-width: 2px !important; } -.ct-chart .ct-point { stroke-width: 6px !important; transition: stroke-width .2s; } -.ct-chart .ct-point:hover { stroke-width: 10px !important; } -.ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point { stroke: #c00 !important;} -.ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point { stroke: #1c2298 !important;} - -.tinylinecoveragechart, .tinybranchcoveragechart { background-color: #fff; margin-left: -3px; float: left; border: solid 1px #c1c1c1; width: 30px; height: 18px; } -.historiccoverageoffset { margin-top: 7px; } - -.tinylinecoveragechart .ct-line, .tinybranchcoveragechart .ct-line { stroke-width: 1px !important; } -.tinybranchcoveragechart .ct-series.ct-series-a .ct-line { stroke: #1c2298 !important; } - -.linecoverage { background-color: #c00; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } -.branchcoverage { background-color: #1c2298; width: 10px; height: 8px; border: 1px solid #000; display: inline-block; } - -.tooltip { position: absolute; display: none; padding: 5px; background: #F4C63D; color: #453D3F; pointer-events: none; z-index: 1; min-width: 250px; } - -.column1324 { max-width: 1324px; } -.column674 { max-width: 674px; } -.column60 { width: 60px; } -.column70 { width: 70px; } -.column90 { width: 90px; } -.column98 { width: 98px; } -.column100 { width: 100px; } -.column105 { width: 105px; } -.column112 { width: 112px; } -.column135 { width: 135px; } -.column150 { width: 150px; } - -.covered0 { width: 0px; } -.covered1 { width: 1px; } -.covered2 { width: 2px; } -.covered3 { width: 3px; } -.covered4 { width: 4px; } -.covered5 { width: 5px; } -.covered6 { width: 6px; } -.covered7 { width: 7px; } -.covered8 { width: 8px; } -.covered9 { width: 9px; } -.covered10 { width: 10px; } -.covered11 { width: 11px; } -.covered12 { width: 12px; } -.covered13 { width: 13px; } -.covered14 { width: 14px; } -.covered15 { width: 15px; } -.covered16 { width: 16px; } -.covered17 { width: 17px; } -.covered18 { width: 18px; } -.covered19 { width: 19px; } -.covered20 { width: 20px; } -.covered21 { width: 21px; } -.covered22 { width: 22px; } -.covered23 { width: 23px; } -.covered24 { width: 24px; } -.covered25 { width: 25px; } -.covered26 { width: 26px; } -.covered27 { width: 27px; } -.covered28 { width: 28px; } -.covered29 { width: 29px; } -.covered30 { width: 30px; } -.covered31 { width: 31px; } -.covered32 { width: 32px; } -.covered33 { width: 33px; } -.covered34 { width: 34px; } -.covered35 { width: 35px; } -.covered36 { width: 36px; } -.covered37 { width: 37px; } -.covered38 { width: 38px; } -.covered39 { width: 39px; } -.covered40 { width: 40px; } -.covered41 { width: 41px; } -.covered42 { width: 42px; } -.covered43 { width: 43px; } -.covered44 { width: 44px; } -.covered45 { width: 45px; } -.covered46 { width: 46px; } -.covered47 { width: 47px; } -.covered48 { width: 48px; } -.covered49 { width: 49px; } -.covered50 { width: 50px; } -.covered51 { width: 51px; } -.covered52 { width: 52px; } -.covered53 { width: 53px; } -.covered54 { width: 54px; } -.covered55 { width: 55px; } -.covered56 { width: 56px; } -.covered57 { width: 57px; } -.covered58 { width: 58px; } -.covered59 { width: 59px; } -.covered60 { width: 60px; } -.covered61 { width: 61px; } -.covered62 { width: 62px; } -.covered63 { width: 63px; } -.covered64 { width: 64px; } -.covered65 { width: 65px; } -.covered66 { width: 66px; } -.covered67 { width: 67px; } -.covered68 { width: 68px; } -.covered69 { width: 69px; } -.covered70 { width: 70px; } -.covered71 { width: 71px; } -.covered72 { width: 72px; } -.covered73 { width: 73px; } -.covered74 { width: 74px; } -.covered75 { width: 75px; } -.covered76 { width: 76px; } -.covered77 { width: 77px; } -.covered78 { width: 78px; } -.covered79 { width: 79px; } -.covered80 { width: 80px; } -.covered81 { width: 81px; } -.covered82 { width: 82px; } -.covered83 { width: 83px; } -.covered84 { width: 84px; } -.covered85 { width: 85px; } -.covered86 { width: 86px; } -.covered87 { width: 87px; } -.covered88 { width: 88px; } -.covered89 { width: 89px; } -.covered90 { width: 90px; } -.covered91 { width: 91px; } -.covered92 { width: 92px; } -.covered93 { width: 93px; } -.covered94 { width: 94px; } -.covered95 { width: 95px; } -.covered96 { width: 96px; } -.covered97 { width: 97px; } -.covered98 { width: 98px; } -.covered99 { width: 99px; } -.covered100 { width: 100px; } - - @media print { - html, body { background-color: #fff; } - .container { max-width: 100%; width: 100%; padding: 0; } - .overview colgroup col:first-child { width: 300px; } -} - -.icon-up-dir_active { - background-image: url(icon_up-dir.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDEyMTZxMCAyNi0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMC00NS0xOXQtMTktNDUgMTktNDVsNDQ4LTQ0OHExOS0xOSA0NS0xOXQ0NSAxOWw0NDggNDQ4cTE5IDE5IDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-down-dir_active { - background-image: url(icon_up-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-down-dir { - background-image: url(icon_down-dir_active.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNDA4IDcwNHEwIDI2LTE5IDQ1bC00NDggNDQ4cS0xOSAxOS00NSAxOXQtNDUtMTlsLTQ0OC00NDhxLTE5LTE5LTE5LTQ1dDE5LTQ1IDQ1LTE5aDg5NnEyNiAwIDQ1IDE5dDE5IDQ1eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-info-circled { - background-image: url(icon_info-circled.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9Ijg5NiIgY3k9Ijg5NiIgcj0iNzUwIiBmaWxsPSIjZmZmIiAvPjxwYXRoIGZpbGw9IiMyOEE1RkYiIGQ9Ik0xMTUyIDEzNzZ2LTE2MHEwLTE0LTktMjN0LTIzLTloLTk2di01MTJxMC0xNC05LTIzdC0yMy05aC0zMjBxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloOTZ2MzIwaC05NnEtMTQgMC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMy05dDktMjN6bS0xMjgtODk2di0xNjBxMC0xNC05LTIzdC0yMy05aC0xOTJxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMtOXQ5LTIzem02NDAgNDE2cTAgMjA5LTEwMyAzODUuNXQtMjc5LjUgMjc5LjUtMzg1LjUgMTAzLTM4NS41LTEwMy0yNzkuNS0yNzkuNS0xMDMtMzg1LjUgMTAzLTM4NS41IDI3OS41LTI3OS41IDM4NS41LTEwMyAzODUuNSAxMDMgMjc5LjUgMjc5LjUgMTAzIDM4NS41eiIvPjwvc3ZnPg==); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; -} -.icon-plus { - background-image: url(icon_plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTQxNnY0MTZxMCA0MC0yOCA2OHQtNjggMjhoLTE5MnEtNDAgMC02OC0yOHQtMjgtNjh2LTQxNmgtNDE2cS00MCAwLTY4LTI4dC0yOC02OHYtMTkycTAtNDAgMjgtNjh0NjgtMjhoNDE2di00MTZxMC00MCAyOC02OHQ2OC0yOGgxOTJxNDAgMCA2OCAyOHQyOCA2OHY0MTZoNDE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-minus { - background-image: url(icon_minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiNjMDAiIGQ9Ik0xNjAwIDczNnYxOTJxMCA0MC0yOCA2OHQtNjggMjhoLTEyMTZxLTQwIDAtNjgtMjh0LTI4LTY4di0xOTJxMC00MCAyOC02OHQ2OC0yOGgxMjE2cTQwIDAgNjggMjh0MjggNjh6Ii8+PC9zdmc+); - background-repeat: no-repeat; - background-size: contain; - padding-left: 15px; - height: 0.9em; - display: inline-block; - position: relative; - top: 3px; -} -.icon-wrench { - background-image: url(icon_wrench.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00NDggMTQ3MnEwLTI2LTE5LTQ1dC00NS0xOS00NSAxOS0xOSA0NSAxOSA0NSA0NSAxOSA0NS0xOSAxOS00NXptNjQ0LTQyMGwtNjgyIDY4MnEtMzcgMzctOTAgMzctNTIgMC05MS0zN2wtMTA2LTEwOHEtMzgtMzYtMzgtOTAgMC01MyAzOC05MWw2ODEtNjgxcTM5IDk4IDExNC41IDE3My41dDE3My41IDExNC41em02MzQtNDM1cTAgMzktMjMgMTA2LTQ3IDEzNC0xNjQuNSAyMTcuNXQtMjU4LjUgODMuNXEtMTg1IDAtMzE2LjUtMTMxLjV0LTEzMS41LTMxNi41IDEzMS41LTMxNi41IDMxNi41LTEzMS41cTU4IDAgMTIxLjUgMTYuNXQxMDcuNSA0Ni41cTE2IDExIDE2IDI4dC0xNiAyOGwtMjkzIDE2OXYyMjRsMTkzIDEwN3E1LTMgNzktNDguNXQxMzUuNS04MSA3MC41LTM1LjVxMTUgMCAyMy41IDEwdDguNSAyNXoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-fork { - background-image: url(icon_fork.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHN0eWxlPSJmaWxsOiNmZmYiIC8+PHBhdGggZD0iTTY3MiAxNDcycTAtNDAtMjgtNjh0LTY4LTI4LTY4IDI4LTI4IDY4IDI4IDY4IDY4IDI4IDY4LTI4IDI4LTY4em0wLTExNTJxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTY0MCAxMjhxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTk2IDBxMCA1Mi0yNiA5Ni41dC03MCA2OS41cS0yIDI4Ny0yMjYgNDE0LTY3IDM4LTIwMyA4MS0xMjggNDAtMTY5LjUgNzF0LTQxLjUgMTAwdjI2cTQ0IDI1IDcwIDY5LjV0MjYgOTYuNXEwIDgwLTU2IDEzNnQtMTM2IDU2LTEzNi01Ni01Ni0xMzZxMC01MiAyNi05Ni41dDcwLTY5LjV2LTgyMHEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnEwIDUyLTI2IDk2LjV0LTcwIDY5LjV2NDk3cTU0LTI2IDE1NC01NyA1NS0xNyA4Ny41LTI5LjV0NzAuNS0zMSA1OS0zOS41IDQwLjUtNTEgMjgtNjkuNSA4LjUtOTEuNXEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-cube { - background-image: url(icon_cube.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik04OTYgMTYyOWw2NDAtMzQ5di02MzZsLTY0MCAyMzN2NzUyem0tNjQtODY1bDY5OC0yNTQtNjk4LTI1NC02OTggMjU0em04MzItMjUydjc2OHEwIDM1LTE4IDY1dC00OSA0N2wtNzA0IDM4NHEtMjggMTYtNjEgMTZ0LTYxLTE2bC03MDQtMzg0cS0zMS0xNy00OS00N3QtMTgtNjV2LTc2OHEwLTQwIDIzLTczdDYxLTQ3bDcwNC0yNTZxMjItOCA0NC04dDQ0IDhsNzA0IDI1NnEzOCAxNCA2MSA0N3QyMyA3M3oiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-search-plus { - background-image: url(icon_search-plus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtMjI0djIyNHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAtMjIuNS05LjV0LTkuNS0yMi41di0yMjRoLTIyNHEtMTMgMC0yMi41LTkuNXQtOS41LTIyLjV2LTY0cTAtMTMgOS41LTIyLjV0MjIuNS05LjVoMjI0di0yMjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg2NHExMyAwIDIyLjUgOS41dDkuNSAyMi41djIyNGgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-search-minus { - background-image: url(icon_search-minus.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiM2ZjZmNmYiIGQ9Ik0xMDg4IDgwMHY2NHEwIDEzLTkuNSAyMi41dC0yMi41IDkuNWgtNTc2cS0xMyAwLTIyLjUtOS41dC05LjUtMjIuNXYtNjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWg1NzZxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXptMTI4IDMycTAtMTg1LTEzMS41LTMxNi41dC0zMTYuNS0xMzEuNS0zMTYuNSAxMzEuNS0xMzEuNSAzMTYuNSAxMzEuNSAzMTYuNSAzMTYuNSAxMzEuNSAzMTYuNS0xMzEuNSAxMzEuNS0zMTYuNXptNTEyIDgzMnEwIDUzLTM3LjUgOTAuNXQtOTAuNSAzNy41cS01NCAwLTkwLTM4bC0zNDMtMzQycS0xNzkgMTI0LTM5OSAxMjQtMTQzIDAtMjczLjUtNTUuNXQtMjI1LTE1MC0xNTAtMjI1LTU1LjUtMjczLjUgNTUuNS0yNzMuNSAxNTAtMjI1IDIyNS0xNTAgMjczLjUtNTUuNSAyNzMuNSA1NS41IDIyNSAxNTAgMTUwIDIyNSA1NS41IDI3My41cTAgMjIwLTEyNCAzOTlsMzQzIDM0M3EzNyAzNyAzNyA5MHoiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-star { - background-image: url(icon_star.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNzI4IDY0N3EwIDIyLTI2IDQ4bC0zNjMgMzU0IDg2IDUwMHExIDcgMSAyMCAwIDIxLTEwLjUgMzUuNXQtMzAuNSAxNC41cS0xOSAwLTQwLTEybC00NDktMjM2LTQ0OSAyMzZxLTIyIDEyLTQwIDEyLTIxIDAtMzEuNS0xNC41dC0xMC41LTM1LjVxMC02IDItMjBsODYtNTAwLTM2NC0zNTRxLTI1LTI3LTI1LTQ4IDAtMzcgNTYtNDZsNTAyLTczIDIyNS00NTVxMTktNDEgNDktNDF0NDkgNDFsMjI1IDQ1NSA1MDIgNzNxNTYgOSA1NiA0NnoiIGZpbGw9IiMwMDAiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} -.icon-sponsor { - background-image: url(icon_sponsor.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik04OTYgMTY2NHEtMjYgMC00NC0xOGwtNjI0LTYwMnEtMTAtOC0yNy41LTI2dC01NS41LTY1LjUtNjgtOTcuNS01My41LTEyMS0yMy41LTEzOHEwLTIyMCAxMjctMzQ0dDM1MS0xMjRxNjIgMCAxMjYuNSAyMS41dDEyMCA1OCA5NS41IDY4LjUgNzYgNjhxMzYtMzYgNzYtNjh0OTUuNS02OC41IDEyMC01OCAxMjYuNS0yMS41cTIyNCAwIDM1MSAxMjR0MTI3IDM0NHEwIDIyMS0yMjkgNDUwbC02MjMgNjAwcS0xOCAxOC00NCAxOHoiIGZpbGw9IiNlYTRhYWEiLz48L3N2Zz4=); - background-repeat: no-repeat; - background-size: contain; - padding-left: 20px; - height: 0.9em; - display: inline-block; -} - -@media (prefers-color-scheme: dark) { - @media screen { - html { - background-color: #333; - color: #fff; - } - - body { - color: #fff; - } - - h1 { - background-color: #555453; - color: #fff; - } - - .container { - background-color: #333; - box-shadow: 0 0 60px #0c0c0c; - } - - .containerrightfixed { - background-color: #3D3C3C; - border-left: solid 1px #515050; - } - - .containerrightfixed h1 { - background-color: #484747; - } - - .overview tr:hover { - background-color: #2E2D2C; - } - - .overview th { - background-color: #444; - border: solid 1px #3B3A39; - } - - .overview thead th { - background-color: #444; - } - - .overview th a { - color: #fff; - color: rgba(255, 255, 255, 0.95); - } - - .overview th a:hover { - color: #0078d4; - } - - .overview td { - border: solid 1px #3B3A39; - } - - .overview .coverage td { - border: none; - } - - .stripped tr:nth-child(2n+1) { - background-color: #3c3c3c; - } - - input, select { - background-color: #333; - color: #fff; - border: 1px solid #A19F9D; - } - - a { - color: #fff; - color: rgba(255, 255, 255, 0.95); - } - - a:hover { - color: #0078d4; - } - - h1 a.back { - background-color: #4a4846; - } - - h1 a.button { - color: #fff; - background-color: #565656; - border-color: #c1c1c1; - } - - h1 a.button:hover { - background-color: #8d8d8d; - } - - .gray { - background-color: #484747; - } - - .lightgray { - color: #ebebeb; - } - - .lightgraybg { - background-color: #474747; - } - - .lightgreen { - background-color: #406540; - } - - .lightorange { - background-color: #ab7f36; - } - - .lightred { - background-color: #954848; - } - - .ct-label { - color: #fff !important; - } - - .ct-grid { - stroke: #fff !important; - } - - .ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point { - stroke: #0078D4 !important; - } - - .ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point { - stroke: #6dc428 !important; - } - - .linecoverage { - background-color: #0078D4; - } - - .branchcoverage { - background-color: #6dc428; - } - - .tinylinecoveragechart, .tinybranchcoveragechart { - background-color: #333; - } - - .tinybranchcoveragechart .ct-series.ct-series-a .ct-line { - stroke: #6dc428 !important; - } - - .icon-down-dir { - background-image: url(icon_down-dir_active_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE0MDggNzA0cTAgMjYtMTkgNDVsLTQ0OCA0NDhxLTE5IDE5LTQ1IDE5dC00NS0xOWwtNDQ4LTQ0OHEtMTktMTktMTktNDV0MTktNDUgNDUtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6Ii8+PC9zdmc+); - } - - .icon-info-circled { - background-image: url(icon_info-circled_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9Ijg5NiIgY3k9Ijg5NiIgcj0iNzUwIiBmaWxsPSIjZmZmIiAvPjxwYXRoIGZpbGw9IiMyOEE1RkYiIGQ9Ik0xMTUyIDEzNzZ2LTE2MHEwLTE0LTktMjN0LTIzLTloLTk2di01MTJxMC0xNC05LTIzdC0yMy05aC0zMjBxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloOTZ2MzIwaC05NnEtMTQgMC0yMyA5dC05IDIzdjE2MHEwIDE0IDkgMjN0MjMgOWg0NDhxMTQgMCAyMy05dDktMjN6bS0xMjgtODk2di0xNjBxMC0xNC05LTIzdC0yMy05aC0xOTJxLTE0IDAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMtOXQ5LTIzem02NDAgNDE2cTAgMjA5LTEwMyAzODUuNXQtMjc5LjUgMjc5LjUtMzg1LjUgMTAzLTM4NS41LTEwMy0yNzkuNS0yNzkuNS0xMDMtMzg1LjUgMTAzLTM4NS41IDI3OS41LTI3OS41IDM4NS41LTEwMyAzODUuNSAxMDMgMjc5LjUgMjc5LjUgMTAzIDM4NS41eiIvPjwvc3ZnPg==); - } - - .icon-plus { - background-image: url(icon_plus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE2MDAgNzM2djE5MnEwIDQwLTI4IDY4dC02OCAyOGgtNDE2djQxNnEwIDQwLTI4IDY4dC02OCAyOGgtMTkycS00MCAwLTY4LTI4dC0yOC02OHYtNDE2aC00MTZxLTQwIDAtNjgtMjh0LTI4LTY4di0xOTJxMC00MCAyOC02OHQ2OC0yOGg0MTZ2LTQxNnEwLTQwIDI4LTY4dDY4LTI4aDE5MnE0MCAwIDY4IDI4dDI4IDY4djQxNmg0MTZxNDAgMCA2OCAyOHQyOCA2OHoiLz48L3N2Zz4=); - } - - .icon-minus { - background-image: url(icon_minus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTE2MDAgNzM2djE5MnEwIDQwLTI4IDY4dC02OCAyOGgtMTIxNnEtNDAgMC02OC0yOHQtMjgtNjh2LTE5MnEwLTQwIDI4LTY4dDY4LTI4aDEyMTZxNDAgMCA2OCAyOHQyOCA2OHoiLz48L3N2Zz4=); - } - - .icon-wrench { - background-image: url(icon_wrench_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JEQkRCRiIgZD0iTTQ0OCAxNDcycTAtMjYtMTktNDV0LTQ1LTE5LTQ1IDE5LTE5IDQ1IDE5IDQ1IDQ1IDE5IDQ1LTE5IDE5LTQ1em02NDQtNDIwbC02ODIgNjgycS0zNyAzNy05MCAzNy01MiAwLTkxLTM3bC0xMDYtMTA4cS0zOC0zNi0zOC05MCAwLTUzIDM4LTkxbDY4MS02ODFxMzkgOTggMTE0LjUgMTczLjV0MTczLjUgMTE0LjV6bTYzNC00MzVxMCAzOS0yMyAxMDYtNDcgMTM0LTE2NC41IDIxNy41dC0yNTguNSA4My41cS0xODUgMC0zMTYuNS0xMzEuNXQtMTMxLjUtMzE2LjUgMTMxLjUtMzE2LjUgMzE2LjUtMTMxLjVxNTggMCAxMjEuNSAxNi41dDEwNy41IDQ2LjVxMTYgMTEgMTYgMjh0LTE2IDI4bC0yOTMgMTY5djIyNGwxOTMgMTA3cTUtMyA3OS00OC41dDEzNS41LTgxIDcwLjUtMzUuNXExNSAwIDIzLjUgMTB0OC41IDI1eiIvPjwvc3ZnPg==); - } - - .icon-fork { - background-image: url(icon_fork_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTY3MiAxNDcycTAtNDAtMjgtNjh0LTY4LTI4LTY4IDI4LTI4IDY4IDI4IDY4IDY4IDI4IDY4LTI4IDI4LTY4em0wLTExNTJxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTY0MCAxMjhxMC00MC0yOC02OHQtNjgtMjgtNjggMjgtMjggNjggMjggNjggNjggMjggNjgtMjggMjgtNjh6bTk2IDBxMCA1Mi0yNiA5Ni41dC03MCA2OS41cS0yIDI4Ny0yMjYgNDE0LTY3IDM4LTIwMyA4MS0xMjggNDAtMTY5LjUgNzF0LTQxLjUgMTAwdjI2cTQ0IDI1IDcwIDY5LjV0MjYgOTYuNXEwIDgwLTU2IDEzNnQtMTM2IDU2LTEzNi01Ni01Ni0xMzZxMC01MiAyNi05Ni41dDcwLTY5LjV2LTgyMHEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnEwIDUyLTI2IDk2LjV0LTcwIDY5LjV2NDk3cTU0LTI2IDE1NC01NyA1NS0xNyA4Ny41LTI5LjV0NzAuNS0zMSA1OS0zOS41IDQwLjUtNTEgMjgtNjkuNSA4LjUtOTEuNXEtNDQtMjUtNzAtNjkuNXQtMjYtOTYuNXEwLTgwIDU2LTEzNnQxMzYtNTYgMTM2IDU2IDU2IDEzNnoiLz48L3N2Zz4=); - } - - .icon-cube { - background-image: url(icon_cube_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTg5NiAxNjI5bDY0MC0zNDl2LTYzNmwtNjQwIDIzM3Y3NTJ6bS02NC04NjVsNjk4LTI1NC02OTgtMjU0LTY5OCAyNTR6bTgzMi0yNTJ2NzY4cTAgMzUtMTggNjV0LTQ5IDQ3bC03MDQgMzg0cS0yOCAxNi02MSAxNnQtNjEtMTZsLTcwNC0zODRxLTMxLTE3LTQ5LTQ3dC0xOC02NXYtNzY4cTAtNDAgMjMtNzN0NjEtNDdsNzA0LTI1NnEyMi04IDQ0LTh0NDQgOGw3MDQgMjU2cTM4IDE0IDYxIDQ3dDIzIDczeiIvPjwvc3ZnPg==); - } - - .icon-search-plus { - background-image: url(icon_search-plus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTEwODggODAwdjY0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC0yMjR2MjI0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC02NHEtMTMgMC0yMi41LTkuNXQtOS41LTIyLjV2LTIyNGgtMjI0cS0xMyAwLTIyLjUtOS41dC05LjUtMjIuNXYtNjRxMC0xMyA5LjUtMjIuNXQyMi41LTkuNWgyMjR2LTIyNHEwLTEzIDkuNS0yMi41dDIyLjUtOS41aDY0cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2MjI0aDIyNHExMyAwIDIyLjUgOS41dDkuNSAyMi41em0xMjggMzJxMC0xODUtMTMxLjUtMzE2LjV0LTMxNi41LTEzMS41LTMxNi41IDEzMS41LTEzMS41IDMxNi41IDEzMS41IDMxNi41IDMxNi41IDEzMS41IDMxNi41LTEzMS41IDEzMS41LTMxNi41em01MTIgODMycTAgNTMtMzcuNSA5MC41dC05MC41IDM3LjVxLTU0IDAtOTAtMzhsLTM0My0zNDJxLTE3OSAxMjQtMzk5IDEyNC0xNDMgMC0yNzMuNS01NS41dC0yMjUtMTUwLTE1MC0yMjUtNTUuNS0yNzMuNSA1NS41LTI3My41IDE1MC0yMjUgMjI1LTE1MCAyNzMuNS01NS41IDI3My41IDU1LjUgMjI1IDE1MCAxNTAgMjI1IDU1LjUgMjczLjVxMCAyMjAtMTI0IDM5OWwzNDMgMzQzcTM3IDM3IDM3IDkweiIvPjwvc3ZnPg==); - } - - .icon-search-minus { - background-image: url(icon_search-minus_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHdpZHRoPSIxNzkyIiBoZWlnaHQ9IjE3OTIiIHZpZXdCb3g9IjAgMCAxNzkyIDE3OTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0JGQkZDMCIgZD0iTTEwODggODAwdjY0cTAgMTMtOS41IDIyLjV0LTIyLjUgOS41aC01NzZxLTEzIDAtMjIuNS05LjV0LTkuNS0yMi41di02NHEwLTEzIDkuNS0yMi41dDIyLjUtOS41aDU3NnExMyAwIDIyLjUgOS41dDkuNSAyMi41em0xMjggMzJxMC0xODUtMTMxLjUtMzE2LjV0LTMxNi41LTEzMS41LTMxNi41IDEzMS41LTEzMS41IDMxNi41IDEzMS41IDMxNi41IDMxNi41IDEzMS41IDMxNi41LTEzMS41IDEzMS41LTMxNi41em01MTIgODMycTAgNTMtMzcuNSA5MC41dC05MC41IDM3LjVxLTU0IDAtOTAtMzhsLTM0My0zNDJxLTE3OSAxMjQtMzk5IDEyNC0xNDMgMC0yNzMuNS01NS41dC0yMjUtMTUwLTE1MC0yMjUtNTUuNS0yNzMuNSA1NS41LTI3My41IDE1MC0yMjUgMjI1LTE1MCAyNzMuNS01NS41IDI3My41IDU1LjUgMjI1IDE1MCAxNTAgMjI1IDU1LjUgMjczLjVxMCAyMjAtMTI0IDM5OWwzNDMgMzQzcTM3IDM3IDM3IDkweiIvPjwvc3ZnPg==); - } - - .icon-star { - background-image: url(icon_star_dark.svg), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTc5MiIgaGVpZ2h0PSIxNzkyIiB2aWV3Qm94PSIwIDAgMTc5MiAxNzkyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNzI4IDY0N3EwIDIyLTI2IDQ4bC0zNjMgMzU0IDg2IDUwMHExIDcgMSAyMCAwIDIxLTEwLjUgMzUuNXQtMzAuNSAxNC41cS0xOSAwLTQwLTEybC00NDktMjM2LTQ0OSAyMzZxLTIyIDEyLTQwIDEyLTIxIDAtMzEuNS0xNC41dC0xMC41LTM1LjVxMC02IDItMjBsODYtNTAwLTM2NC0zNTRxLTI1LTI3LTI1LTQ4IDAtMzcgNTYtNDZsNTAyLTczIDIyNS00NTVxMTktNDEgNDktNDF0NDkgNDFsMjI1IDQ1NSA1MDIgNzNxNTYgOSA1NiA0NnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=); - } - } -} - -.ct-double-octave:after,.ct-major-eleventh:after,.ct-major-second:after,.ct-major-seventh:after,.ct-major-sixth:after,.ct-major-tenth:after,.ct-major-third:after,.ct-major-twelfth:after,.ct-minor-second:after,.ct-minor-seventh:after,.ct-minor-sixth:after,.ct-minor-third:after,.ct-octave:after,.ct-perfect-fifth:after,.ct-perfect-fourth:after,.ct-square:after{content:"";clear:both}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-grid-background,.ct-line{fill:none}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{dominant-baseline:central}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-donut-solid,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-donut-solid,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-donut-solid,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-donut-solid,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-donut-solid,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-donut-solid,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-donut-solid,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-donut-solid,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-donut-solid,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-donut-solid,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-donut-solid,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-donut-solid,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-donut-solid,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-donut-solid,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-donut-solid,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{display:table}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{display:table}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{display:table}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{display:table}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{display:table}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{display:table}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{display:table}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{display:table}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{display:table}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{display:table}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{display:table}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{display:table}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{display:table}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{display:table}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{display:table}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{display:table}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/report/run-coverlet-local.cmd b/report/run-coverlet-local.cmd deleted file mode 100644 index e251ca37..00000000 --- a/report/run-coverlet-local.cmd +++ /dev/null @@ -1,18 +0,0 @@ -rem Run this in a CommandPrompt, not in PowerShell. - -SET buildType=azure-pipelines-ci -SET testproject=..\test\System.Linq.Dynamic.Core.Tests.Net6\System.Linq.Dynamic.Core.Tests.Net6.csproj - -del coverage.info -del coverage.opencover.xml -del /q coverlet\*.* - -dotnet clean %testproject% - -dotnet build %testproject% -c Debug -f net6.0 - -dotnet test %testproject% -c Debug -f net6.0 --logger trx /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput="../../report/" - -%USERPROFILE%\.nuget\packages\ReportGenerator\4.8.13\tools\net5.0\ReportGenerator.exe -reports:"coverage.opencover.xml" -targetdir:"coverlet" - -start coverlet\index.htm diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/BasicQueryable.xml b/web/DynamicLinqWebDocs/App_Data/Classes/BasicQueryable.xml deleted file mode 100644 index 5be301fc..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/BasicQueryable.xml +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - Provides a set of **static** methods for querying data structures that implement `IQueryable`. - The purpose of this class is to mimic several basic methods implemented by the standard `System.Linq.IQueryable<T>`, but that work with `IQueryable`. - - - - - Returns a specified number of contiguous elements from the start of a sequence. - `Take` enumerates *source* and *yields* elements until *count* elements have been yielded or *source* contains no more elements. If *count* is less than or equal to zero, *source* is not enumerated and an empty `IQueryable` is returned. - A `IQueryable` that contains the specified number of elements from the start of `source`. - - - The sequence to return elements from. - - - The number of elements to return. - - - - - The following code example demonstrates how to use `Take(IQueryable, Int32)` to return elements from the start of a sequence. - int[] grades = { 59, 82, 70, 56, 92, 98, 85 }; - -// Sort the grades in descending order and take the first three. -IEnumerable<int> topThreeGrades = - grades.AsQueryable().OrderByDescending(grade => grade).Take(3); - -Console.WriteLine("The top three grades are:"); -foreach (int grade in topThreeGrades) - Console.WriteLine(grade); - -/* - This code produces the following output: - - The top three grades are: - 98 - 92 - 85 -*/ - - - - - - Bypasses a specified number of elements in a sequence and then returns the remaining elements. - A `IQueryable` that contains elements that occur after the specified index in the input sequence. - - - The sequence to return elements from. - - - The number of elements to skip before returning the remaining elements. - - - - - The following code example demonstrates how to use `Skip(IQueryable, Int32)` to skip a specified number of elements in a sorted array and return the remaining elements. - int[] grades = { 59, 82, 70, 56, 92, 98, 85 }; - -// Sort the grades in descending order get all except the first three. -IEnumerable<int> lowerGrades = - grades.AsQueryable().OrderByDescending(grade => grade).Skip(3); - -Console.WriteLine("All grades except the top three are:"); -foreach (int grade in topThreeGrades) - Console.WriteLine(grade); - -/* - This code produces the following output: - - All grades except the top three are: - 82 - 70 - 59 - 56 -*/ - - - - - - Inverts the order of the elements in a sequence. - A `IQueryable` whose elements correspond to those of the input sequence in reverse order. - - - A sequence of values to reverse. - - - - - The following code example demonstrates how to use `Reverse(IQueryable)` to reverse the order of elements in an array. - char[] apple = { 'a', 'p', 'p', 'l', 'e' }; - -// Reverse the order of the characters in the collection. -IQueryable query = apple.AsQueryable(); -IQueryable reversed = query.Reverse(); - -foreach (char chr in reversed) - Console.Write(chr + " "); -Console.WriteLine(); - -/* - This code produces the following output: - - e l p p a -*/ - - - - - - Determines whether a sequence contains any elements. - `true` if the source sequence contains any elements; otherwise, `false`. - - - A sequence to check for being empty. - - - - - The following code example demonstrates how to use `Any(IQueryable)` to determine whether a sequence contains any elements. - List<int> numbers = new List<int> { 1, 2 }; - -// Determine if the list contains any elements. -bool hasElements = numbers.AsQueryable().Any(); - -Console.WriteLine("The list {0} empty.", - hasElements ? "is not" : "is"); - -// This code produces the following output: -// -// The list is not empty. - - - - - - Computes the sum of a sequence of numeric values. - The sum of the values in the sequence. - - - A sequence of numeric values to calculate the sum of. - - - - - - Returns the number of elements in a sequence. - The number of elements in the input sequence. - - - The `IQueryable` that contains the elements to be counted. - - - - - The following code example demonstrates how to use `Count(IQueryable)` to count the elements in a sequence. - string[] fruits = { "apple", "banana", "mango", -"orange", "passionfruit", "grape" }; - -int numberOfFruits = fruits.AsQueryable().Count(); - -Console.WriteLine( - "There are {0} items in the array.", - numberOfFruits); - -// This code produces the following output: -// -// There are 6 items in the array. - - - - - - Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. - The single element of the input sequence. - - - A `IQueryable` to return the single element of. - - - - - - Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. - The single element of the input sequence. - - - A `IQueryable` to return the single element of. - - - - - - Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. - The single element of the input sequence, or `null` if the sequence contains no elements. - - - A `IQueryable` to return the single element of. - - - - - - Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. - The single element of the input sequence, or `null` if the sequence contains no elements. - - - A `IQueryable` to return the single element of. - - - - - - Returns the first element of a sequence. - The first element in source. - - - A `IQueryable` to return the first element of. - - - - - - Returns the first element of a sequence. - The first element in source. - - - A `IQueryable` to return the first element of. - - - - - - Returns the first element of a sequence, or a default value if the sequence contains no elements. - `null` if source is empty; otherwise, the first element in *source*. - - - A `IQueryable` to return the first element of. - - - - - - Returns the first element of a sequence, or a default value if the sequence contains no elements. - `null` if source is empty; otherwise, the first element in *source*. - - - A `IQueryable` to return the first element of. - - - - - - Returns the last element of a sequence. - The last element in source. - - - A `IQueryable` to return the last element of. - - - - - - Returns the last element of a sequence. - The last element in source. - - - A `IQueryable` to return the last element of. - - - - - - Returns the last element of a sequence, or a default value if the sequence contains no elements. - `null` if source is empty; otherwise, the last element in *source*. - - - A `IQueryable` to return the last element of. - - - - - - Returns the last element of a sequence, or a default value if the sequence contains no elements. - `null` if source is empty; otherwise, the last element in *source*. - - - A `IQueryable` to return the last element of. - - - - - - Returns the input typed as `IEnumerable<T>` of `object`. - The input typed as `IEnumerable<T>` of `object`. - - - The sequence to type as `IEnumerable<T>` of `object`. - - - - - - Returns the input typed as `IEnumerable<T>` of `dynamic`. - The input typed as `IEnumerable<T>` of `dynamic`. - - - The sequence to type as `IEnumerable<T>` of `dynamic`. - - - - - - Creates an array of `dynamic` `objects` from a `IEnumerable`. - An array that contains the elements from the input sequence. - - - A `IQueryable` to create an array from. - - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/DefaultDynamicLinqCustomTypeProvider.xml b/web/DynamicLinqWebDocs/App_Data/Classes/DefaultDynamicLinqCustomTypeProvider.xml deleted file mode 100644 index d6d529c7..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/DefaultDynamicLinqCustomTypeProvider.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - The default `IDynamicLinkCustomTypeProvider`. Scans the current `AppDomain` for all types marked with `DynamicLinqTypeAttribute`, and adds them as custom Dynamic Link types. - - - Returns a list of custom types that Dynamic Linq will understand. - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/DynamicLinqType.xml b/web/DynamicLinqWebDocs/App_Data/Classes/DynamicLinqType.xml deleted file mode 100644 index 1adfa5d6..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/DynamicLinqType.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type. Use only when `GlobalConfig.CustomTypeProvider` is set to `DefaultDynamicLinqCustomTypeProvider`. - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/DynamicQueryable.xml b/web/DynamicLinqWebDocs/App_Data/Classes/DynamicQueryable.xml deleted file mode 100644 index a5c7820c..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/DynamicQueryable.xml +++ /dev/null @@ -1,723 +0,0 @@ - - - - - - Provides a set of **static** methods for querying data structures that implement `IQueryable`. It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated, or when downstream components only return column names to sort and filter by. - - - - - Filters a sequence of values based on a predicate. - A `IQueryable<TSource>` that contains elements from the input sequence that satisfy the condition specified by predicate. - - - A `IQueryable` to filter. - - - An expression string to test each element for a condition. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - The following is an example of a *basic value* used in the `Where` string expression to filter a sequence. - List<string> fruits = - new List<string> { "apple", "passionfruit", "banana", "mango", - "orange", "blueberry", "grape", "strawberry" }; - -// Get all strings whose length is less than 6. -IEnumerable query = fruits.AsQueryable().Where("fruit.Length < 6"); - -foreach (string fruit in query) - Console.WriteLine(fruit); - -/* - This code produces the following output: - - apple - mango - grape -*/ - - - The following is an example of a *static argument value* used in the `Where` string expression to filter a sequence. - IEnumerable<string> query = fruits.AsQueryable().Where("fruit.Length < @0", 1); - - - The following is an example of a *variable argument value* used in the `Where` string expression to filter a sequence. - int someValue = 6; - -IEnumerable<string> query = fruits.AsQueryable().Where("fruit.Length < @0", someValue); - - - - - - Filters a sequence of values based on a predicate. - A `IQueryable` that contains elements from the input sequence that satisfy the condition specified by predicate. - - - A `IQueryable` to filter. - - - An expression string to test each element for a condition. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - The following is an example of a *basic value* used in the `Where` string expression to filter a sequence. - List<string> fruits = - new List<string> { "apple", "passionfruit", "banana", "mango", - "orange", "blueberry", "grape", "strawberry" }; - -// Get all strings whose length is less than 6. -IEnumerable query = fruits.AsQueryable().Where("fruit.Length < 6"); - -foreach (string fruit in query) - Console.WriteLine(fruit); - -/* - This code produces the following output: - - apple - mango - grape -*/ - - - The following is an example of a *static argument value* used in the `Where` string expression to filter a sequence. - IEnumerable<string> query = fruits.AsQueryable().Where("fruit.Length < @0", 1); - - - The following is an example of a *variable argument value* used in the `Where` string expression to filter a sequence. - int someValue = 6; - -IEnumerable<string> query = fruits.AsQueryable().Where("fruit.Length < @0", someValue); - - - - - - Projects each element of a sequence into a new form. - An `IQueryable` whose elements are the result of invoking a projection string on each element of *source*. - - - A sequence of values to project. - - - A projection string expression to apply to each element. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - The following code example demonstrates how to use `Select` to project over a sequence of values, using the `it` keyword. - List<int> range = - new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; - -// Project the square of each int value. -IEnumerable squares = - range.AsQueryable().Select("it * it"); - -foreach (int num in squares) - Console.WriteLine(num); - -/* - This code produces the following output: - - 1 - 4 - 9 - 16 - 25 - 36 - 49 - 64 - 81 - 100 -*/ - List<int> range = - new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; - -// Project the square of each int value. -IEnumerable<int> squares = - range.AsQueryable().Select(x => x * x); - -foreach (int num in squares) - Console.WriteLine(num); - -/* - This code produces the following output: - - 1 - 4 - 9 - 16 - 25 - 36 - 49 - 64 - 81 - 100 -*/ - - - The following code example demonstrates how to use `Select` to project a single field and a group of fields over a sequence of values. - class ExampleClass -{ - public string StringProperty1 { get; set; } - public string StringProperty2 { get; set; } -} - -//Select a single field -var singleField = qry.Select("StringProperty"); - -//Select a group of fields -var dynamicObject = qry.Select("new (StringProperty1, StringProperty2 as OtherStringPropertyName)"); - - - - - - Projects each element of a sequence to an `IQueryable` and combines the resulting sequences into one sequence. - An `IQueryable` whose elements are the result of invoking a one-to-many projection function on each element of the input sequence. - - - A sequence of values to project. - - - A projection string expression to apply to each element. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - The following code example demonstrates how to use `SelectMany` to perform a one-to-many projection over an array. - class PetOwner -{ - public string Name { get; set; } - public List<String> Pets { get; set; } -} - -public static void SelectManyEx1() -{ - PetOwner[] petOwners = - { new PetOwner { Name="Higa, Sidney", - Pets = new List<string>{ "Scruffy", "Sam" } }, - new PetOwner { Name="Ashkenazi, Ronen", - Pets = new List<string>{ "Walker", "Sugar" } }, - new PetOwner { Name="Price, Vernette", - Pets = new List<string>{ "Scratches", "Diesel" } } }; - - // Query using SelectMany(). - IEnumerable query1 = - petOwners.AsQueryable().SelectMany("Pets"); - - Console.WriteLine("Using SelectMany():"); - - // Only one foreach loop is required to iterate through the - // results because it is a one-dimensional collection. - foreach (string pet in query1) - Console.WriteLine(pet); - - // This code shows how to use Select() instead of SelectMany(). - IEnumerable query2 = - petOwners.AsQueryable().Select("Pets"); - - Console.WriteLine("\nUsing Select():"); - - // Notice that two foreach loops are required to iterate through - // the results because the query returns a collection of arrays. - foreach (IEnumerable petList in query2) - { - foreach (string pet in petList) - { - Console.WriteLine(pet); - } - Console.WriteLine(); - } -} - -/* - This code produces the following output: - - Using SelectMany(): - Scruffy - Sam - Walker - Sugar - Scratches - Diesel - - Using Select(): - Scruffy - Sam - - Walker - Sugar - - Scratches - Diesel -*/ - - - - - - Sorts the elements of a sequence in ascending order according to a key. - A `IQueryable<T>` whose elements are sorted according to the specified **ordering**. - - - A sequence of values to order. - - - An expression string to indicate values to order by. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - var result = list.OrderBy("NumberProperty, StringProperty DESC"); - - - - - - Sorts the elements of a sequence in ascending order according to a key. - A `IQueryable` whose elements are sorted according to the specified **ordering**. - - - A sequence of values to order. - - - An expression string to indicate values to order by. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way `String.Format` formats strings. - - - - - var result = list.OrderBy("NumberProperty, StringProperty DESC"); - - - - - - Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. - A `IQueryable` where each element represents a projection over a group and its key. - - - A `IQueryable` whose elements to group. - - - A string expression to specify the key for each element. - - - A string expression to specify a result value from each group. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way String.Format formats strings. - - - - - The following is an example of a simple `GroupBy`. - var groupResult = qry.GroupBy("NumberPropertyAsKey", "StringProperty"); - - - The following is an example of a `GroupBy` using multiple key fields and multiple grouped fields. - var groupResult = qry.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)"); - - - - - - Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. - A `IQueryable` where each element represents a projection over a group and its key. - - - A `IQueryable` whose elements to group. - - - A string expression to specify the key for each element. - - - A string expression to specify a result value from each group. - - - - - The following is an example of a simple `GroupBy`. - var groupResult = qry.GroupBy("NumberPropertyAsKey", "StringProperty"); - - - The following is an example of a `GroupBy` using multiple key fields and multiple grouped fields. - var groupResult = qry.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)"); - - - - - - Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. - A `IQueryable` where each element represents a projection over a group and its key. - - - A `IQueryable` whose elements to group. - - - A string expression to specify the key for each element. - - - An object array that contains zero or more objects to insert into the predicate as parameters. Similiar to the way String.Format formats strings. - - - - - The following is an example of a simple `GroupBy`. - var groupResult = qry.GroupBy("NumberPropertyAsKey", "StringProperty"); - - - The following is an example of a `GroupBy` using multiple key fields and multiple grouped fields. - var groupResult = qry.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)"); - - - - - - Groups the elements of a sequence according to a specified key string function and creates a result value from each group and its key. - A `IQueryable` where each element represents a projection over a group and its key. - - - A `IQueryable` whose elements to group. - - - A string expression to specify the key for each element. - - - - - The following is an example of a simple `GroupBy`. - var groupResult = qry.GroupBy("NumberPropertyAsKey", "StringProperty"); - - - The following is an example of a `GroupBy` using multiple key fields and multiple grouped fields. - var groupResult = qry.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)"); - - - - - - Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. - A `IEnumerable<GroupResult>` where each element represents a projection over a group, its key, and its subgroups. - - - A `IEnumerable<TElement>` whose elements to group. - - - `string` expressions to specify the keys for each element. - - - - - - Groups the elements of a sequence according to multiple specified key string functions and creates a result value from each group (and subgroups) and its key. - A `IEnumerable<GroupResult>` where each element represents a projection over a group, its key, and its subgroups. - - - A `IEnumerable<TElement>` whose elements to group. - - - Lambda expressions to specify the keys for each element. - - - - - - Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. - An `IQueryable` obtained by performing an inner join on two sequences. - - - The first sequence to join. - - - The sequence to join to the first sequence. - - - A dynamic function to extract the join key from each element of the first sequence. - - - A dynamic function to extract the join key from each element of the second sequence. - - - A dynamic function to create a result element from two matching elements. - - - An object array that contains zero or more objects to insert into the predicates as parameters. Similiar to the way String.Format formats strings. - - - - - The following code example demonstrates how to use `Join` to perform an inner join of two sequences based on a common key using Dynamic LINQ. - class Person -{ - public string Name { get; set; } -} - -class Pet -{ - public string Name { get; set; } - public Person Owner { get; set; } -} - -public static void JoinEx1() -{ - Person magnus = new Person { Name = "Hedlund, Magnus" }; - Person terry = new Person { Name = "Adams, Terry" }; - Person charlotte = new Person { Name = "Weiss, Charlotte" }; - - Pet barley = new Pet { Name = "Barley", Owner = terry }; - Pet boots = new Pet { Name = "Boots", Owner = terry }; - Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte }; - Pet daisy = new Pet { Name = "Daisy", Owner = magnus }; - - List<Person> people = new List<Person> { magnus, terry, charlotte }; - List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy }; - - // Join the list of Person objects and the list of Pet objects - // to create a list of person-pet pairs where each element is - // an anonymous type that contains the name of pet and the name - // of the person that owns the pet. - var query = people.AsQueryable().Join( - pets, - "it", - "Owner", - "new(outer.Name as OwnerName, inner.Name as Pet)"; - - - foreach (var obj in query) - { - Console.WriteLine( - "{0} - {1}", - obj.OwnerName, - obj.Pet); - } -} - -/* - This code produces the following output: - - Hedlund, Magnus - Daisy - Adams, Terry - Barley - Adams, Terry - Boots - Weiss, Charlotte - Whiskers -*/ - class Person -{ - public string Name { get; set; } -} - -class Pet -{ - public string Name { get; set; } - public Person Owner { get; set; } -} - -public static void JoinEx1() -{ - Person magnus = new Person { Name = "Hedlund, Magnus" }; - Person terry = new Person { Name = "Adams, Terry" }; - Person charlotte = new Person { Name = "Weiss, Charlotte" }; - - Pet barley = new Pet { Name = "Barley", Owner = terry }; - Pet boots = new Pet { Name = "Boots", Owner = terry }; - Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte }; - Pet daisy = new Pet { Name = "Daisy", Owner = magnus }; - - List<Person> people = new List<Person> { magnus, terry, charlotte }; - List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy }; - - // Join the list of Person objects and the list of Pet objects - // to create a list of person-pet pairs where each element is - // an anonymous type that contains the name of pet and the name - // of the person that owns the pet. - var query = people.AsQueryable().Join( - pets, - person => person, - pet => pet.Owner, - (person, pet) => - new { OwnerName = person.Name, Pet = pet.Name }); - - foreach (var obj in query) - { - Console.WriteLine( - "{0} - {1}", - obj.OwnerName, - obj.Pet); - } -} - -/* - This code produces the following output: - - Hedlund, Magnus - Daisy - Adams, Terry - Barley - Adams, Terry - Boots - Weiss, Charlotte - Whiskers -*/ - - - - - - Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. - This `Join` overload only works on elements where both sequences and the resulting element match. - An `IQueryable<TElement>` obtained by performing an inner join on two sequences. - - - The first sequence to join. - - - The sequence to join to the first sequence. - - - A dynamic function to extract the join key from each element of the first sequence. - - - A dynamic function to extract the join key from each element of the second sequence. - - - A dynamic function to create a result element from two matching elements. - - - An object array that contains zero or more objects to insert into the predicates as parameters. Similiar to the way String.Format formats strings. - - - - - The following code example demonstrates how to use `Join` to perform an inner join of two sequences based on a common key using Dynamic LINQ. - class Person -{ - public string Name { get; set; } -} - -class Pet -{ - public string Name { get; set; } - public Person Owner { get; set; } -} - -public static void JoinEx1() -{ - Person magnus = new Person { Name = "Hedlund, Magnus" }; - Person terry = new Person { Name = "Adams, Terry" }; - Person charlotte = new Person { Name = "Weiss, Charlotte" }; - - Pet barley = new Pet { Name = "Barley", Owner = terry }; - Pet boots = new Pet { Name = "Boots", Owner = terry }; - Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte }; - Pet daisy = new Pet { Name = "Daisy", Owner = magnus }; - - List<Person> people = new List<Person> { magnus, terry, charlotte }; - List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy }; - - // Join the list of Person objects and the list of Pet objects - // to create a list of person-pet pairs where each element is - // an anonymous type that contains the name of pet and the name - // of the person that owns the pet. - var query = people.AsQueryable().Join( - pets, - "it", - "Owner", - "new(outer.Name as OwnerName, inner.Name as Pet)"; - - - foreach (var obj in query) - { - Console.WriteLine( - "{0} - {1}", - obj.OwnerName, - obj.Pet); - } -} - -/* - This code produces the following output: - - Hedlund, Magnus - Daisy - Adams, Terry - Barley - Adams, Terry - Boots - Weiss, Charlotte - Whiskers -*/ - class Person -{ - public string Name { get; set; } -} - -class Pet -{ - public string Name { get; set; } - public Person Owner { get; set; } -} - -public static void JoinEx1() -{ - Person magnus = new Person { Name = "Hedlund, Magnus" }; - Person terry = new Person { Name = "Adams, Terry" }; - Person charlotte = new Person { Name = "Weiss, Charlotte" }; - - Pet barley = new Pet { Name = "Barley", Owner = terry }; - Pet boots = new Pet { Name = "Boots", Owner = terry }; - Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte }; - Pet daisy = new Pet { Name = "Daisy", Owner = magnus }; - - List<Person> people = new List<Person> { magnus, terry, charlotte }; - List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy }; - - // Join the list of Person objects and the list of Pet objects - // to create a list of person-pet pairs where each element is - // an anonymous type that contains the name of pet and the name - // of the person that owns the pet. - var query = people.AsQueryable().Join( - pets, - person => person, - pet => pet.Owner, - (person, pet) => - new { OwnerName = person.Name, Pet = pet.Name }); - - foreach (var obj in query) - { - Console.WriteLine( - "{0} - {1}", - obj.OwnerName, - obj.Pet); - } -} - -/* - This code produces the following output: - - Hedlund, Magnus - Daisy - Adams, Terry - Barley - Adams, Terry - Boots - Weiss, Charlotte - Whiskers -*/ - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/GlobalConfig.xml b/web/DynamicLinqWebDocs/App_Data/Classes/GlobalConfig.xml deleted file mode 100644 index 6257c0e3..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/GlobalConfig.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Static configuration class for Dynamic Linq. - `GlobalConfig` is a static class for setting `AppDomain` level settings for the *Dynamic Linq Library*. - - - Gets or sets the `IDynamicLinkCustomTypeProvider`. - A value that determines how custom types for Dynamic Linq are provided. The default value is set to `DefaultDynamicLinqCustomTypeProvider`. - - - Determines if the context keywords (`it`, `parent`, and `root`) are valid and usable inside a Dynamic Linq string expression. Does not affect the usability of the equivalent context symbols (`$`, `^` and `~`). - The default value is `true`. - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/GroupResult.xml b/web/DynamicLinqWebDocs/App_Data/Classes/GroupResult.xml deleted file mode 100644 index 44985c19..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/GroupResult.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - The result of a call to `DynamicQueryable.GroupByMany()`. - - - The key value of the group. - - - The key value of the group. - - - The number of resulting elements in the group. - - - The resulting elements in the group. - - - The resulting subgroups in the group. - - - - - Returns a string showing the key of the group and the number of items in the group. - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/IDynamicLinkCustomTypeProvider.xml b/web/DynamicLinqWebDocs/App_Data/Classes/IDynamicLinkCustomTypeProvider.xml deleted file mode 100644 index 282a643f..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/IDynamicLinkCustomTypeProvider.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - Interface for providing custom types for Dynamic Linq. - - - Returns a list of custom types that Dynamic Linq will understand. - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Classes/ParseException.xml b/web/DynamicLinqWebDocs/App_Data/Classes/ParseException.xml deleted file mode 100644 index 7fbbe979..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Classes/ParseException.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - Represents errors that occur while parsing dynamic linq string expressions. - - - Gives the character index in the expression string at which the parsing error occurred. - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/DynLINQDoc.xsd b/web/DynamicLinqWebDocs/App_Data/DynLINQDoc.xsd deleted file mode 100644 index d53dee00..00000000 --- a/web/DynamicLinqWebDocs/App_Data/DynLINQDoc.xsd +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - This is the top-level container element for every DynLINQDoc xml file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Expressions.xml b/web/DynamicLinqWebDocs/App_Data/Expressions.xml deleted file mode 100644 index 98bd76c4..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Expressions.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Computes the sum of a sequence of values. - - - The following is an example of a `Sum` expression. - int[] initValues = new int[] { 1, 2, 3, 4, 5 }; var qry = initValues .AsQueryable() .Select(x => new { strValue = "str", intValue = x }) .GroupBy(x => x.strValue); var result = qry.Select("Sum(intValue)"); - int[] initValues = new int[] { 1, 2, 3, 4, 5 }; var qry = initValues .AsQueryable() .Select(x => new { strValue = "str", intValue = x }) .GroupBy(x => x.strValue); var result = qry.Sum(x => x.intValue); - - - - - - Determines whether a sequence contains a specified element. - Compare to [`in`][0] keyword. - - [0]: /Keywords/In - - - The following code example demonstrates how to use the `Contains` expression to determine whether a sequence contains a specific element. - var testQuery = baseQuery.Where("@0.Contains(UserName)", containsList).Select("Id"); - - - - - - Returns the first element of a sequence. - - - - Returns the first element of a sequence, or a default value if the sequence contains no elements. - - - - Returns the last element of a sequence. - - - - Returns the last element of a sequence, or a default value if the sequence contains no elements. - - - - Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. - - - - Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. - - - - Projects each element of a sequence into a new form. - - - - Filters a sequence of values based on a predicate. - - - - Sorts the elements of a sequence in ascending order according to a key. - - - - Sorts the elements of a sequence in descending order according to a key. - - - - The expression language permits explicit conversions (or type casting) using the syntax `type(expr)`, where *type* is a type name optionally followed by `?` and *expr* is an expression. - This syntax may be used to perform the following conversions: - -- Between two types provided `Type.IsAssignableFrom` is true in one or both directions. -- Between two types provided one or both are interface types. -- Between the nullable and non-nullable forms of any value type. -- Between any two types belonging to the set consisting of `SByte`, `Byte`, `Int16`, `UInt16`, `Int32`, `UInt32`, `Int64`, `UInt64`, `Decimal`, `Single`, `Double`, `Char`, any *enum* type, as well as the *nullable* forms of those types. - - - The following is an example of a *Conversion* expression. - public class SimpleValuesModel -{ - public float FloatValue { get; set; } - - public decimal DecimalValue { get; set; } -} - -var models = new SimpleValuesModel[] { - new SimpleValuesModel() { - FloatValue = 2, - DecimalValue = 3 - } - }.AsQueryable(); - -var result = models - .Select("Decimal(FloatValue) * DecimalValue").First(); - public class SimpleValuesModel -{ - public float FloatValue { get; set; } - - public decimal DecimalValue { get; set; } -} - -var models = new SimpleValuesModel[] { - new SimpleValuesModel() { - FloatValue = 2, - DecimalValue = 3 - } - }.AsQueryable(); - -var result = models - .Select(x => (Decimal)x.FloatValue * DecimalValue).First(); - - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Data/Keywords.xml b/web/DynamicLinqWebDocs/App_Data/Keywords.xml deleted file mode 100644 index 5635fb3a..00000000 --- a/web/DynamicLinqWebDocs/App_Data/Keywords.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - `it` is a context keyword that allows a string expression to reference the current data element being referenced. - You can use the equivalent symbol `$` instead of `it`. - -All context keywords (`it`, `parent`, and `root`) can be disabled by setting `GlobalConfig`.[`AreContextKeywordsEnabled`][0] to `false`. - -[0]: /Library/GlobalConfig/Property-AreContextKeywordsEnabled - - - The following example shows how to use the `it` keyword. - var baseQuery = new int[] { 1, 2, 3, 4, 5 }.AsQueryable(); - -//Using the it keyword in a select statement -var result1 = baseQuery.Select("it * $"); - -//Using the it keyword in a where statement -var result2 = baseQuery.Where("it % 2 = 0"); - - - - - - `parent` is a context keyword that allows a string expression to reference the parent of the current data element being referenced. - You can use the equivalent symbol `^` instead of `parent`. - -All context keywords (`it`, `parent`, and `root`) can be disabled by setting `GlobalConfig`.[`AreContextKeywordsEnabled`][0] to `false`. - -[0]: /Library/GlobalConfig/Property-AreContextKeywordsEnabled - - - - `root` is a context keyword that allows a string expression to reference the root data element. - You can use the equivalent symbol `~` instead of `root`. - -All context keywords (`it`, `parent`, and `root`) can be disabled by setting `GlobalConfig`.[`AreContextKeywordsEnabled`][0] to `false`. - -[0]: /Library/GlobalConfig/Property-AreContextKeywordsEnabled - - - - `new` allows for the creation of anonymous types. - Equivalent to the `new { Amount = 108, Message = "Hello" }` construct in c#. - - - The following example demonstrates how to use `new` in a string expression. - "new(108 as Amount, \"Hello\" as Message)" - new { Amount = 108, Message = "Hello" } - - - - - - `iif` is used to create an inline if statement. - - - The following example how to use the `iif` keyword. - var baseQuery = new int[] { 1, 2, 3, 4, 5 }.AsQueryable(); - -var result = baseQuery.Select("iif(it % 2 = 0, true, false)"); - var baseQuery = new int[] { 1, 2, 3, 4, 5 }.AsQueryable(); - -var result = baseQuery.Select(x => x % 2 == 0 ? true : false); - - - - - - `in` is used to determines whether a sequence contains a specified element. - - Compare to [`Contains`][0] Expression Method. - - [0]: /Expressions/Contains - - - - The following example demonstrates how to use the `in` keyword to determine whether a sequence contains a specific element. - var rangeOfNumbers = Enumerable.Range(1, 100).ToArray(); - -//Use a fixed set of numbers to test for -var result1 = rangeOfNumbers.AsQueryable().Where("it in (2,4,6,8)").ToArray(); - -//Use a variable set of numbers to test for -var values = new int[] { 2, 4, 6, 8 }; -var result2 = rangeOfNumbers.AsQueryable().Where("it in @0", values).ToArray(); - - - - - - \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/App_Start/BundleConfig.cs b/web/DynamicLinqWebDocs/App_Start/BundleConfig.cs deleted file mode 100644 index b6c87989..00000000 --- a/web/DynamicLinqWebDocs/App_Start/BundleConfig.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Web.Optimization; - -namespace DynamicLinqWebDocs -{ - public class BundleConfig - { - // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 - public static void RegisterBundles(BundleCollection bundles) - { - bundles.Add(new ScriptBundle("~/bundles/js").Include( - "~/Scripts/jquery-{version}.js", - "~/Scripts/sunlight-{version}.js", - "~/Scripts/jquery.reject.js", - "~/Scripts/bootstrap.js", - "~/Scripts/respond.js", - "~/Scripts/site.js")); - - bundles.Add(new StyleBundle("~/Content/css").Include( - "~/Content/bootstrap.css", - "~/Content/bootstrap-theme.css", - "~/Content/sunlight.default-{version}.css", - "~/Content/jquery.reject.css", - "~/Content/site.css")); - } - } -} diff --git a/web/DynamicLinqWebDocs/App_Start/FilterConfig.cs b/web/DynamicLinqWebDocs/App_Start/FilterConfig.cs deleted file mode 100644 index 1247228e..00000000 --- a/web/DynamicLinqWebDocs/App_Start/FilterConfig.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Web.Mvc; - -namespace DynamicLinqWebDocs -{ - public class FilterConfig - { - public static void RegisterGlobalFilters(GlobalFilterCollection filters) - { - filters.Add(new HandleErrorAttribute()); - -#if !DEBUG - //Cache all pages for 15 minutes - filters.Add(new OutputCacheAttribute() { Duration = 900 }); -#endif - } - } -} diff --git a/web/DynamicLinqWebDocs/App_Start/RouteConfig.cs b/web/DynamicLinqWebDocs/App_Start/RouteConfig.cs deleted file mode 100644 index 1c1d2b92..00000000 --- a/web/DynamicLinqWebDocs/App_Start/RouteConfig.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Web.Mvc; -using System.Web.Mvc.Routing; -using System.Web.Routing; -using DynamicLinqWebDocs.Infrastructure; - -namespace DynamicLinqWebDocs -{ - public class RouteConfig - { - public static void RegisterRoutes(RouteCollection routes) - { - routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - - var constraintsResolver = new DefaultInlineConstraintResolver(); - constraintsResolver.ConstraintMap.Add("Enum", typeof(EnumRouteConstraint)); - - routes.MapMvcAttributeRoutes(constraintsResolver); - - - //routes.MapRoute( - // name: "", - // url: "docs/expression/{name}", - // defaults: new { controller = "Docs", action = "Expression" } - // ); - - - - //routes.MapRoute( - // name: "", - // url: "Classes", - // defaults: new { controller = "Class", action = "Index" } - // ); - - //routes.MapRoute( - // name: "", - // url: "Classes/{className}/{methodName}/{framework}", - // defaults: new { controller = "Class", action = "ClassMethod", methodName = UrlParameter.Optional, framework = Frameworks.NotSet } - // ); - - //routes.MapRoute( - // name: "", - // url: "Expressions", - // defaults: new { controller = "Expression", action = "Index" } - // ); - - //routes.MapRoute( - // name: "", - // url: "Expressions/{expressionName}", - // defaults: new { controller = "Expression", action = "Expression" } - // ); - - //routes.MapRoute( - // name: "Default", - // url: "{action}/{id}", - // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } - // ); - } - } -} diff --git a/web/DynamicLinqWebDocs/Content/Browsers/browser_chrome.gif b/web/DynamicLinqWebDocs/Content/Browsers/browser_chrome.gif deleted file mode 100644 index 596de8a5..00000000 Binary files a/web/DynamicLinqWebDocs/Content/Browsers/browser_chrome.gif and /dev/null differ diff --git a/web/DynamicLinqWebDocs/Content/Browsers/browser_firefox.gif b/web/DynamicLinqWebDocs/Content/Browsers/browser_firefox.gif deleted file mode 100644 index 2151fb67..00000000 Binary files a/web/DynamicLinqWebDocs/Content/Browsers/browser_firefox.gif and /dev/null differ diff --git a/web/DynamicLinqWebDocs/Content/Browsers/browser_msie.gif b/web/DynamicLinqWebDocs/Content/Browsers/browser_msie.gif deleted file mode 100644 index d5484751..00000000 Binary files a/web/DynamicLinqWebDocs/Content/Browsers/browser_msie.gif and /dev/null differ diff --git a/web/DynamicLinqWebDocs/Content/Browsers/browser_safari.gif b/web/DynamicLinqWebDocs/Content/Browsers/browser_safari.gif deleted file mode 100644 index 58512548..00000000 Binary files a/web/DynamicLinqWebDocs/Content/Browsers/browser_safari.gif and /dev/null differ diff --git a/web/DynamicLinqWebDocs/Content/Site.css b/web/DynamicLinqWebDocs/Content/Site.css deleted file mode 100644 index 1f555944..00000000 --- a/web/DynamicLinqWebDocs/Content/Site.css +++ /dev/null @@ -1,64 +0,0 @@ -body { - padding-top: 50px; - padding-bottom: 20px; - background-color: lightgray; - position: relative; -} - -/* Set padding to keep content from hitting the edges */ -.body-content { - padding-top: 10px; - padding-bottom: 10px; - /*padding-left: 15px; - padding-right: 15px;*/ - background-color: white; - border-radius: 0 0 6px 6px; - box-shadow: 0px 0px 8px 5px darkgray; -} - -.body-footer { - padding-top: 15px; -} - -/* Remove IE Selection Border */ -textarea, -input, -a, -a:hover, -a:active, -a:focus -{ - outline: 0px!important; -} - - -/*Fix Issues with bootstrap and Sunlight for code snippets*/ -pre { - padding: 0; - border: none; - background-color: white; -} - -.sunlight-code-container { - padding: 4px; - border-radius: 3px; -} - -/*Correction for jReject popup background color */ -#jr_inner { - background-color: #F5F5F5; -} - -/*Correction for custom google search*/ -.gsc-control-cse { - width: 245px !important; - padding-bottom: 0 !important; - padding-right: 0 !important; - background-color: transparent !important; - border: none !important; -} - -section { - padding-top:50px; - margin-top:-50px; -} \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/Content/bootstrap-theme.css b/web/DynamicLinqWebDocs/Content/bootstrap-theme.css deleted file mode 100644 index ebe57fbf..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap-theme.css +++ /dev/null @@ -1,587 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default.disabled, -.btn-primary.disabled, -.btn-success.disabled, -.btn-info.disabled, -.btn-warning.disabled, -.btn-danger.disabled, -.btn-default[disabled], -.btn-primary[disabled], -.btn-success[disabled], -.btn-info[disabled], -.btn-warning[disabled], -.btn-danger[disabled], -fieldset[disabled] .btn-default, -fieldset[disabled] .btn-primary, -fieldset[disabled] .btn-success, -fieldset[disabled] .btn-info, -fieldset[disabled] .btn-warning, -fieldset[disabled] .btn-danger { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/web/DynamicLinqWebDocs/Content/bootstrap-theme.css.map b/web/DynamicLinqWebDocs/Content/bootstrap-theme.css.map deleted file mode 100644 index 21e19101..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap-theme.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;GAIG;ACeH;;;;;;EAME,yCAAA;EC2CA,4FAAA;EACQ,oFAAA;CFvDT;ACgBC;;;;;;;;;;;;ECsCA,yDAAA;EACQ,iDAAA;CFxCT;ACMC;;;;;;;;;;;;;;;;;;ECiCA,yBAAA;EACQ,iBAAA;CFnBT;AC/BD;;;;;;EAuBI,kBAAA;CDgBH;ACyBC;;EAEE,uBAAA;CDvBH;AC4BD;EErEI,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;EAuC2C,0BAAA;EAA2B,mBAAA;CDjBvE;ACpBC;;EAEE,0BAAA;EACA,6BAAA;CDsBH;ACnBC;;EAEE,0BAAA;EACA,sBAAA;CDqBH;ACfG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6BL;ACbD;EEtEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8DD;AC5DC;;EAEE,0BAAA;EACA,6BAAA;CD8DH;AC3DC;;EAEE,0BAAA;EACA,sBAAA;CD6DH;ACvDG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqEL;ACpDD;EEvEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsGD;ACpGC;;EAEE,0BAAA;EACA,6BAAA;CDsGH;ACnGC;;EAEE,0BAAA;EACA,sBAAA;CDqGH;AC/FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6GL;AC3FD;EExEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ID;AC5IC;;EAEE,0BAAA;EACA,6BAAA;CD8IH;AC3IC;;EAEE,0BAAA;EACA,sBAAA;CD6IH;ACvIG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqJL;AClID;EEzEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsLD;ACpLC;;EAEE,0BAAA;EACA,6BAAA;CDsLH;ACnLC;;EAEE,0BAAA;EACA,sBAAA;CDqLH;AC/KG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6LL;ACzKD;EE1EI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ND;AC5NC;;EAEE,0BAAA;EACA,6BAAA;CD8NH;AC3NC;;EAEE,0BAAA;EACA,sBAAA;CD6NH;ACvNG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqOL;AC1MD;;EClCE,mDAAA;EACQ,2CAAA;CFgPT;ACrMD;;EE3FI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF0FF,0BAAA;CD2MD;ACzMD;;;EEhGI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFgGF,0BAAA;CD+MD;ACtMD;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EH+HA,mBAAA;ECjEA,4FAAA;EACQ,oFAAA;CF8QT;ACjND;;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,yDAAA;EACQ,iDAAA;CFwRT;AC9MD;;EAEE,+CAAA;CDgND;AC5MD;EEhII,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EHkJA,mBAAA;CDkND;ACrND;;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,wDAAA;EACQ,gDAAA;CF+ST;AC/ND;;EAYI,0CAAA;CDuNH;AClND;;;EAGE,iBAAA;CDoND;AC/LD;EAfI;;;IAGE,YAAA;IE7JF,yEAAA;IACA,oEAAA;IACA,8FAAA;IAAA,uEAAA;IACA,4BAAA;IACA,uHAAA;GH+WD;CACF;AC3MD;EACE,8CAAA;EC3HA,2FAAA;EACQ,mFAAA;CFyUT;ACnMD;EEtLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+MD;AC1MD;EEvLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuND;ACjND;EExLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+ND;ACxND;EEzLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuOD;ACxND;EEjMI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH4ZH;ACrND;EE3MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHmaH;AC3ND;EE5MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH0aH;ACjOD;EE7MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHibH;ACvOD;EE9MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHwbH;AC7OD;EE/MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH+bH;AChPD;EElLI,8MAAA;EACA,yMAAA;EACA,sMAAA;CHqaH;AC5OD;EACE,mBAAA;EC9KA,mDAAA;EACQ,2CAAA;CF6ZT;AC7OD;;;EAGE,8BAAA;EEnOE,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFiOF,sBAAA;CDmPD;ACxPD;;;EAQI,kBAAA;CDqPH;AC3OD;ECnME,kDAAA;EACQ,0CAAA;CFibT;ACrOD;EE5PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHoeH;AC3OD;EE7PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH2eH;ACjPD;EE9PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHkfH;ACvPD;EE/PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHyfH;AC7PD;EEhQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHggBH;ACnQD;EEjQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHugBH;ACnQD;EExQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFsQF,sBAAA;EC3NA,0FAAA;EACQ,kFAAA;CFqeT","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css b/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css deleted file mode 100644 index dc95d8e4..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css.map b/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css.map deleted file mode 100644 index 2c6b65af..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap-theme.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":";;;;AAmBA,YAAA,aAAA,UAAA,aAAA,aAAA,aAME,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBDvCR,mBAAA,mBAAA,oBAAA,oBAAA,iBAAA,iBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBCsCA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBDlCR,qBAAA,sBAAA,sBAAA,uBAAA,mBAAA,oBAAA,sBAAA,uBAAA,sBAAA,uBAAA,sBAAA,uBAAA,+BAAA,gCAAA,6BAAA,gCAAA,gCAAA,gCCiCA,mBAAA,KACQ,WAAA,KDlDV,mBAAA,oBAAA,iBAAA,oBAAA,oBAAA,oBAuBI,YAAA,KAyCF,YAAA,YAEE,iBAAA,KAKJ,aErEI,YAAA,EAAA,IAAA,EAAA,KACA,iBAAA,iDACA,iBAAA,4CAAA,iBAAA,qEAEA,iBAAA,+CCnBF,OAAA,+GH4CA,OAAA,0DACA,kBAAA,SAuC2C,aAAA,QAA2B,aAAA,KArCtE,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAgBN,aEtEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAiBN,aEvEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAkBN,UExEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,gBAAA,gBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,iBAAA,iBAEE,iBAAA,QACA,aAAA,QAMA,mBAAA,0BAAA,yBAAA,0BAAA,yBAAA,yBAAA,oBAAA,2BAAA,0BAAA,2BAAA,0BAAA,0BAAA,6BAAA,oCAAA,mCAAA,oCAAA,mCAAA,mCAME,iBAAA,QACA,iBAAA,KAmBN,aEzEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAoBN,YE1EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,kBAAA,kBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAMA,qBAAA,4BAAA,2BAAA,4BAAA,2BAAA,2BAAA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,+BAAA,sCAAA,qCAAA,sCAAA,qCAAA,qCAME,iBAAA,QACA,iBAAA,KA2BN,eAAA,WClCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBD2CV,0BAAA,0BE3FI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GF0FF,kBAAA,SAEF,yBAAA,+BAAA,+BEhGI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GFgGF,kBAAA,SASF,gBE7GI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SH+HA,cAAA,ICjEA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBD6DV,sCAAA,oCE7GI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD0EV,cAAA,iBAEE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEhII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SHkJA,cAAA,IAHF,sCAAA,oCEhII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDgFV,8BAAA,iCAYI,YAAA,EAAA,KAAA,EAAA,gBAKJ,qBAAA,kBAAA,mBAGE,cAAA,EAqBF,yBAfI,mDAAA,yDAAA,yDAGE,MAAA,KE7JF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UFqKJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC3HA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBDsIV,eEtLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAKF,YEvLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAMF,eExLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAOF,cEzLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAeF,UEjMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuMJ,cE3MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFwMJ,sBE5MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyMJ,mBE7MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0MJ,sBE9MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2MJ,qBE/MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,sBElLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKFyLJ,YACE,cAAA,IC9KA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDgLV,wBAAA,8BAAA,8BAGE,YAAA,EAAA,KAAA,EAAA,QEnOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiOF,aAAA,QALF,+BAAA,qCAAA,qCAQI,YAAA,KAUJ,OCnME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBD4MV,8BE5PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyPJ,8BE7PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0PJ,8BE9PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2PJ,2BE/PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4PJ,8BEhQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6PJ,6BEjQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoQJ,MExQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsQF,aAAA,QC3NA,mBAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA"} \ No newline at end of file diff --git a/web/DynamicLinqWebDocs/Content/bootstrap.css b/web/DynamicLinqWebDocs/Content/bootstrap.css deleted file mode 100644 index 42c79d6e..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap.css +++ /dev/null @@ -1,6760 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover, -a.text-primary:focus { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: .01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control::-ms-expand { - background-color: transparent; - border: 0; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #eee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 11px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #fff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #fff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #fff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #fff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #fff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: middle; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - padding-right: 15px; - padding-left: 15px; - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - filter: alpha(opacity=0); - opacity: 0; - - line-break: auto; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-style: normal; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - - line-break: auto; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - background-color: rgba(0, 0, 0, 0); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/web/DynamicLinqWebDocs/Content/bootstrap.css.map b/web/DynamicLinqWebDocs/Content/bootstrap.css.map deleted file mode 100644 index 09f8cda7..00000000 --- a/web/DynamicLinqWebDocs/Content/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,iBAAA;CH8O9C;AG7OmC;EAAW,iBAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EErDA,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNqkCD;AIxgCD;EACE,UAAA;CJ0gCD;AIpgCD;EACE,uBAAA;CJsgCD;AIlgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CPglCD;AItgCD;EACE,mBAAA;CJwgCD;AIlgCD;EACE,aAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CPgmCD;AIlgCD;EACE,mBAAA;CJogCD;AI9/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJggCD;AIx/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJ0/BD;AIl/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJo/BH;AIz+BD;EACE,gBAAA;CJ2+BD;AQloCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR8oCD;AQnpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRoqCH;AQhqCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRqqCD;AQzqCD;;;;;;;;;;;;EAQI,eAAA;CR+qCH;AQ5qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRirCD;AQrrCD;;;;;;;;;;;;EAQI,eAAA;CR2rCH;AQvrCD;;EAAU,gBAAA;CR2rCT;AQ1rCD;;EAAU,gBAAA;CR8rCT;AQ7rCD;;EAAU,gBAAA;CRisCT;AQhsCD;;EAAU,gBAAA;CRosCT;AQnsCD;;EAAU,gBAAA;CRusCT;AQtsCD;;EAAU,gBAAA;CR0sCT;AQpsCD;EACE,iBAAA;CRssCD;AQnsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRqsCD;AQhsCD;EAwOA;IA1OI,gBAAA;GRssCD;CACF;AQ9rCD;;EAEE,eAAA;CRgsCD;AQ7rCD;;EAEE,0BAAA;EACA,cAAA;CR+rCD;AQ3rCD;EAAuB,iBAAA;CR8rCtB;AQ7rCD;EAAuB,kBAAA;CRgsCtB;AQ/rCD;EAAuB,mBAAA;CRksCtB;AQjsCD;EAAuB,oBAAA;CRosCtB;AQnsCD;EAAuB,oBAAA;CRssCtB;AQnsCD;EAAuB,0BAAA;CRssCtB;AQrsCD;EAAuB,0BAAA;CRwsCtB;AQvsCD;EAAuB,2BAAA;CR0sCtB;AQvsCD;EACE,eAAA;CRysCD;AQvsCD;ECrGE,eAAA;CT+yCD;AS9yCC;;EAEE,eAAA;CTgzCH;AQ3sCD;ECxGE,eAAA;CTszCD;ASrzCC;;EAEE,eAAA;CTuzCH;AQ/sCD;EC3GE,eAAA;CT6zCD;AS5zCC;;EAEE,eAAA;CT8zCH;AQntCD;EC9GE,eAAA;CTo0CD;ASn0CC;;EAEE,eAAA;CTq0CH;AQvtCD;ECjHE,eAAA;CT20CD;AS10CC;;EAEE,eAAA;CT40CH;AQvtCD;EAGE,YAAA;EE3HA,0BAAA;CVm1CD;AUl1CC;;EAEE,0BAAA;CVo1CH;AQztCD;EE9HE,0BAAA;CV01CD;AUz1CC;;EAEE,0BAAA;CV21CH;AQ7tCD;EEjIE,0BAAA;CVi2CD;AUh2CC;;EAEE,0BAAA;CVk2CH;AQjuCD;EEpIE,0BAAA;CVw2CD;AUv2CC;;EAEE,0BAAA;CVy2CH;AQruCD;EEvIE,0BAAA;CV+2CD;AU92CC;;EAEE,0BAAA;CVg3CH;AQpuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRsuCD;AQ9tCD;;EAEE,cAAA;EACA,oBAAA;CRguCD;AQnuCD;;;;EAMI,iBAAA;CRmuCH;AQ5tCD;EACE,gBAAA;EACA,iBAAA;CR8tCD;AQ1tCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR6tCD;AQ/tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR6tCH;AQxtCD;EACE,cAAA;EACA,oBAAA;CR0tCD;AQxtCD;;EAEE,wBAAA;CR0tCD;AQxtCD;EACE,kBAAA;CR0tCD;AQxtCD;EACE,eAAA;CR0tCD;AQjsCD;EA6EA;IAvFM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXs6CC;EQ9nCH;IAhFM,mBAAA;GRitCH;CACF;AQxsCD;;EAGE,aAAA;EACA,kCAAA;CRysCD;AQvsCD;EACE,eAAA;EA9IqB,0BAAA;CRw1CtB;AQrsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRusCD;AQlsCG;;;EACE,iBAAA;CRssCL;AQhtCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRksCH;AQhsCG;;;EACE,uBAAA;CRosCL;AQ5rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR8rCD;AQxrCG;;;;;;EAAW,YAAA;CRgsCd;AQ/rCG;;;;;;EACE,uBAAA;CRssCL;AQhsCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRksCD;AYx+CD;;;;EAIE,+DAAA;CZ0+CD;AYt+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZw+CD;AYp+CD;EACE,iBAAA;EACA,eAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZs+CD;AY5+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZs+CH;AYj+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;CZm+CD;AY9+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZk+CH;AY79CD;EACE,kBAAA;EACA,mBAAA;CZ+9CD;AazhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd+hDD;AazhDC;EAqEF;IAvEI,aAAA;Gb+hDD;CACF;Aa3hDC;EAkEF;IApEI,aAAA;GbiiDD;CACF;Aa7hDD;EA+DA;IAjEI,cAAA;GbmiDD;CACF;Aa1hDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdojDD;AavhDD;ECvBE,mBAAA;EACA,oBAAA;CdijDD;AejjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfijDL;AejiDG;EACE,YAAA;CfmiDL;Ae5hDC;EACE,YAAA;Cf8hDH;Ae/hDC;EACE,oBAAA;CfiiDH;AeliDC;EACE,oBAAA;CfoiDH;AeriDC;EACE,WAAA;CfuiDH;AexiDC;EACE,oBAAA;Cf0iDH;Ae3iDC;EACE,oBAAA;Cf6iDH;Ae9iDC;EACE,WAAA;CfgjDH;AejjDC;EACE,oBAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,WAAA;CfyjDH;Ae1jDC;EACE,oBAAA;Cf4jDH;Ae7jDC;EACE,mBAAA;Cf+jDH;AejjDC;EACE,YAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,oBAAA;CfyjDH;Ae1jDC;EACE,WAAA;Cf4jDH;Ae7jDC;EACE,oBAAA;Cf+jDH;AehkDC;EACE,oBAAA;CfkkDH;AenkDC;EACE,WAAA;CfqkDH;AetkDC;EACE,oBAAA;CfwkDH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBsrED;AgBzrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,2BAAA;ChBsrEP;AgBpsED;EAoBI,uBAAA;EACA,8BAAA;ChBmrEH;AgBxsED;;;;;;EA8BQ,cAAA;ChBkrEP;AgBhtED;EAoCI,2BAAA;ChB+qEH;AgBntED;EAyCI,uBAAA;ChB6qEH;AgBtqED;;;;;;EAOQ,aAAA;ChBuqEP;AgB5pED;EACE,uBAAA;ChB8pED;AgB/pED;;;;;;EAQQ,uBAAA;ChB+pEP;AgBvqED;;EAeM,yBAAA;ChB4pEL;AgBlpED;EAEI,0BAAA;ChBmpEH;AgB1oED;EAEI,0BAAA;ChB2oEH;AgBloED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBooED;AgB/nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBkoEL;AiB9wEC;;;;;;;;;;;;EAOI,0BAAA;CjBqxEL;AiB/wEC;;;;;EAMI,0BAAA;CjBgxEL;AiBnyEC;;;;;;;;;;;;EAOI,0BAAA;CjB0yEL;AiBpyEC;;;;;EAMI,0BAAA;CjBqyEL;AiBxzEC;;;;;;;;;;;;EAOI,0BAAA;CjB+zEL;AiBzzEC;;;;;EAMI,0BAAA;CjB0zEL;AiB70EC;;;;;;;;;;;;EAOI,0BAAA;CjBo1EL;AiB90EC;;;;;EAMI,0BAAA;CjB+0EL;AiBl2EC;;;;;;;;;;;;EAOI,0BAAA;CjBy2EL;AiBn2EC;;;;;EAMI,0BAAA;CjBo2EL;AgBltED;EACE,iBAAA;EACA,kBAAA;ChBotED;AgBvpED;EACA;IA3DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,uBAAA;GhBqtED;EgB9pEH;IAnDM,iBAAA;GhBotEH;EgBjqEH;;;;;;IA1CY,oBAAA;GhBmtET;EgBzqEH;IAlCM,UAAA;GhB8sEH;EgB5qEH;;;;;;IAzBY,eAAA;GhB6sET;EgBprEH;;;;;;IArBY,gBAAA;GhBitET;EgB5rEH;;;;IARY,iBAAA;GhB0sET;CACF;AkBp6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBm6ED;AkBh6ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBk6ED;AkB/5ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBi6ED;AkBt5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL63ET;AkBt5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBw5ED;AkBr5ED;EACE,eAAA;ClBu5ED;AkBn5ED;EACE,eAAA;EACA,YAAA;ClBq5ED;AkBj5ED;;EAEE,aAAA;ClBm5ED;AkB/4ED;;;EZvEE,qBAAA;EAEA,2CAAA;EACA,qBAAA;CN09ED;AkB/4ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClBi5ED;AkBv3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CL0zET;AmBl8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CL27ET;AK15EC;EACE,YAAA;EACA,WAAA;CL45EH;AK15EC;EAA0B,YAAA;CL65E3B;AK55EC;EAAgC,YAAA;CL+5EjC;AkBn4EC;EACE,UAAA;EACA,8BAAA;ClBq4EH;AkB73EC;;;EAGE,0BAAA;EACA,WAAA;ClB+3EH;AkB53EC;;EAEE,oBAAA;ClB83EH;AkB13EC;EACE,aAAA;ClB43EH;AkBh3ED;EACE,yBAAA;ClBk3ED;AkB10ED;EAtBI;;;;IACE,kBAAA;GlBs2EH;EkBn2EC;;;;;;;;IAEE,kBAAA;GlB22EH;EkBx2EC;;;;;;;;IAEE,kBAAA;GlBg3EH;CACF;AkBt2ED;EACE,oBAAA;ClBw2ED;AkBh2ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBk2ED;AkBv2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBm2EH;AkBh2ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBk2ED;AkB/1ED;;EAEE,iBAAA;ClBi2ED;AkB71ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClB+1ED;AkB71ED;;EAEE,cAAA;EACA,kBAAA;ClB+1ED;AkBt1EC;;;;;;EAGE,oBAAA;ClB21EH;AkBr1EC;;;;EAEE,oBAAA;ClBy1EH;AkBn1EC;;;;EAGI,oBAAA;ClBs1EL;AkB30ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClB20ED;AkBz0EC;;EAEE,gBAAA;EACA,iBAAA;ClB20EH;AkB9zED;ECnQE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBokFD;AmBlkFC;EACE,aAAA;EACA,kBAAA;CnBokFH;AmBjkFC;;EAEE,aAAA;CnBmkFH;AkB10ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClB20EH;AkBj1ED;EASI,aAAA;EACA,kBAAA;ClB20EH;AkBr1ED;;EAcI,aAAA;ClB20EH;AkBz1ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClB20EH;AkBv0ED;EC/RE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBymFD;AmBvmFC;EACE,aAAA;EACA,kBAAA;CnBymFH;AmBtmFC;;EAEE,aAAA;CnBwmFH;AkBn1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBo1EH;AkB11ED;EASI,aAAA;EACA,kBAAA;ClBo1EH;AkB91ED;;EAcI,aAAA;ClBo1EH;AkBl2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBo1EH;AkB30ED;EAEE,mBAAA;ClB40ED;AkB90ED;EAMI,sBAAA;ClB20EH;AkBv0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBv0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClBy0ED;AkBr0ED;;;;;;;;;;EC1ZI,eAAA;CnB2uFH;AkBj1ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL4rFT;AmB1uFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CLisFT;AkB31ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnB0uFH;AkBh2ED;ECtYI,eAAA;CnByuFH;AkBh2ED;;;;;;;;;;EC7ZI,eAAA;CnBywFH;AkB52ED;ECzZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CL0tFT;AmBxwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL+tFT;AkBt3ED;EC/YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBwwFH;AkB33ED;ECzYI,eAAA;CnBuwFH;AkB33ED;;;;;;;;;;EChaI,eAAA;CnBuyFH;AkBv4ED;EC5ZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwvFT;AmBtyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6vFT;AkBj5ED;EClZI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBsyFH;AkBt5ED;EC5YI,eAAA;CnBqyFH;AkBl5EC;EACE,UAAA;ClBo5EH;AkBl5EC;EACE,OAAA;ClBo5EH;AkB14ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB44ED;AkBzzED;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB23EH;EkBvvEH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlBy3EH;EkB5vEH;IAxHM,sBAAA;GlBu3EH;EkB/vEH;IApHM,sBAAA;IACA,uBAAA;GlBs3EH;EkBnwEH;;;IA9GQ,YAAA;GlBs3EL;EkBxwEH;IAxGM,YAAA;GlBm3EH;EkB3wEH;IApGM,iBAAA;IACA,uBAAA;GlBk3EH;EkB/wEH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB+2EH;EkBtxEH;;IAtFQ,gBAAA;GlBg3EL;EkB1xEH;;IAjFM,mBAAA;IACA,eAAA;GlB+2EH;EkB/xEH;IA3EM,OAAA;GlB62EH;CACF;AkBn2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClBg2EH;AkB32ED;;EAiBI,iBAAA;ClB81EH;AkB/2ED;EJthBE,mBAAA;EACA,oBAAA;Cdw4FD;AkB50EC;EAyBF;IAnCM,kBAAA;IACA,iBAAA;IACA,iBAAA;GlB01EH;CACF;AkB13ED;EAwCI,YAAA;ClBq1EH;AkBv0EC;EAUF;IAdQ,kBAAA;IACA,gBAAA;GlB+0EL;CACF;AkBr0EC;EAEF;IANQ,iBAAA;IACA,gBAAA;GlB60EL;CACF;AoBt6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC0CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB+JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CLiuFT;AoBz6FG;;;;;;EdrBF,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNq8FD;AoB76FC;;;EAGE,YAAA;EACA,sBAAA;CpB+6FH;AoB56FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLo5FT;AoB56FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CL65FT;AoB56FG;;EAEE,qBAAA;CpB86FL;AoBr6FD;EC3DE,YAAA;EACA,uBAAA;EACA,mBAAA;CrBm+FD;AqBj+FC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBm+FP;AqBj+FG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBy+FT;AqBt+FC;;;EAGE,uBAAA;CrBw+FH;AqBn+FG;;;;;;;;;EAGE,uBAAA;EACI,mBAAA;CrB2+FT;AoB19FD;ECZI,YAAA;EACA,uBAAA;CrBy+FH;AoB39FD;EC9DE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB4hGD;AqB1hGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB4hGP;AqB1hGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBkiGT;AqB/hGC;;;EAGE,uBAAA;CrBiiGH;AqB5hGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBoiGT;AoBhhGD;ECfI,eAAA;EACA,uBAAA;CrBkiGH;AoBhhGD;EClEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBqlGD;AqBnlGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBqlGP;AqBnlGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB2lGT;AqBxlGC;;;EAGE,uBAAA;CrB0lGH;AqBrlGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB6lGT;AoBrkGD;ECnBI,eAAA;EACA,uBAAA;CrB2lGH;AoBrkGD;ECtEE,YAAA;EACA,0BAAA;EACA,sBAAA;CrB8oGD;AqB5oGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB8oGP;AqB5oGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBopGT;AqBjpGC;;;EAGE,uBAAA;CrBmpGH;AqB9oGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBspGT;AoB1nGD;ECvBI,eAAA;EACA,uBAAA;CrBopGH;AoB1nGD;EC1EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBusGD;AqBrsGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBusGP;AqBrsGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrB6sGT;AqB1sGC;;;EAGE,uBAAA;CrB4sGH;AqBvsGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrB+sGT;AoB/qGD;EC3BI,eAAA;EACA,uBAAA;CrB6sGH;AoB/qGD;EC9EE,YAAA;EACA,0BAAA;EACA,sBAAA;CrBgwGD;AqB9vGC;;EAEE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGC;EACE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGC;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBgwGP;AqB9vGG;;;;;;;;;EAGE,YAAA;EACA,0BAAA;EACI,sBAAA;CrBswGT;AqBnwGC;;;EAGE,uBAAA;CrBqwGH;AqBhwGG;;;;;;;;;EAGE,0BAAA;EACI,sBAAA;CrBwwGT;AoBpuGD;EC/BI,eAAA;EACA,uBAAA;CrBswGH;AoB/tGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpBiuGD;AoB/tGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLqwGT;AoBhuGC;;;;EAIE,0BAAA;CpBkuGH;AoBhuGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpBkuGH;AoB9tGG;;;;EAEE,eAAA;EACA,sBAAA;CpBkuGL;AoBztGD;;ECxEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBqyGD;AoB5tGD;;EC5EE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrB4yGD;AoB/tGD;;EChFE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBmzGD;AoB9tGD;EACE,eAAA;EACA,YAAA;CpBguGD;AoB5tGD;EACE,gBAAA;CpB8tGD;AoBvtGC;;;EACE,YAAA;CpB2tGH;AuBr3GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLosGT;AuBx3GC;EACE,WAAA;CvB03GH;AuBt3GD;EACE,cAAA;CvBw3GD;AuBt3GC;EAAY,eAAA;CvBy3Gb;AuBx3GC;EAAY,mBAAA;CvB23Gb;AuB13GC;EAAY,yBAAA;CvB63Gb;AuB13GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CL8sGT;AwBx5GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxB05GD;AwBt5GD;;EAEE,mBAAA;CxBw5GD;AwBp5GD;EACE,WAAA;CxBs5GD;AwBl5GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBq5GD;AwBh5GC;EACE,SAAA;EACA,WAAA;CxBk5GH;AwB36GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBu8GD;AwBj7GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBi5GH;AwB34GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB64GH;AwBv4GC;;;EAGE,YAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxBy4GH;AwBh4GC;;;EAGE,eAAA;CxBk4GH;AwB93GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxBg4GH;AwB33GD;EAGI,eAAA;CxB23GH;AwB93GD;EAQI,WAAA;CxBy3GH;AwBj3GD;EACE,WAAA;EACA,SAAA;CxBm3GD;AwB32GD;EACE,QAAA;EACA,YAAA;CxB62GD;AwBz2GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB22GD;AwBv2GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxBy2GD;AwBr2GD;EACE,SAAA;EACA,WAAA;CxBu2GD;AwB/1GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxB+1GH;AwBt2GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxB+1GH;AwB10GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB65GC;EwB11GD;IA1DA,QAAA;IACA,YAAA;GxBu5GC;CACF;A2BviHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3ByiHD;A2B7iHD;;EAMI,mBAAA;EACA,YAAA;C3B2iHH;A2BziHG;;;;;;;;EAIE,WAAA;C3B+iHL;A2BziHD;;;;EAKI,kBAAA;C3B0iHH;A2BriHD;EACE,kBAAA;C3BuiHD;A2BxiHD;;;EAOI,YAAA;C3BsiHH;A2B7iHD;;;EAYI,iBAAA;C3BsiHH;A2BliHD;EACE,iBAAA;C3BoiHD;A2BhiHD;EACE,eAAA;C3BkiHD;A2BjiHC;EClDA,8BAAA;EACG,2BAAA;C5BslHJ;A2BhiHD;;EC/CE,6BAAA;EACG,0BAAA;C5BmlHJ;A2B/hHD;EACE,YAAA;C3BiiHD;A2B/hHD;EACE,iBAAA;C3BiiHD;A2B/hHD;;ECnEE,8BAAA;EACG,2BAAA;C5BsmHJ;A2B9hHD;ECjEE,6BAAA;EACG,0BAAA;C5BkmHJ;A2B7hHD;;EAEE,WAAA;C3B+hHD;A2B9gHD;EACE,kBAAA;EACA,mBAAA;C3BghHD;A2B9gHD;EACE,mBAAA;EACA,oBAAA;C3BghHD;A2B3gHD;EtB/CE,yDAAA;EACQ,iDAAA;CL6jHT;A2B3gHC;EtBnDA,yBAAA;EACQ,iBAAA;CLikHT;A2BxgHD;EACE,eAAA;C3B0gHD;A2BvgHD;EACE,wBAAA;EACA,uBAAA;C3BygHD;A2BtgHD;EACE,wBAAA;C3BwgHD;A2BjgHD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3BkgHH;A2BzgHD;EAcM,YAAA;C3B8/GL;A2B5gHD;;;;EAsBI,iBAAA;EACA,eAAA;C3B4/GH;A2Bv/GC;EACE,iBAAA;C3By/GH;A2Bv/GC;EC3KA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B+pHF;A2Bz/GC;EC/KA,2BAAA;EACC,0BAAA;EAOD,gCAAA;EACC,+BAAA;C5BqqHF;A2B1/GD;EACE,iBAAA;C3B4/GD;A2B1/GD;;EC/KE,8BAAA;EACC,6BAAA;C5B6qHF;A2Bz/GD;EC7LE,2BAAA;EACC,0BAAA;C5ByrHF;A2Br/GD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3Bu/GD;A2B3/GD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3Bw/GH;A2BjgHD;EAYI,YAAA;C3Bw/GH;A2BpgHD;EAgBI,WAAA;C3Bu/GH;A2Bt+GD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3Bu+GL;A6BjtHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BmtHD;A6BhtHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7BktHH;A6B3tHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7B0sHH;A6BxsHG;EACE,WAAA;C7B0sHL;A6BhsHD;;;EV0BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnB2qHD;AmBzqHC;;;EACE,aAAA;EACA,kBAAA;CnB6qHH;AmB1qHC;;;;;;EAEE,aAAA;CnBgrHH;A6BltHD;;;EVqBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBksHD;AmBhsHC;;;EACE,aAAA;EACA,kBAAA;CnBosHH;AmBjsHC;;;;;;EAEE,aAAA;CnBusHH;A6BhuHD;;;EAGE,oBAAA;C7BkuHD;A6BhuHC;;;EACE,iBAAA;C7BouHH;A6BhuHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7BkuHD;A6B7tHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,uBAAA;EACA,mBAAA;C7B+tHD;A6B5tHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B8tHH;A6B5tHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B8tHH;A6BlvHD;;EA0BI,cAAA;C7B4tHH;A6BvtHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;C5Bo0HJ;A6BxtHD;EACE,gBAAA;C7B0tHD;A6BxtHD;;;;;;;EDxGE,6BAAA;EACG,0BAAA;C5By0HJ;A6BztHD;EACE,eAAA;C7B2tHD;A6BttHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BstHD;A6B3tHD;EAUI,mBAAA;C7BotHH;A6B9tHD;EAYM,kBAAA;C7BqtHL;A6BltHG;;;EAGE,WAAA;C7BotHL;A6B/sHC;;EAGI,mBAAA;C7BgtHL;A6B7sHC;;EAGI,WAAA;EACA,kBAAA;C7B8sHL;A8B72HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B+2HD;A8Bl3HD;EAOI,mBAAA;EACA,eAAA;C9B82HH;A8Bt3HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B82HL;A8B72HK;;EAEE,sBAAA;EACA,0BAAA;C9B+2HP;A8B12HG;EACE,eAAA;C9B42HL;A8B12HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9B42HP;A8Br2HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bu2HL;A8Bh5HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBs5HD;A8Bt5HD;EA0DI,gBAAA;C9B+1HH;A8Bt1HD;EACE,8BAAA;C9Bw1HD;A8Bz1HD;EAGI,YAAA;EAEA,oBAAA;C9Bw1HH;A8B71HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bu1HL;A8Bt1HK;EACE,mCAAA;C9Bw1HP;A8Bl1HK;;;EAGE,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,iCAAA;EACA,gBAAA;C9Bo1HP;A8B/0HC;EAqDA,YAAA;EA8BA,iBAAA;C9BgwHD;A8Bn1HC;EAwDE,YAAA;C9B8xHH;A8Bt1HC;EA0DI,mBAAA;EACA,mBAAA;C9B+xHL;A8B11HC;EAgEE,UAAA;EACA,WAAA;C9B6xHH;A8BjxHD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B4xHH;E8B5tHH;IA9DQ,iBAAA;G9B6xHL;CACF;A8Bv2HC;EAuFE,gBAAA;EACA,mBAAA;C9BmxHH;A8B32HC;;;EA8FE,uBAAA;C9BkxHH;A8BpwHD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9BixHH;E8B9uHH;;;IA9BM,0BAAA;G9BixHH;CACF;A8Bl3HD;EAEI,YAAA;C9Bm3HH;A8Br3HD;EAMM,mBAAA;C9Bk3HL;A8Bx3HD;EASM,iBAAA;C9Bk3HL;A8B72HK;;;EAGE,YAAA;EACA,0BAAA;C9B+2HP;A8Bv2HD;EAEI,YAAA;C9Bw2HH;A8B12HD;EAIM,gBAAA;EACA,eAAA;C9By2HL;A8B71HD;EACE,YAAA;C9B+1HD;A8Bh2HD;EAII,YAAA;C9B+1HH;A8Bn2HD;EAMM,mBAAA;EACA,mBAAA;C9Bg2HL;A8Bv2HD;EAYI,UAAA;EACA,WAAA;C9B81HH;A8Bl1HD;EA0DA;IAjEM,oBAAA;IACA,UAAA;G9B61HH;E8B7xHH;IA9DQ,iBAAA;G9B81HL;CACF;A8Bt1HD;EACE,iBAAA;C9Bw1HD;A8Bz1HD;EAKI,gBAAA;EACA,mBAAA;C9Bu1HH;A8B71HD;;;EAYI,uBAAA;C9Bs1HH;A8Bx0HD;EA2BA;IApCM,8BAAA;IACA,2BAAA;G9Bq1HH;E8BlzHH;;;IA9BM,0BAAA;G9Bq1HH;CACF;A8B50HD;EAEI,cAAA;C9B60HH;A8B/0HD;EAKI,eAAA;C9B60HH;A8Bp0HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5BijIF;A+B3iID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B6iID;A+BriID;EA8nBA;IAhoBI,mBAAA;G/B2iID;CACF;A+B5hID;EAgnBA;IAlnBI,YAAA;G/BkiID;CACF;A+BphID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BqhID;A+BnhIC;EACE,iBAAA;C/BqhIH;A+Bz/HD;EA6jBA;IArlBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BqhID;E+BnhIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BqhIH;E+BlhIC;IACE,oBAAA;G/BohIH;E+B/gIC;;;IAGE,gBAAA;IACA,iBAAA;G/BihIH;CACF;A+B7gID;;EAGI,kBAAA;C/B8gIH;A+BzgIC;EAmjBF;;IArjBM,kBAAA;G/BghIH;CACF;A+BvgID;;;;EAII,oBAAA;EACA,mBAAA;C/BygIH;A+BngIC;EAgiBF;;;;IAniBM,gBAAA;IACA,eAAA;G/B6gIH;CACF;A+BjgID;EACE,cAAA;EACA,sBAAA;C/BmgID;A+B9/HD;EA8gBA;IAhhBI,iBAAA;G/BogID;CACF;A+BhgID;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/BkgID;A+B5/HD;EAggBA;;IAlgBI,iBAAA;G/BmgID;CACF;A+BjgID;EACE,OAAA;EACA,sBAAA;C/BmgID;A+BjgID;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BmgID;A+B7/HD;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B+/HD;A+B7/HC;;EAEE,sBAAA;C/B+/HH;A+BxgID;EAaI,eAAA;C/B8/HH;A+Br/HD;EALI;;IAEE,mBAAA;G/B6/HH;CACF;A+Bn/HD;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/Bs/HD;A+Bl/HC;EACE,WAAA;C/Bo/HH;A+BlgID;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/Bk/HH;A+BxgID;EAyBI,gBAAA;C/Bk/HH;A+B5+HD;EAqbA;IAvbI,cAAA;G/Bk/HD;CACF;A+Bz+HD;EACE,oBAAA;C/B2+HD;A+B5+HD;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/B2+HH;A+B/8HC;EA2YF;IAjaM,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/By+HH;E+B9kHH;;IAxZQ,2BAAA;G/B0+HL;E+BllHH;IArZQ,kBAAA;G/B0+HL;E+Bz+HK;;IAEE,uBAAA;G/B2+HP;CACF;A+Bz9HD;EA+XA;IA1YI,YAAA;IACA,UAAA;G/Bw+HD;E+B/lHH;IAtYM,YAAA;G/Bw+HH;E+BlmHH;IApYQ,kBAAA;IACA,qBAAA;G/By+HL;CACF;A+B99HD;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC+vID;AkBzuHD;EAwEA;IAtIM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB2yHH;EkBvqHH;IA/HM,sBAAA;IACA,YAAA;IACA,uBAAA;GlByyHH;EkB5qHH;IAxHM,sBAAA;GlBuyHH;EkB/qHH;IApHM,sBAAA;IACA,uBAAA;GlBsyHH;EkBnrHH;;;IA9GQ,YAAA;GlBsyHL;EkBxrHH;IAxGM,YAAA;GlBmyHH;EkB3rHH;IApGM,iBAAA;IACA,uBAAA;GlBkyHH;EkB/rHH;;IA5FM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlB+xHH;EkBtsHH;;IAtFQ,gBAAA;GlBgyHL;EkB1sHH;;IAjFM,mBAAA;IACA,eAAA;GlB+xHH;EkB/sHH;IA3EM,OAAA;GlB6xHH;CACF;A+BvgIC;EAmWF;IAzWM,mBAAA;G/BihIH;E+B/gIG;IACE,iBAAA;G/BihIL;CACF;A+BhgID;EAoVA;IA5VI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLswIP;CACF;A+BtgID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B60IF;A+BtgID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5B40IF;A+BlgID;EChVE,gBAAA;EACA,mBAAA;ChCq1ID;A+BngIC;ECnVA,iBAAA;EACA,oBAAA;ChCy1ID;A+BpgIC;ECtVA,iBAAA;EACA,oBAAA;ChC61ID;A+B9/HD;EChWE,iBAAA;EACA,oBAAA;ChCi2ID;A+B1/HD;EAsSA;IA1SI,YAAA;IACA,kBAAA;IACA,mBAAA;G/BkgID;CACF;A+Br+HD;EAhBE;IExWA,uBAAA;GjCi2IC;E+Bx/HD;IE5WA,wBAAA;IF8WE,oBAAA;G/B0/HD;E+B5/HD;IAKI,gBAAA;G/B0/HH;CACF;A+Bj/HD;EACE,0BAAA;EACA,sBAAA;C/Bm/HD;A+Br/HD;EAKI,YAAA;C/Bm/HH;A+Bl/HG;;EAEE,eAAA;EACA,8BAAA;C/Bo/HL;A+B7/HD;EAcI,YAAA;C/Bk/HH;A+BhgID;EAmBM,YAAA;C/Bg/HL;A+B9+HK;;EAEE,YAAA;EACA,8BAAA;C/Bg/HP;A+B5+HK;;;EAGE,YAAA;EACA,0BAAA;C/B8+HP;A+B1+HK;;;EAGE,YAAA;EACA,8BAAA;C/B4+HP;A+BphID;EA8CI,mBAAA;C/By+HH;A+Bx+HG;;EAEE,uBAAA;C/B0+HL;A+B3hID;EAoDM,uBAAA;C/B0+HL;A+B9hID;;EA0DI,sBAAA;C/Bw+HH;A+Bj+HK;;;EAGE,0BAAA;EACA,YAAA;C/Bm+HP;A+Bl8HC;EAoKF;IA7LU,YAAA;G/B+9HP;E+B99HO;;IAEE,YAAA;IACA,8BAAA;G/Bg+HT;E+B59HO;;;IAGE,YAAA;IACA,0BAAA;G/B89HT;E+B19HO;;;IAGE,YAAA;IACA,8BAAA;G/B49HT;CACF;A+B9jID;EA8GI,YAAA;C/Bm9HH;A+Bl9HG;EACE,YAAA;C/Bo9HL;A+BpkID;EAqHI,YAAA;C/Bk9HH;A+Bj9HG;;EAEE,YAAA;C/Bm9HL;A+B/8HK;;;;EAEE,YAAA;C/Bm9HP;A+B38HD;EACE,uBAAA;EACA,sBAAA;C/B68HD;A+B/8HD;EAKI,eAAA;C/B68HH;A+B58HG;;EAEE,YAAA;EACA,8BAAA;C/B88HL;A+Bv9HD;EAcI,eAAA;C/B48HH;A+B19HD;EAmBM,eAAA;C/B08HL;A+Bx8HK;;EAEE,YAAA;EACA,8BAAA;C/B08HP;A+Bt8HK;;;EAGE,YAAA;EACA,0BAAA;C/Bw8HP;A+Bp8HK;;;EAGE,YAAA;EACA,8BAAA;C/Bs8HP;A+B9+HD;EA+CI,mBAAA;C/Bk8HH;A+Bj8HG;;EAEE,uBAAA;C/Bm8HL;A+Br/HD;EAqDM,uBAAA;C/Bm8HL;A+Bx/HD;;EA2DI,sBAAA;C/Bi8HH;A+B37HK;;;EAGE,0BAAA;EACA,YAAA;C/B67HP;A+Bt5HC;EAwBF;IAvDU,sBAAA;G/By7HP;E+Bl4HH;IApDU,0BAAA;G/By7HP;E+Br4HH;IAjDU,eAAA;G/By7HP;E+Bx7HO;;IAEE,YAAA;IACA,8BAAA;G/B07HT;E+Bt7HO;;;IAGE,YAAA;IACA,0BAAA;G/Bw7HT;E+Bp7HO;;;IAGE,YAAA;IACA,8BAAA;G/Bs7HT;CACF;A+B9hID;EA+GI,eAAA;C/Bk7HH;A+Bj7HG;EACE,YAAA;C/Bm7HL;A+BpiID;EAsHI,eAAA;C/Bi7HH;A+Bh7HG;;EAEE,YAAA;C/Bk7HL;A+B96HK;;;;EAEE,YAAA;C/Bk7HP;AkC5jJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC8jJD;AkCnkJD;EAQI,sBAAA;ClC8jJH;AkCtkJD;EAWM,kBAAA;EACA,eAAA;EACA,YAAA;ClC8jJL;AkC3kJD;EAkBI,eAAA;ClC4jJH;AmChlJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnCklJD;AmCtlJD;EAOI,gBAAA;CnCklJH;AmCzlJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,uBAAA;EACA,uBAAA;EACA,kBAAA;CnCmlJL;AmCjlJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B8lJJ;AmChlJG;;EPvBF,gCAAA;EACG,6BAAA;C5B2mJJ;AmC3kJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CnC+kJL;AmCzkJG;;;;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC8kJL;AmCroJD;;;;;;EAkEM,eAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;CnC2kJL;AmClkJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpCipJL;AoC/oJG;;ERKF,+BAAA;EACG,4BAAA;C5B8oJJ;AoC9oJG;;ERTF,gCAAA;EACG,6BAAA;C5B2pJJ;AmC7kJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpCiqJL;AoC/pJG;;ERKF,+BAAA;EACG,4BAAA;C5B8pJJ;AoC9pJG;;ERTF,gCAAA;EACG,6BAAA;C5B2qJJ;AqC9qJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrCgrJD;AqCprJD;EAOI,gBAAA;CrCgrJH;AqCvrJD;;EAUM,sBAAA;EACA,kBAAA;EACA,uBAAA;EACA,uBAAA;EACA,oBAAA;CrCirJL;AqC/rJD;;EAmBM,sBAAA;EACA,0BAAA;CrCgrJL;AqCpsJD;;EA2BM,aAAA;CrC6qJL;AqCxsJD;;EAkCM,YAAA;CrC0qJL;AqC5sJD;;;;EA2CM,eAAA;EACA,uBAAA;EACA,oBAAA;CrCuqJL;AsCrtJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCutJD;AsCntJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CtCqtJL;AsChtJC;EACE,cAAA;CtCktJH;AsC9sJC;EACE,mBAAA;EACA,UAAA;CtCgtJH;AsCzsJD;ECtCE,0BAAA;CvCkvJD;AuC/uJG;;EAEE,0BAAA;CvCivJL;AsC5sJD;EC1CE,0BAAA;CvCyvJD;AuCtvJG;;EAEE,0BAAA;CvCwvJL;AsC/sJD;EC9CE,0BAAA;CvCgwJD;AuC7vJG;;EAEE,0BAAA;CvC+vJL;AsCltJD;EClDE,0BAAA;CvCuwJD;AuCpwJG;;EAEE,0BAAA;CvCswJL;AsCrtJD;ECtDE,0BAAA;CvC8wJD;AuC3wJG;;EAEE,0BAAA;CvC6wJL;AsCxtJD;EC1DE,0BAAA;CvCqxJD;AuClxJG;;EAEE,0BAAA;CvCoxJL;AwCtxJD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCwxJD;AwCrxJC;EACE,cAAA;CxCuxJH;AwCnxJC;EACE,mBAAA;EACA,UAAA;CxCqxJH;AwClxJC;;EAEE,OAAA;EACA,iBAAA;CxCoxJH;AwC/wJG;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;CxCixJL;AwC5wJC;;EAEE,eAAA;EACA,uBAAA;CxC8wJH;AwC3wJC;EACE,aAAA;CxC6wJH;AwC1wJC;EACE,kBAAA;CxC4wJH;AwCzwJC;EACE,iBAAA;CxC2wJH;AyCr0JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCu0JD;AyC50JD;;EASI,eAAA;CzCu0JH;AyCh1JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCs0JH;AyCr1JD;EAmBI,0BAAA;CzCq0JH;AyCl0JC;;EAEE,mBAAA;EACA,mBAAA;EACA,oBAAA;CzCo0JH;AyC91JD;EA8BI,gBAAA;CzCm0JH;AyCjzJD;EACA;IAfI,kBAAA;IACA,qBAAA;GzCm0JD;EyCj0JC;;IAEE,mBAAA;IACA,oBAAA;GzCm0JH;EyC1zJH;;IAJM,gBAAA;GzCk0JH;CACF;A0C/2JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;EACA,uBAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CLisJT;A0C33JD;;EAaI,kBAAA;EACA,mBAAA;C1Ck3JH;A0C92JC;;;EAGE,sBAAA;C1Cg3JH;A0Cr4JD;EA0BI,aAAA;EACA,eAAA;C1C82JH;A2Cv4JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Cy4JD;A2C74JD;EAQI,cAAA;EAEA,eAAA;C3Cu4JH;A2Cj5JD;EAeI,kBAAA;C3Cq4JH;A2Cp5JD;;EAqBI,iBAAA;C3Cm4JH;A2Cx5JD;EAyBI,gBAAA;C3Ck4JH;A2C13JD;;EAEE,oBAAA;C3C43JD;A2C93JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3C43JH;A2Cp3JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C86JD;A2Cz3JD;EClDI,0BAAA;C5C86JH;A2C53JD;EC/CI,eAAA;C5C86JH;A2C33JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cy7JD;A2Ch4JD;ECtDI,0BAAA;C5Cy7JH;A2Cn4JD;ECnDI,eAAA;C5Cy7JH;A2Cl4JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Co8JD;A2Cv4JD;EC1DI,0BAAA;C5Co8JH;A2C14JD;ECvDI,eAAA;C5Co8JH;A2Cz4JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C+8JD;A2C94JD;EC9DI,0BAAA;C5C+8JH;A2Cj5JD;EC3DI,eAAA;C5C+8JH;A6Cj9JD;EACE;IAAQ,4BAAA;G7Co9JP;E6Cn9JD;IAAQ,yBAAA;G7Cs9JP;CACF;A6Cn9JD;EACE;IAAQ,4BAAA;G7Cs9JP;E6Cr9JD;IAAQ,yBAAA;G7Cw9JP;CACF;A6C39JD;EACE;IAAQ,4BAAA;G7Cs9JP;E6Cr9JD;IAAQ,yBAAA;G7Cw9JP;CACF;A6Cj9JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CL86JT;A6Ch9JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CLk0JT;A6C78JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7Ci9JD;A6C18JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CL0/JT;A6Cv8JD;EErEE,0BAAA;C/C+gKD;A+C5gKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C+9JH;A6C38JD;EEzEE,0BAAA;C/CuhKD;A+CphKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Cu+JH;A6C/8JD;EE7EE,0BAAA;C/C+hKD;A+C5hKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C++JH;A6Cn9JD;EEjFE,0BAAA;C/CuiKD;A+CpiKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9Cu/JH;AgD/iKD;EAEE,iBAAA;ChDgjKD;AgD9iKC;EACE,cAAA;ChDgjKH;AgD5iKD;;EAEE,QAAA;EACA,iBAAA;ChD8iKD;AgD3iKD;EACE,eAAA;ChD6iKD;AgD1iKD;EACE,eAAA;ChD4iKD;AgDziKC;EACE,gBAAA;ChD2iKH;AgDviKD;;EAEE,mBAAA;ChDyiKD;AgDtiKD;;EAEE,oBAAA;ChDwiKD;AgDriKD;;;EAGE,oBAAA;EACA,oBAAA;ChDuiKD;AgDpiKD;EACE,uBAAA;ChDsiKD;AgDniKD;EACE,uBAAA;ChDqiKD;AgDjiKD;EACE,cAAA;EACA,mBAAA;ChDmiKD;AgD7hKD;EACE,gBAAA;EACA,iBAAA;ChD+hKD;AiDtlKD;EAEE,oBAAA;EACA,gBAAA;CjDulKD;AiD/kKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,uBAAA;EACA,uBAAA;CjDglKD;AiD7kKC;ErB3BA,6BAAA;EACC,4BAAA;C5B2mKF;AiD9kKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BwmKF;AiDvkKD;;EAEE,YAAA;CjDykKD;AiD3kKD;;EAKI,YAAA;CjD0kKH;AiDtkKC;;;;EAEE,sBAAA;EACA,YAAA;EACA,0BAAA;CjD0kKH;AiDtkKD;EACE,YAAA;EACA,iBAAA;CjDwkKD;AiDnkKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDqkKH;AiD1kKC;;;EASI,eAAA;CjDskKL;AiD/kKC;;;EAYI,eAAA;CjDwkKL;AiDnkKC;;;EAGE,WAAA;EACA,YAAA;EACA,0BAAA;EACA,sBAAA;CjDqkKH;AiD3kKC;;;;;;;;;EAYI,eAAA;CjD0kKL;AiDtlKC;;;EAeI,eAAA;CjD4kKL;AkD9qKC;EACE,eAAA;EACA,0BAAA;ClDgrKH;AkD9qKG;;EAEE,eAAA;ClDgrKL;AkDlrKG;;EAKI,eAAA;ClDirKP;AkD9qKK;;;;EAEE,eAAA;EACA,0BAAA;ClDkrKP;AkDhrKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDqrKP;AkD3sKC;EACE,eAAA;EACA,0BAAA;ClD6sKH;AkD3sKG;;EAEE,eAAA;ClD6sKL;AkD/sKG;;EAKI,eAAA;ClD8sKP;AkD3sKK;;;;EAEE,eAAA;EACA,0BAAA;ClD+sKP;AkD7sKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDktKP;AkDxuKC;EACE,eAAA;EACA,0BAAA;ClD0uKH;AkDxuKG;;EAEE,eAAA;ClD0uKL;AkD5uKG;;EAKI,eAAA;ClD2uKP;AkDxuKK;;;;EAEE,eAAA;EACA,0BAAA;ClD4uKP;AkD1uKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD+uKP;AkDrwKC;EACE,eAAA;EACA,0BAAA;ClDuwKH;AkDrwKG;;EAEE,eAAA;ClDuwKL;AkDzwKG;;EAKI,eAAA;ClDwwKP;AkDrwKK;;;;EAEE,eAAA;EACA,0BAAA;ClDywKP;AkDvwKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD4wKP;AiD3qKD;EACE,cAAA;EACA,mBAAA;CjD6qKD;AiD3qKD;EACE,iBAAA;EACA,iBAAA;CjD6qKD;AmDvyKD;EACE,oBAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CLgvKT;AmDtyKD;EACE,cAAA;CnDwyKD;AmDnyKD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5B0zKF;AmDzyKD;EAMI,eAAA;CnDsyKH;AmDjyKD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnDmyKD;AmDvyKD;;;;;EAWI,eAAA;CnDmyKH;AmD9xKD;EACE,mBAAA;EACA,0BAAA;EACA,2BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5By0KF;AmDxxKD;;EAGI,iBAAA;CnDyxKH;AmD5xKD;;EAMM,oBAAA;EACA,iBAAA;CnD0xKL;AmDtxKG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5Bg2KF;AmDpxKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5B81KF;AmD7yKD;EvB1DE,2BAAA;EACC,0BAAA;C5B02KF;AmDhxKD;EAEI,oBAAA;CnDixKH;AmD9wKD;EACE,oBAAA;CnDgxKD;AmDxwKD;;;EAII,iBAAA;CnDywKH;AmD7wKD;;;EAOM,mBAAA;EACA,oBAAA;CnD2wKL;AmDnxKD;;EvBzGE,6BAAA;EACC,4BAAA;C5Bg4KF;AmDxxKD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnD2wKP;AmD/xKD;;;;;;;;EAwBU,4BAAA;CnDixKT;AmDzyKD;;;;;;;;EA4BU,6BAAA;CnDuxKT;AmDnzKD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bw5KF;AmDxzKD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDqxKP;AmD/zKD;;;;;;;;EA8CU,+BAAA;CnD2xKT;AmDz0KD;;;;;;;;EAkDU,gCAAA;CnDiyKT;AmDn1KD;;;;EA2DI,2BAAA;CnD8xKH;AmDz1KD;;EA+DI,cAAA;CnD8xKH;AmD71KD;;EAmEI,UAAA;CnD8xKH;AmDj2KD;;;;;;;;;;;;EA0EU,eAAA;CnDqyKT;AmD/2KD;;;;;;;;;;;;EA8EU,gBAAA;CnD+yKT;AmD73KD;;;;;;;;EAuFU,iBAAA;CnDgzKT;AmDv4KD;;;;;;;;EAgGU,iBAAA;CnDizKT;AmDj5KD;EAsGI,UAAA;EACA,iBAAA;CnD8yKH;AmDpyKD;EACE,oBAAA;CnDsyKD;AmDvyKD;EAKI,iBAAA;EACA,mBAAA;CnDqyKH;AmD3yKD;EASM,gBAAA;CnDqyKL;AmD9yKD;EAcI,iBAAA;CnDmyKH;AmDjzKD;;EAkBM,2BAAA;CnDmyKL;AmDrzKD;EAuBI,cAAA;CnDiyKH;AmDxzKD;EAyBM,8BAAA;CnDkyKL;AmD3xKD;EC1PE,mBAAA;CpDwhLD;AoDthLC;EACE,eAAA;EACA,0BAAA;EACA,mBAAA;CpDwhLH;AoD3hLC;EAMI,uBAAA;CpDwhLL;AoD9hLC;EASI,eAAA;EACA,0BAAA;CpDwhLL;AoDrhLC;EAEI,0BAAA;CpDshLL;AmD1yKD;EC7PE,sBAAA;CpD0iLD;AoDxiLC;EACE,YAAA;EACA,0BAAA;EACA,sBAAA;CpD0iLH;AoD7iLC;EAMI,0BAAA;CpD0iLL;AoDhjLC;EASI,eAAA;EACA,uBAAA;CpD0iLL;AoDviLC;EAEI,6BAAA;CpDwiLL;AmDzzKD;EChQE,sBAAA;CpD4jLD;AoD1jLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD4jLH;AoD/jLC;EAMI,0BAAA;CpD4jLL;AoDlkLC;EASI,eAAA;EACA,0BAAA;CpD4jLL;AoDzjLC;EAEI,6BAAA;CpD0jLL;AmDx0KD;ECnQE,sBAAA;CpD8kLD;AoD5kLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD8kLH;AoDjlLC;EAMI,0BAAA;CpD8kLL;AoDplLC;EASI,eAAA;EACA,0BAAA;CpD8kLL;AoD3kLC;EAEI,6BAAA;CpD4kLL;AmDv1KD;ECtQE,sBAAA;CpDgmLD;AoD9lLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDgmLH;AoDnmLC;EAMI,0BAAA;CpDgmLL;AoDtmLC;EASI,eAAA;EACA,0BAAA;CpDgmLL;AoD7lLC;EAEI,6BAAA;CpD8lLL;AmDt2KD;ECzQE,sBAAA;CpDknLD;AoDhnLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDknLH;AoDrnLC;EAMI,0BAAA;CpDknLL;AoDxnLC;EASI,eAAA;EACA,0BAAA;CpDknLL;AoD/mLC;EAEI,6BAAA;CpDgnLL;AqDhoLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrDkoLD;AqDvoLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrDkoLH;AqD7nLD;EACE,uBAAA;CrD+nLD;AqD3nLD;EACE,oBAAA;CrD6nLD;AsDxpLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CLmmLT;AsDlqLD;EASI,mBAAA;EACA,kCAAA;CtD4pLH;AsDvpLD;EACE,cAAA;EACA,mBAAA;CtDypLD;AsDvpLD;EACE,aAAA;EACA,mBAAA;CtDypLD;AuD/qLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,0BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBwrLD;AuDhrLC;;EAEE,YAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtBgsLD;AuD5qLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvD8qLH;AwDnsLD;EACE,iBAAA;CxDqsLD;AwDjsLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxDgsLD;AwD7rLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CLghLT;AwDnsLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CL2lLT;AwDvsLD;EACE,mBAAA;EACA,iBAAA;CxDysLD;AwDrsLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDusLD;AwDnsLD;EACE,mBAAA;EACA,uBAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDqsLD;AwDjsLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,uBAAA;CxDmsLD;AwDjsLC;ElCrEA,WAAA;EAGA,yBAAA;CtBuwLD;AwDpsLC;ElCtEA,aAAA;EAGA,0BAAA;CtB2wLD;AwDnsLD;EACE,cAAA;EACA,iCAAA;CxDqsLD;AwDjsLD;EACE,iBAAA;CxDmsLD;AwD/rLD;EACE,UAAA;EACA,wBAAA;CxDisLD;AwD5rLD;EACE,mBAAA;EACA,cAAA;CxD8rLD;AwD1rLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxD4rLD;AwD/rLD;EAQI,iBAAA;EACA,iBAAA;CxD0rLH;AwDnsLD;EAaI,kBAAA;CxDyrLH;AwDtsLD;EAiBI,eAAA;CxDwrLH;AwDnrLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDqrLD;AwDnqLD;EAZE;IACE,aAAA;IACA,kBAAA;GxDkrLD;EwDhrLD;InDvEA,kDAAA;IACQ,0CAAA;GL0vLP;EwD/qLD;IAAY,aAAA;GxDkrLX;CACF;AwD7qLD;EAFE;IAAY,aAAA;GxDmrLX;CACF;AyDl0LD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBy1LD;AyD90LC;EnCdA,aAAA;EAGA,0BAAA;CtB61LD;AyDj1LC;EAAW,iBAAA;EAAmB,eAAA;CzDq1L/B;AyDp1LC;EAAW,iBAAA;EAAmB,eAAA;CzDw1L/B;AyDv1LC;EAAW,gBAAA;EAAmB,eAAA;CzD21L/B;AyD11LC;EAAW,kBAAA;EAAmB,eAAA;CzD81L/B;AyD11LD;EACE,iBAAA;EACA,iBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;CzD41LD;AyDx1LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzD01LD;AyDt1LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,uBAAA;CzDw1LH;AyDt1LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,yBAAA;CzDw1LH;AyDt1LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,wBAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;AyDt1LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,0BAAA;CzDw1LH;A2Dr7LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,uBAAA;EACA,qCAAA;UAAA,6BAAA;EACA,uBAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLq5LT;A2Dh8LC;EAAY,kBAAA;C3Dm8Lb;A2Dl8LC;EAAY,kBAAA;C3Dq8Lb;A2Dp8LC;EAAY,iBAAA;C3Du8Lb;A2Dt8LC;EAAY,mBAAA;C3Dy8Lb;A2Dt8LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Dw8LD;A2Dr8LD;EACE,kBAAA;C3Du8LD;A2D/7LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3Di8LH;A2D97LD;EACE,mBAAA;C3Dg8LD;A2D97LD;EACE,mBAAA;EACA,YAAA;C3Dg8LD;A2D57LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;C3D+7LL;A2D57LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;C3D+7LL;A2D57LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D87LH;A2D77LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,0BAAA;C3D+7LL;A2D37LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3D67LH;A2D57LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,wBAAA;EACA,cAAA;C3D87LL;A4DvjMD;EACE,mBAAA;C5DyjMD;A4DtjMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DwjMD;A4D3jMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CL44LT;A4DlkMD;;EAcM,eAAA;C5DwjML;A4D9hMC;EA4NF;IvD3DE,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GLi7LP;E4D5jMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D+jML;E4D7jMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5DgkML;E4D9jMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5DikML;CACF;A4DvmMD;;;EA6CI,eAAA;C5D+jMH;A4D5mMD;EAiDI,QAAA;C5D8jMH;A4D/mMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5D6jMH;A4DrnMD;EA4DI,WAAA;C5D4jMH;A4DxnMD;EA+DI,YAAA;C5D4jMH;A4D3nMD;;EAmEI,QAAA;C5D4jMH;A4D/nMD;EAuEI,YAAA;C5D2jMH;A4DloMD;EA0EI,WAAA;C5D2jMH;A4DnjMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;EACA,mCAAA;C5DsjMD;A4DjjMC;EdnGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CupMH;A4DrjMC;EACE,WAAA;EACA,SAAA;EdxGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CgqMH;A4DvjMC;;EAEE,WAAA;EACA,YAAA;EACA,sBAAA;EtCvHF,aAAA;EAGA,0BAAA;CtB+qMD;A4DzlMD;;;;EAuCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DwjMH;A4DnmMD;;EA+CI,UAAA;EACA,mBAAA;C5DwjMH;A4DxmMD;;EAoDI,WAAA;EACA,oBAAA;C5DwjMH;A4D7mMD;;EAyDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DwjMH;A4DnjMG;EACE,iBAAA;C5DqjML;A4DjjMG;EACE,iBAAA;C5DmjML;A4DziMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5D2iMD;A4DpjMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5DiiMH;A4DhkMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,uBAAA;C5DiiMH;A4D1hMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,YAAA;EACA,mBAAA;EACA,0CAAA;C5D4hMD;A4D3hMC;EACE,kBAAA;C5D6hMH;A4Dp/LD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DshMH;E4D9hMD;;IAYI,mBAAA;G5DshMH;E4DliMD;;IAgBI,oBAAA;G5DshMH;E4DjhMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5DmhMD;E4D/gMD;IACE,aAAA;G5DihMD;CACF;A6DhxMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7DgzMH;A6D9yMC;;;;;;;;;;;;;;;;EACE,YAAA;C7D+zMH;AiCv0MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9Dk1MD;AiCz0MD;EACE,wBAAA;CjC20MD;AiCz0MD;EACE,uBAAA;CjC20MD;AiCn0MD;EACE,yBAAA;CjCq0MD;AiCn0MD;EACE,0BAAA;CjCq0MD;AiCn0MD;EACE,mBAAA;CjCq0MD;AiCn0MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/D+1MD;AiCj0MD;EACE,yBAAA;CjCm0MD;AiC5zMD;EACE,gBAAA;CjC8zMD;AgE/1MD;EACE,oBAAA;ChEi2MD;AgE31MD;;;;ECdE,yBAAA;CjE+2MD;AgE11MD;;;;;;;;;;;;EAYE,yBAAA;ChE41MD;AgEr1MD;EA6IA;IC7LE,0BAAA;GjEy4MC;EiEx4MD;IAAU,0BAAA;GjE24MT;EiE14MD;IAAU,8BAAA;GjE64MT;EiE54MD;;IACU,+BAAA;GjE+4MT;CACF;AgE/1MD;EAwIA;IA1II,0BAAA;GhEq2MD;CACF;AgE/1MD;EAmIA;IArII,2BAAA;GhEq2MD;CACF;AgE/1MD;EA8HA;IAhII,iCAAA;GhEq2MD;CACF;AgE91MD;EAwHA;IC7LE,0BAAA;GjEu6MC;EiEt6MD;IAAU,0BAAA;GjEy6MT;EiEx6MD;IAAU,8BAAA;GjE26MT;EiE16MD;;IACU,+BAAA;GjE66MT;CACF;AgEx2MD;EAmHA;IArHI,0BAAA;GhE82MD;CACF;AgEx2MD;EA8GA;IAhHI,2BAAA;GhE82MD;CACF;AgEx2MD;EAyGA;IA3GI,iCAAA;GhE82MD;CACF;AgEv2MD;EAmGA;IC7LE,0BAAA;GjEq8MC;EiEp8MD;IAAU,0BAAA;GjEu8MT;EiEt8MD;IAAU,8BAAA;GjEy8MT;EiEx8MD;;IACU,+BAAA;GjE28MT;CACF;AgEj3MD;EA8FA;IAhGI,0BAAA;GhEu3MD;CACF;AgEj3MD;EAyFA;IA3FI,2BAAA;GhEu3MD;CACF;AgEj3MD;EAoFA;IAtFI,iCAAA;GhEu3MD;CACF;AgEh3MD;EA8EA;IC7LE,0BAAA;GjEm+MC;EiEl+MD;IAAU,0BAAA;GjEq+MT;EiEp+MD;IAAU,8BAAA;GjEu+MT;EiEt+MD;;IACU,+BAAA;GjEy+MT;CACF;AgE13MD;EAyEA;IA3EI,0BAAA;GhEg4MD;CACF;AgE13MD;EAoEA;IAtEI,2BAAA;GhEg4MD;CACF;AgE13MD;EA+DA;IAjEI,iCAAA;GhEg4MD;CACF;AgEz3MD;EAyDA;ICrLE,yBAAA;GjEy/MC;CACF;AgEz3MD;EAoDA;ICrLE,yBAAA;GjE8/MC;CACF;AgEz3MD;EA+CA;ICrLE,yBAAA;GjEmgNC;CACF;AgEz3MD;EA0CA;ICrLE,yBAAA;GjEwgNC;CACF;AgEt3MD;ECnJE,yBAAA;CjE4gND;AgEn3MD;EA4BA;IC7LE,0BAAA;GjEwhNC;EiEvhND;IAAU,0BAAA;GjE0hNT;EiEzhND;IAAU,8BAAA;GjE4hNT;EiE3hND;;IACU,+BAAA;GjE8hNT;CACF;AgEj4MD;EACE,yBAAA;ChEm4MD;AgE93MD;EAqBA;IAvBI,0BAAA;GhEo4MD;CACF;AgEl4MD;EACE,yBAAA;ChEo4MD;AgE/3MD;EAcA;IAhBI,2BAAA;GhEq4MD;CACF;AgEn4MD;EACE,yBAAA;ChEq4MD;AgEh4MD;EAOA;IATI,iCAAA;GhEs4MD;CACF;AgE/3MD;EACA;ICrLE,yBAAA;GjEujNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n \n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on