Commit 025ff22a81958a91354d809872c9b022aee6c9e4

Authored by Schwirg László
1 parent 262a1443

Vrh.Web.Reportin v1.2.1.0

- beépülők frissítése
Showing 59 changed files with 3967 additions and 828 deletions   Show diff stats
Vrh.OneReport/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.OneReport/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.OneReport/Vrh.OneReport.csproj
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 53 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
54 </Reference> 54 </Reference>
55 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 55 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
56 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 56 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
57 </Reference> 57 </Reference>
58 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 58 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
59 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 59 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -112,6 +112,7 @@ @@ -112,6 +112,7 @@
112 <Compile Include="Enums.cs" /> 112 <Compile Include="Enums.cs" />
113 <Compile Include="Properties\AssemblyInfo.cs" /> 113 <Compile Include="Properties\AssemblyInfo.cs" />
114 <Compile Include="ReportService.cs" /> 114 <Compile Include="ReportService.cs" />
  115 + <Compile Include="SqlServerTypes\Loader.cs" />
115 <Compile Include="XmlProcessing\IOneReport.cs" /> 116 <Compile Include="XmlProcessing\IOneReport.cs" />
116 <Compile Include="XmlProcessing\Dataset.cs" /> 117 <Compile Include="XmlProcessing\Dataset.cs" />
117 <Compile Include="XmlProcessing\FolderElement.cs" /> 118 <Compile Include="XmlProcessing\FolderElement.cs" />
@@ -133,6 +134,15 @@ @@ -133,6 +134,15 @@
133 <None Include="Vrh.NugetModuls.Documentations\Vrh.XmlProcessing\ReadMe.md" /> 134 <None Include="Vrh.NugetModuls.Documentations\Vrh.XmlProcessing\ReadMe.md" />
134 </ItemGroup> 135 </ItemGroup>
135 <ItemGroup> 136 <ItemGroup>
  137 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  138 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  139 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  140 + </Content>
  141 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  142 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  143 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  144 + </Content>
  145 + <Content Include="SqlServerTypes\readme.htm" />
136 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" /> 146 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />
137 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 147 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" />
138 <None Include="XmlParser.xml"> 148 <None Include="XmlParser.xml">
Vrh.OneReport/packages.config
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net45" /> 5 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net45" />
6 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net45" /> 6 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net45" />
7 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net45" /> 7 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net45" />
8 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net45" /> 8 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
9 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net45" /> 9 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net45" />
10 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net45" /> 10 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net45" />
11 <package id="VRH.Common" version="3.0.0" targetFramework="net45" /> 11 <package id="VRH.Common" version="3.0.0" targetFramework="net45" />
Vrh.Web.OneReport.Lib/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.Web.OneReport.Lib/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.Web.OneReport.Lib/Vrh.NugetModuls.Documentations/Vrh.Web.Common.Lib/ReadMe.md
@@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true) @@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true)
469 469
470 *** 470 ***
471 ### Version History: 471 ### Version History:
  472 +#### 2.20.1 (2023.09.19) Patches:
  473 +- WebCommon.ErrorListBuilder mostantól saját kódot használ, nem a VRH.Common.ErrorListBuilder-ét. A VRH.Common.EF.ErrorListBuilder kód tartalmát használja, ami meg valamiért nem elérhető.
  474 +
  475 +#### 2.20.0 (2023.09.07) Compatible changes:
  476 +- DataTablesIn.DTColumn osztály kibővült egy OrderField nevű tulajdonsággal.
  477 +- DataTables.Order metódus módosítása, hogy ha ki van töltve az OrderField, akkor a rendezés arra történik.
  478 +
  479 +#### 2.19.5 (2023.08.10) Patches:
  480 +- DataTables.Filter metódus módosítása. Nullozható enumokra is helyesen működik.
  481 +
  482 +#### 2.19.4 (2023.07.18) Patches:
  483 +- DataTables.Filter metódus módosítása. Most már Guid típusú mező szűrésekor is helyesen működik.
  484 +
472 #### 2.19.3 (2023.06.05) Patches: 485 #### 2.19.3 (2023.06.05) Patches:
473 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus. 486 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus.
474 487
Vrh.Web.OneReport.Lib/Vrh.Web.OneReport.Lib.csproj
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 52 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
53 </Reference> 53 </Reference>
54 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 54 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
55 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 55 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
56 </Reference> 56 </Reference>
57 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 57 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
58 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 58 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -111,8 +111,8 @@ @@ -111,8 +111,8 @@
111 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 111 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
112 <Private>True</Private> 112 <Private>True</Private>
113 </Reference> 113 </Reference>
114 - <Reference Include="Vrh.Web.Common.Lib, Version=2.19.3.0, Culture=neutral, processorArchitecture=MSIL">  
115 - <HintPath>..\packages\Vrh.Web.Common.Lib.2.19.3\lib\net451\Vrh.Web.Common.Lib.dll</HintPath> 114 + <Reference Include="Vrh.Web.Common.Lib, Version=2.20.1.0, Culture=neutral, processorArchitecture=MSIL">
  115 + <HintPath>..\packages\Vrh.Web.Common.Lib.2.20.1\lib\net451\Vrh.Web.Common.Lib.dll</HintPath>
116 </Reference> 116 </Reference>
117 <Reference Include="Vrh.XmlProcessing, Version=1.32.0.0, Culture=neutral, processorArchitecture=MSIL"> 117 <Reference Include="Vrh.XmlProcessing, Version=1.32.0.0, Culture=neutral, processorArchitecture=MSIL">
118 <HintPath>..\packages\Vrh.XmlProcessing.1.32.0\lib\net45\Vrh.XmlProcessing.dll</HintPath> 118 <HintPath>..\packages\Vrh.XmlProcessing.1.32.0\lib\net45\Vrh.XmlProcessing.dll</HintPath>
@@ -129,8 +129,8 @@ @@ -129,8 +129,8 @@
129 <Compile Include="ReportViewerForMvc\ReportViewerForMvc.cs" /> 129 <Compile Include="ReportViewerForMvc\ReportViewerForMvc.cs" />
130 <Compile Include="ReportViewerForMvc\ReportViewerHelpers.cs" /> 130 <Compile Include="ReportViewerForMvc\ReportViewerHelpers.cs" />
131 <Compile Include="ReportViewerForMvc\ReportViewerWebForm.aspx.cs"> 131 <Compile Include="ReportViewerForMvc\ReportViewerWebForm.aspx.cs">
132 - <SubType>ASPXCodeBehind</SubType>  
133 <DependentUpon>ReportViewerWebForm.aspx</DependentUpon> 132 <DependentUpon>ReportViewerWebForm.aspx</DependentUpon>
  133 + <SubType>ASPXCodeBehind</SubType>
134 </Compile> 134 </Compile>
135 <Compile Include="ReportViewerForMvc\ReportViewerWebForm.aspx.designer.cs"> 135 <Compile Include="ReportViewerForMvc\ReportViewerWebForm.aspx.designer.cs">
136 <DependentUpon>ReportViewerWebForm.aspx.cs</DependentUpon> 136 <DependentUpon>ReportViewerWebForm.aspx.cs</DependentUpon>
@@ -139,6 +139,7 @@ @@ -139,6 +139,7 @@
139 <Compile Include="ReportViewerForMvc\WebResourceHelper.cs" /> 139 <Compile Include="ReportViewerForMvc\WebResourceHelper.cs" />
140 <Compile Include="Properties\AssemblyInfo.cs" /> 140 <Compile Include="Properties\AssemblyInfo.cs" />
141 <Compile Include="Properties\CommonAssemblyInfo.cs" /> 141 <Compile Include="Properties\CommonAssemblyInfo.cs" />
  142 + <Compile Include="SqlServerTypes\Loader.cs" />
142 </ItemGroup> 143 </ItemGroup>
143 <ItemGroup> 144 <ItemGroup>
144 <None Include="App.config" /> 145 <None Include="App.config" />
@@ -161,6 +162,15 @@ @@ -161,6 +162,15 @@
161 <EmbeddedResource Include="ReportViewerForMvc\web.config" /> 162 <EmbeddedResource Include="ReportViewerForMvc\web.config" />
162 </ItemGroup> 163 </ItemGroup>
163 <ItemGroup> 164 <ItemGroup>
  165 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  166 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  167 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  168 + </Content>
  169 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  170 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  171 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  172 + </Content>
  173 + <Content Include="SqlServerTypes\readme.htm" />
164 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" /> 174 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />
165 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 175 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" />
166 <None Include="XmlParser.xml"> 176 <None Include="XmlParser.xml">
Vrh.Web.OneReport.Lib/packages.config
@@ -6,11 +6,11 @@ @@ -6,11 +6,11 @@
6 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" /> 6 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" />
7 <package id="Microsoft.Net.Compilers.Toolset" version="3.9.0" targetFramework="net451" developmentDependency="true" /> 7 <package id="Microsoft.Net.Compilers.Toolset" version="3.9.0" targetFramework="net451" developmentDependency="true" />
8 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" /> 8 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" />
9 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 9 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
10 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" /> 10 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" />
11 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" /> 11 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" />
12 <package id="VRH.Common" version="3.0.0" targetFramework="net451" /> 12 <package id="VRH.Common" version="3.0.0" targetFramework="net451" />
13 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" /> 13 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" />
14 - <package id="Vrh.Web.Common.Lib" version="2.19.3" targetFramework="net462" /> 14 + <package id="Vrh.Web.Common.Lib" version="2.20.1" targetFramework="net462" />
15 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 15 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />
16 </packages> 16 </packages>
17 \ No newline at end of file 17 \ No newline at end of file
Vrh.Web.Reporting/Areas/UserAdministration/Views/RolesToUserRoleGroups/Index.cshtml
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 26
27 } 27 }
28 28
29 -<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script> 29 +<script src="~/Scripts/jquery-ui-1.13.2.min.js"></script>
30 <script src="@(Url.Content(WebConst.AREA_SCRIPTSPATH + "RolesToUserRoleGroupsDialog.js"))"></script> 30 <script src="@(Url.Content(WebConst.AREA_SCRIPTSPATH + "RolesToUserRoleGroupsDialog.js"))"></script>
31 <script type="text/javascript"> 31 <script type="text/javascript">
32 rturgd.TitleNew = '@newRoleTranslationText'; 32 rturgd.TitleNew = '@newRoleTranslationText';
Vrh.Web.Reporting/Areas/UserAdministration/Views/RolesToUsers/Index.cshtml 0 → 100644
@@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
  1 +@*
  2 + -----------------------------------------
  3 + RolesToUserRoleGroups - Index.cshtml
  4 + -----------------------------------------
  5 +*@
  6 +@using VRH.Log4Pro.MultiLanguageManager;
  7 +@using Vrh.Web.Common.Lib;
  8 +
  9 +@model CommonModel
  10 +
  11 +@{
  12 + ViewBag.Title = Html.Raw("Roles to Users");
  13 +
  14 + IHtmlString okTranslationText = Html.Raw(Model.Trans(typeof(GeneralWordCodes.MLM.General.Words.OK)));
  15 + IHtmlString cancelTranslationText = Html.Raw(Model.Trans(typeof(GeneralWordCodes.MLM.General.Words.Cancel)));
  16 + IHtmlString deleteTranslationText = Html.Raw(Model.Trans(typeof(WordCodes.MvcMembership.Common.Delete)));
  17 + IHtmlString closeTranslationText = Html.Raw(Model.Trans(typeof(WordCodes.MvcMembership.Common.Close)));
  18 + IHtmlString renameTranslationText = Html.Raw(Model.Trans(typeof(WordCodes.MvcMembership.Common.Rename)));
  19 +
  20 + string labelUserManager = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.Users));
  21 + string labelUTURG = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.UsersToRoleGroups));
  22 + string labelRoles = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.Roles));
  23 +
  24 +}
  25 +
  26 +<script src="~/Scripts/jquery-ui-1.13.2.min.js"></script>
  27 +<script src="@(Url.Content(WebConst.AREA_SCRIPTSPATH + "RolesToUserRoleGroupsDialog.js"))"></script>
  28 +<script type="text/javascript">
  29 + rturgd.TitleOK = '@okTranslationText';
  30 + rturgd.TitleCancel = '@cancelTranslationText';
  31 + rturgd.TitleClose = '@cancelTranslationText';
  32 +
  33 + //$(function() {
  34 + //});
  35 +</script>
  36 +
  37 +<div class="card">
  38 + <div class="card-header">
  39 + @UserManagementHtmlHelper.AddHeader(Html, Ajax, Url, Model, ViewBag.Title.ToString()
  40 + , new List<UserManagementHtmlHelper.DisableThisButton> { UserManagementHtmlHelper.DisableThisButton.RolesToUsers })
  41 + </div>
  42 + <div class="card-body">
  43 + <div class="row">
  44 + @Html.Partial("_RolesToUsers", ViewData["id"] != null ? new ViewDataDictionary() { { "id", ViewData["id"] } } : null)
  45 + </div>
  46 + </div>
  47 +</div>
Vrh.Web.Reporting/Areas/UserAdministration/Views/RolesToUsers/_RolesToUsers.cshtml 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +@using VRH.Log4Pro.MultiLanguageManager;
  2 +@using Vrh.Web.Membership.Areas.UAManyToMany.Models;
  3 +
  4 +@{
  5 + string areaName = "UAManyToMany";
  6 + string ctrlName = areaName;
  7 + if (Session["MTM"] != null)
  8 + {
  9 + Session["MTM"] = null;
  10 + }
  11 + UAManyToManySessionModel mtmSession = new UAManyToManySessionModel();
  12 + mtmSession.DefaultListItemsHeader = "Users";
  13 + mtmSession.DefaultSelectedListItemsHeader = "Roles of selected user";
  14 + mtmSession.DefaultAvailableListItemsHeader = "Roles that selected user does not have";
  15 + mtmSession.ListItemsHeader = MultiLanguageManager.GetTranslation(typeof(WordCodes.MvcMembership.ManyToMany.Roles));
  16 + mtmSession.SelectedListItemsHeader = "Users of selected role";
  17 + mtmSession.AvailableListItemsHeader = "Users that do not have the selected role";
  18 + Session["MTM"] = mtmSession;
  19 + Html.RenderAction("ManyToMany", ctrlName, new { area = areaName, name = "RolesToUsers", isDefault = true });
  20 +}
Vrh.Web.Reporting/Areas/UserAdministration/Views/UserAdministration/Details.cshtml
@@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
72 @*<dd>@Model.User.CreationDate.ToString("MMMM dd, yyyy h:mm:ss tt", CultureInfo.InvariantCulture)</dd>*@ 72 @*<dd>@Model.User.CreationDate.ToString("MMMM dd, yyyy h:mm:ss tt", CultureInfo.InvariantCulture)</dd>*@
73 <dd>@Model.User.CreationDate.ToString("yyyy MM dd, h:mm:ss", CultureInfo.InvariantCulture)</dd> 73 <dd>@Model.User.CreationDate.ToString("yyyy MM dd, h:mm:ss", CultureInfo.InvariantCulture)</dd>
74 </dl> 74 </dl>
75 - @if (Model.User.UserName != Constants.FIRST_USERNAME && Model.User.UserName != User.Identity.Name) 75 + @if (Model.User.UserName != Constants.USERNAME_ADMINISTRATOR && Model.User.UserName != User.Identity.Name)
76 { // !!! Az 'Admin'-t és saját magát ne tudja letiltani !!! 76 { // !!! Az 'Admin'-t és saját magát ne tudja letiltani !!!
77 using (Html.BeginForm("ChangeApproval", WebConst.CONTROLLER_UA, new { id = Model.User.ProviderUserKey })) 77 using (Html.BeginForm("ChangeApproval", WebConst.CONTROLLER_UA, new { id = Model.User.ProviderUserKey }))
78 { 78 {
Vrh.Web.Reporting/Areas/UserAdministration/Views/UserAdministration/Role.cshtml
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 { 36 {
37 @Html.ActionLink(user.UserName, "Details", new { id = user.ProviderUserKey }, new { @class = "text-light" }) 37 @Html.ActionLink(user.UserName, "Details", new { id = user.ProviderUserKey }, new { @class = "text-light" })
38 38
39 - if (Model.Role != Constants.ROLE_ADMINISTRATOR || user.UserName != Constants.FIRST_USERNAME) 39 + if (Model.Role != Constants.ROLE_ADMINISTRATOR || user.UserName != Constants.USERNAME_ADMINISTRATOR)
40 { // Az alapértelmezett felhasználót nem lehet kivenni az 40 { // Az alapértelmezett felhasználót nem lehet kivenni az
41 using (Html.BeginForm("RemoveFromRoleOnRolePage", WebConst.CONTROLLER_UA, new { id = user.ProviderUserKey, role = Model.Role })) 41 using (Html.BeginForm("RemoveFromRoleOnRolePage", WebConst.CONTROLLER_UA, new { id = user.ProviderUserKey, role = Model.Role }))
42 { 42 {
Vrh.Web.Reporting/Areas/UserAdministration/Views/UserAdministration/SearchUser.cshtml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 UserAdministration - SearchUser.cshtml 3 UserAdministration - SearchUser.cshtml
4 ----------------------------------------- 4 -----------------------------------------
5 *@ 5 *@
6 -model Vrh.Web.Membership.Areas.UserAdministration.Models.IndexViewModel 6 +@model Vrh.Web.Membership.Areas.UserAdministration.Models.IndexViewModel
7 7
8 @{ 8 @{
9 ViewBag.Title = Html.Raw(Model.Trans(typeof(WordCodes.MvcMembership.User.UserManagement))); 9 ViewBag.Title = Html.Raw(Model.Trans(typeof(WordCodes.MvcMembership.User.UserManagement)));
Vrh.Web.Reporting/Areas/UserAdministration/Views/UserAdministration/UsersRoles.cshtml
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 @section Styles { 9 @section Styles {
10 <link href="@Url.Content(WebConst.AREA_CONTENTPATH + "MvcMembership.css")" rel="stylesheet" type="text/css" /> 10 <link href="@Url.Content(WebConst.AREA_CONTENTPATH + "MvcMembership.css")" rel="stylesheet" type="text/css" />
11 } 11 }
12 -<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>" 12 +<script src="~/Scripts/jquery-ui-1.13.2.min.js"></script>"
13 13
14 <div class="card"> 14 <div class="card">
15 <div class="card-header"> 15 <div class="card-header">
Vrh.Web.Reporting/Areas/UserAdministration/Views/UsersToUserRoleGroups/Index.cshtml
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 string labelRTURG = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.RolesToRoleGroups)); 15 string labelRTURG = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.RolesToRoleGroups));
16 string labelRoles = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.Roles)); 16 string labelRoles = Model.Trans(typeof(WordCodes.MvcMembership.Labels.Button.Roles));
17 } 17 }
18 -<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>" 18 +<script src="~/Scripts/jquery-ui-1.13.2.min.js"></script>"
19 <div class="card"> 19 <div class="card">
20 <div class="card-header"> 20 <div class="card-header">
21 @UserManagementHtmlHelper.AddHeader(Html, Ajax, Url, Model, ViewBag.Title.ToString() 21 @UserManagementHtmlHelper.AddHeader(Html, Ajax, Url, Model, ViewBag.Title.ToString()
Vrh.Web.Reporting/Areas/WebTools/Views/UserIsNotAuthenticated.cshtml 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +@model object
  2 +@{string detailedmessage = string.IsNullOrWhiteSpace((string)Model) ? "" : (string)Model; }
  3 +<hgroup class="title">
  4 + <h1 class="error" style="background-color: black; color: white; Line-height: 2">Error!</h1>
  5 + <h2 class="error" style="background-color: lightgrey; color: black;">No user logged in, or user not authorized!</h2>
  6 +</hgroup>
  7 +<hr style="color: white;">
  8 +<hgroup class="title">
  9 + <h6 class="error" style="background-color: lightgrey; color: black;">@detailedmessage</h6>
  10 +</hgroup>
Vrh.Web.Reporting/Areas/WebTools/Views/_LayoutNoMenu.cshtml 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +<!DOCTYPE html>
  2 +
  3 +@using System.Reflection;
  4 +@using VRH.Log4Pro.MultiLanguageManager;
  5 +@using Vrh.Web.Common.Lib
  6 +@using System.Web.Optimization
  7 +
  8 +<html>
  9 +<head>
  10 + <meta charset="utf-8" />
  11 + <meta name="viewport" content="width=device-width, initial-scale=1">
  12 + <title>@ViewBag.Title</title>
  13 + @Styles.Render(WTConst.BUNDLES_STYLE)
  14 + @RenderSection("styles", required: false)
  15 +
  16 +
  17 + @Scripts.Render(WTConst.BUNDLES_SCRIPT)
  18 +</head>
  19 +<body>
  20 + <div class="container-fluid body-content">@RenderBody()</div>
  21 + @RenderSection("scripts", required: false)
  22 +</body>
  23 +</html>
0 \ No newline at end of file 24 \ No newline at end of file
Vrh.Web.Reporting/Areas/WebTools/Views/_ViewStart.cshtml
1 @{ 1 @{
2 - Layout = "~/Areas/WebTools/Views/Shared/_Layout.cshtml";  
3 -}  
4 \ No newline at end of file 2 \ No newline at end of file
  3 + Layout = VRH.Log4Pro.WebTools.WTConst.VIEWLAYOUTNOMENU;
  4 +}
Vrh.Web.Reporting/Areas/WebTools/Views/web.config 0 → 100644
@@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
  1 +<?xml version="1.0"?>
  2 +
  3 +<configuration>
  4 + <configSections>
  5 + <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  6 + <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  7 + <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  8 + </sectionGroup>
  9 + </configSections>
  10 +
  11 + <system.web.webPages.razor>
  12 + <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  13 + <pages pageBaseType="System.Web.Mvc.WebViewPage">
  14 + <namespaces>
  15 + <add namespace="System.Web.Mvc" />
  16 + <add namespace="System.Web.Mvc.Ajax" />
  17 + <add namespace="System.Web.Mvc.Html" />
  18 + <add namespace="System.Web.Routing" />
  19 + <add namespace="VRH.Log4Pro.WebTools" />
  20 +
  21 + </namespaces>
  22 + </pages>
  23 + </system.web.webPages.razor>
  24 +
  25 + <appSettings>
  26 + <add key="webpages:Enabled" value="false" />
  27 + </appSettings>
  28 +
  29 + <system.webServer>
  30 + <handlers>
  31 + <remove name="BlockViewHandler"/>
  32 + <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  33 + </handlers>
  34 + </system.webServer>
  35 +</configuration>
0 \ No newline at end of file 36 \ No newline at end of file
Vrh.Web.Reporting/Properties/AssemblyInfo.cs
@@ -36,6 +36,6 @@ using System.Runtime.InteropServices; @@ -36,6 +36,6 @@ using System.Runtime.InteropServices;
36 // You can specify all the values or you can default the Build and Revision Numbers 36 // You can specify all the values or you can default the Build and Revision Numbers
37 // by using the '*' as shown below: 37 // by using the '*' as shown below:
38 // [assembly: AssemblyVersion("1.0.*")] 38 // [assembly: AssemblyVersion("1.0.*")]
39 -[assembly: AssemblyVersion("1.2.0.0")]  
40 -[assembly: AssemblyFileVersion("1.2.0.0")]  
41 -[assembly: AssemblyInformationalVersion("1.2.0")] 39 +[assembly: AssemblyVersion("1.2.1.0")]
  40 +[assembly: AssemblyFileVersion("1.2.1.0")]
  41 +[assembly: AssemblyInformationalVersion("1.2.1")]
Vrh.Web.Reporting/Scripts/_references.js
1 -/// <reference path="jquery-3.6.4.js" /> 1 +/// <reference path="jquery-ui-1.13.2.js" />
  2 +/// <reference path="jquery-3.6.4.js" />
2 /// <autosync enabled="true" /> 3 /// <autosync enabled="true" />
3 /// <reference path="bootstrap.min.js" /> 4 /// <reference path="bootstrap.min.js" />
4 /// <reference path="jquery.validate.min.js" /> 5 /// <reference path="jquery.validate.min.js" />
Vrh.Web.Reporting/Scripts/jquery-ui-1.12.1.min.js deleted
@@ -1,13 +0,0 @@ @@ -1,13 +0,0 @@
1 -/*! jQuery UI - v1.12.1 - 2016-09-14  
2 -* http://jqueryui.com  
3 -* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js  
4 -* Copyright jQuery Foundation and other contributors; Licensed MIT */  
5 -  
6 -(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)  
7 -}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;  
8 -this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))  
9 -}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}  
10 -},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog  
11 -},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1  
12 -},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;  
13 -this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});  
14 \ No newline at end of file 0 \ No newline at end of file
Vrh.Web.Reporting/Scripts/jquery-ui-1.12.1.js renamed to Vrh.Web.Reporting/Scripts/jquery-ui-1.13.2.js
1 -/*! jQuery UI - v1.12.1 - 2016-09-14 1 +/*! jQuery UI - v1.13.2 - 2022-07-14
2 * http://jqueryui.com 2 * http://jqueryui.com
3 -* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js 3 +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4 * Copyright jQuery Foundation and other contributors; Licensed MIT */ 4 * Copyright jQuery Foundation and other contributors; Licensed MIT */
5 5
6 -(function( factory ) { 6 +( function( factory ) {
  7 + "use strict";
  8 +
7 if ( typeof define === "function" && define.amd ) { 9 if ( typeof define === "function" && define.amd ) {
8 10
9 // AMD. Register as an anonymous module. 11 // AMD. Register as an anonymous module.
10 - define([ "jquery" ], factory ); 12 + define( [ "jquery" ], factory );
11 } else { 13 } else {
12 14
13 // Browser globals 15 // Browser globals
14 factory( jQuery ); 16 factory( jQuery );
15 } 17 }
16 -}(function( $ ) { 18 +} )( function( $ ) {
  19 +"use strict";
17 20
18 $.ui = $.ui || {}; 21 $.ui = $.ui || {};
19 22
20 -var version = $.ui.version = "1.12.1"; 23 +var version = $.ui.version = "1.13.2";
21 24
22 25
23 /*! 26 /*!
24 - * jQuery UI Widget 1.12.1 27 + * jQuery UI Widget 1.13.2
25 * http://jqueryui.com 28 * http://jqueryui.com
26 * 29 *
27 * Copyright jQuery Foundation and other contributors 30 * Copyright jQuery Foundation and other contributors
@@ -36,24 +39,20 @@ var version = $.ui.version = &quot;1.12.1&quot;; @@ -36,24 +39,20 @@ var version = $.ui.version = &quot;1.12.1&quot;;
36 //>>demos: http://jqueryui.com/widget/ 39 //>>demos: http://jqueryui.com/widget/
37 40
38 41
39 -  
40 var widgetUuid = 0; 42 var widgetUuid = 0;
  43 +var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
41 var widgetSlice = Array.prototype.slice; 44 var widgetSlice = Array.prototype.slice;
42 45
43 $.cleanData = ( function( orig ) { 46 $.cleanData = ( function( orig ) {
44 return function( elems ) { 47 return function( elems ) {
45 var events, elem, i; 48 var events, elem, i;
46 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { 49 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
47 - try {  
48 -  
49 - // Only trigger remove when necessary to save time  
50 - events = $._data( elem, "events" );  
51 - if ( events && events.remove ) {  
52 - $( elem ).triggerHandler( "remove" );  
53 - }  
54 50
55 - // Http://bugs.jquery.com/ticket/8235  
56 - } catch ( e ) {} 51 + // Only trigger remove when necessary to save time
  52 + events = $._data( elem, "events" );
  53 + if ( events && events.remove ) {
  54 + $( elem ).triggerHandler( "remove" );
  55 + }
57 } 56 }
58 orig( elems ); 57 orig( elems );
59 }; 58 };
@@ -75,12 +74,12 @@ $.widget = function( name, base, prototype ) { @@ -75,12 +74,12 @@ $.widget = function( name, base, prototype ) {
75 base = $.Widget; 74 base = $.Widget;
76 } 75 }
77 76
78 - if ( $.isArray( prototype ) ) { 77 + if ( Array.isArray( prototype ) ) {
79 prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); 78 prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
80 } 79 }
81 80
82 // Create selector for plugin 81 // Create selector for plugin
83 - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { 82 + $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
84 return !!$.data( elem, fullName ); 83 return !!$.data( elem, fullName );
85 }; 84 };
86 85
@@ -89,7 +88,7 @@ $.widget = function( name, base, prototype ) { @@ -89,7 +88,7 @@ $.widget = function( name, base, prototype ) {
89 constructor = $[ namespace ][ name ] = function( options, element ) { 88 constructor = $[ namespace ][ name ] = function( options, element ) {
90 89
91 // Allow instantiation without "new" keyword 90 // Allow instantiation without "new" keyword
92 - if ( !this._createWidget ) { 91 + if ( !this || !this._createWidget ) {
93 return new constructor( options, element ); 92 return new constructor( options, element );
94 } 93 }
95 94
@@ -120,7 +119,7 @@ $.widget = function( name, base, prototype ) { @@ -120,7 +119,7 @@ $.widget = function( name, base, prototype ) {
120 // inheriting from 119 // inheriting from
121 basePrototype.options = $.widget.extend( {}, basePrototype.options ); 120 basePrototype.options = $.widget.extend( {}, basePrototype.options );
122 $.each( prototype, function( prop, value ) { 121 $.each( prototype, function( prop, value ) {
123 - if ( !$.isFunction( value ) ) { 122 + if ( typeof value !== "function" ) {
124 proxiedPrototype[ prop ] = value; 123 proxiedPrototype[ prop ] = value;
125 return; 124 return;
126 } 125 }
@@ -199,7 +198,7 @@ $.widget.extend = function( target ) { @@ -199,7 +198,7 @@ $.widget.extend = function( target ) {
199 for ( ; inputIndex < inputLength; inputIndex++ ) { 198 for ( ; inputIndex < inputLength; inputIndex++ ) {
200 for ( key in input[ inputIndex ] ) { 199 for ( key in input[ inputIndex ] ) {
201 value = input[ inputIndex ][ key ]; 200 value = input[ inputIndex ][ key ];
202 - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { 201 + if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
203 202
204 // Clone objects 203 // Clone objects
205 if ( $.isPlainObject( value ) ) { 204 if ( $.isPlainObject( value ) ) {
@@ -248,7 +247,8 @@ $.widget.bridge = function( name, object ) { @@ -248,7 +247,8 @@ $.widget.bridge = function( name, object ) {
248 "attempted to call method '" + options + "'" ); 247 "attempted to call method '" + options + "'" );
249 } 248 }
250 249
251 - if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { 250 + if ( typeof instance[ options ] !== "function" ||
  251 + options.charAt( 0 ) === "_" ) {
252 return $.error( "no such method '" + options + "' for " + name + 252 return $.error( "no such method '" + options + "' for " + name +
253 " widget instance" ); 253 " widget instance" );
254 } 254 }
@@ -509,12 +509,34 @@ $.Widget.prototype = { @@ -509,12 +509,34 @@ $.Widget.prototype = {
509 classes: this.options.classes || {} 509 classes: this.options.classes || {}
510 }, options ); 510 }, options );
511 511
  512 + function bindRemoveEvent() {
  513 + var nodesToBind = [];
  514 +
  515 + options.element.each( function( _, element ) {
  516 + var isTracked = $.map( that.classesElementLookup, function( elements ) {
  517 + return elements;
  518 + } )
  519 + .some( function( elements ) {
  520 + return elements.is( element );
  521 + } );
  522 +
  523 + if ( !isTracked ) {
  524 + nodesToBind.push( element );
  525 + }
  526 + } );
  527 +
  528 + that._on( $( nodesToBind ), {
  529 + remove: "_untrackClassesElement"
  530 + } );
  531 + }
  532 +
512 function processClassString( classes, checkOption ) { 533 function processClassString( classes, checkOption ) {
513 var current, i; 534 var current, i;
514 for ( i = 0; i < classes.length; i++ ) { 535 for ( i = 0; i < classes.length; i++ ) {
515 current = that.classesElementLookup[ classes[ i ] ] || $(); 536 current = that.classesElementLookup[ classes[ i ] ] || $();
516 if ( options.add ) { 537 if ( options.add ) {
517 - current = $( $.unique( current.get().concat( options.element.get() ) ) ); 538 + bindRemoveEvent();
  539 + current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
518 } else { 540 } else {
519 current = $( current.not( options.element ).get() ); 541 current = $( current.not( options.element ).get() );
520 } 542 }
@@ -526,10 +548,6 @@ $.Widget.prototype = { @@ -526,10 +548,6 @@ $.Widget.prototype = {
526 } 548 }
527 } 549 }
528 550
529 - this._on( options.element, {  
530 - "remove": "_untrackClassesElement"  
531 - } );  
532 -  
533 if ( options.keys ) { 551 if ( options.keys ) {
534 processClassString( options.keys.match( /\S+/g ) || [], true ); 552 processClassString( options.keys.match( /\S+/g ) || [], true );
535 } 553 }
@@ -547,6 +565,8 @@ $.Widget.prototype = { @@ -547,6 +565,8 @@ $.Widget.prototype = {
547 that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); 565 that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
548 } 566 }
549 } ); 567 } );
  568 +
  569 + this._off( $( event.target ) );
550 }, 570 },
551 571
552 _removeClass: function( element, keys, extra ) { 572 _removeClass: function( element, keys, extra ) {
@@ -627,7 +647,7 @@ $.Widget.prototype = { @@ -627,7 +647,7 @@ $.Widget.prototype = {
627 _off: function( element, eventName ) { 647 _off: function( element, eventName ) {
628 eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + 648 eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
629 this.eventNamespace; 649 this.eventNamespace;
630 - element.off( eventName ).off( eventName ); 650 + element.off( eventName );
631 651
632 // Clear the stack to avoid memory leaks (#10056) 652 // Clear the stack to avoid memory leaks (#10056)
633 this.bindings = $( this.bindings.not( element ).get() ); 653 this.bindings = $( this.bindings.not( element ).get() );
@@ -693,7 +713,7 @@ $.Widget.prototype = { @@ -693,7 +713,7 @@ $.Widget.prototype = {
693 } 713 }
694 714
695 this.element.trigger( event, data ); 715 this.element.trigger( event, data );
696 - return !( $.isFunction( callback ) && 716 + return !( typeof callback === "function" &&
697 callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || 717 callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
698 event.isDefaultPrevented() ); 718 event.isDefaultPrevented() );
699 } 719 }
@@ -715,6 +735,8 @@ $.each( { show: &quot;fadeIn&quot;, hide: &quot;fadeOut&quot; }, function( method, defaultEffect ) { @@ -715,6 +735,8 @@ $.each( { show: &quot;fadeIn&quot;, hide: &quot;fadeOut&quot; }, function( method, defaultEffect ) {
715 options = options || {}; 735 options = options || {};
716 if ( typeof options === "number" ) { 736 if ( typeof options === "number" ) {
717 options = { duration: options }; 737 options = { duration: options };
  738 + } else if ( options === true ) {
  739 + options = {};
718 } 740 }
719 741
720 hasOptions = !$.isEmptyObject( options ); 742 hasOptions = !$.isEmptyObject( options );
@@ -744,7 +766,7 @@ var widget = $.widget; @@ -744,7 +766,7 @@ var widget = $.widget;
744 766
745 767
746 /*! 768 /*!
747 - * jQuery UI Position 1.12.1 769 + * jQuery UI Position 1.13.2
748 * http://jqueryui.com 770 * http://jqueryui.com
749 * 771 *
750 * Copyright jQuery Foundation and other contributors 772 * Copyright jQuery Foundation and other contributors
@@ -783,6 +805,10 @@ function parseCss( element, property ) { @@ -783,6 +805,10 @@ function parseCss( element, property ) {
783 return parseInt( $.css( element, property ), 10 ) || 0; 805 return parseInt( $.css( element, property ), 10 ) || 0;
784 } 806 }
785 807
  808 +function isWindow( obj ) {
  809 + return obj != null && obj === obj.window;
  810 +}
  811 +
786 function getDimensions( elem ) { 812 function getDimensions( elem ) {
787 var raw = elem[ 0 ]; 813 var raw = elem[ 0 ];
788 if ( raw.nodeType === 9 ) { 814 if ( raw.nodeType === 9 ) {
@@ -792,7 +818,7 @@ function getDimensions( elem ) { @@ -792,7 +818,7 @@ function getDimensions( elem ) {
792 offset: { top: 0, left: 0 } 818 offset: { top: 0, left: 0 }
793 }; 819 };
794 } 820 }
795 - if ( $.isWindow( raw ) ) { 821 + if ( isWindow( raw ) ) {
796 return { 822 return {
797 width: elem.width(), 823 width: elem.width(),
798 height: elem.height(), 824 height: elem.height(),
@@ -819,9 +845,9 @@ $.position = { @@ -819,9 +845,9 @@ $.position = {
819 return cachedScrollbarWidth; 845 return cachedScrollbarWidth;
820 } 846 }
821 var w1, w2, 847 var w1, w2,
822 - div = $( "<div " +  
823 - "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +  
824 - "<div style='height:100px;width:auto;'></div></div>" ), 848 + div = $( "<div style=" +
  849 + "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
  850 + "<div style='height:300px;width:auto;'></div></div>" ),
825 innerDiv = div.children()[ 0 ]; 851 innerDiv = div.children()[ 0 ];
826 852
827 $( "body" ).append( div ); 853 $( "body" ).append( div );
@@ -854,12 +880,12 @@ $.position = { @@ -854,12 +880,12 @@ $.position = {
854 }, 880 },
855 getWithinInfo: function( element ) { 881 getWithinInfo: function( element ) {
856 var withinElement = $( element || window ), 882 var withinElement = $( element || window ),
857 - isWindow = $.isWindow( withinElement[ 0 ] ), 883 + isElemWindow = isWindow( withinElement[ 0 ] ),
858 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, 884 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
859 - hasOffset = !isWindow && !isDocument; 885 + hasOffset = !isElemWindow && !isDocument;
860 return { 886 return {
861 element: withinElement, 887 element: withinElement,
862 - isWindow: isWindow, 888 + isWindow: isElemWindow,
863 isDocument: isDocument, 889 isDocument: isDocument,
864 offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, 890 offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
865 scrollLeft: withinElement.scrollLeft(), 891 scrollLeft: withinElement.scrollLeft(),
@@ -879,7 +905,12 @@ $.fn.position = function( options ) { @@ -879,7 +905,12 @@ $.fn.position = function( options ) {
879 options = $.extend( {}, options ); 905 options = $.extend( {}, options );
880 906
881 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, 907 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
882 - target = $( options.of ), 908 +
  909 + // Make sure string options are treated as CSS selectors
  910 + target = typeof options.of === "string" ?
  911 + $( document ).find( options.of ) :
  912 + $( options.of ),
  913 +
883 within = $.position.getWithinInfo( options.within ), 914 within = $.position.getWithinInfo( options.within ),
884 scrollInfo = $.position.getScrollInfo( within ), 915 scrollInfo = $.position.getScrollInfo( within ),
885 collision = ( options.collision || "flip" ).split( " " ), 916 collision = ( options.collision || "flip" ).split( " " ),
@@ -1232,7 +1263,7 @@ var position = $.ui.position; @@ -1232,7 +1263,7 @@ var position = $.ui.position;
1232 1263
1233 1264
1234 /*! 1265 /*!
1235 - * jQuery UI :data 1.12.1 1266 + * jQuery UI :data 1.13.2
1236 * http://jqueryui.com 1267 * http://jqueryui.com
1237 * 1268 *
1238 * Copyright jQuery Foundation and other contributors 1269 * Copyright jQuery Foundation and other contributors
@@ -1246,7 +1277,7 @@ var position = $.ui.position; @@ -1246,7 +1277,7 @@ var position = $.ui.position;
1246 //>>docs: http://api.jqueryui.com/data-selector/ 1277 //>>docs: http://api.jqueryui.com/data-selector/
1247 1278
1248 1279
1249 -var data = $.extend( $.expr[ ":" ], { 1280 +var data = $.extend( $.expr.pseudos, {
1250 data: $.expr.createPseudo ? 1281 data: $.expr.createPseudo ?
1251 $.expr.createPseudo( function( dataName ) { 1282 $.expr.createPseudo( function( dataName ) {
1252 return function( elem ) { 1283 return function( elem ) {
@@ -1261,7 +1292,7 @@ var data = $.extend( $.expr[ &quot;:&quot; ], { @@ -1261,7 +1292,7 @@ var data = $.extend( $.expr[ &quot;:&quot; ], {
1261 } ); 1292 } );
1262 1293
1263 /*! 1294 /*!
1264 - * jQuery UI Disable Selection 1.12.1 1295 + * jQuery UI Disable Selection 1.13.2
1265 * http://jqueryui.com 1296 * http://jqueryui.com
1266 * 1297 *
1267 * Copyright jQuery Foundation and other contributors 1298 * Copyright jQuery Foundation and other contributors
@@ -1276,7 +1307,6 @@ var data = $.extend( $.expr[ &quot;:&quot; ], { @@ -1276,7 +1307,6 @@ var data = $.extend( $.expr[ &quot;:&quot; ], {
1276 1307
1277 // This file is deprecated 1308 // This file is deprecated
1278 1309
1279 -  
1280 var disableSelection = $.fn.extend( { 1310 var disableSelection = $.fn.extend( {
1281 disableSelection: ( function() { 1311 disableSelection: ( function() {
1282 var eventType = "onselectstart" in document.createElement( "div" ) ? 1312 var eventType = "onselectstart" in document.createElement( "div" ) ?
@@ -1296,56 +1326,37 @@ var disableSelection = $.fn.extend( { @@ -1296,56 +1326,37 @@ var disableSelection = $.fn.extend( {
1296 } ); 1326 } );
1297 1327
1298 1328
1299 -/*!  
1300 - * jQuery UI Effects 1.12.1  
1301 - * http://jqueryui.com  
1302 - *  
1303 - * Copyright jQuery Foundation and other contributors  
1304 - * Released under the MIT license.  
1305 - * http://jquery.org/license  
1306 - */  
1307 -  
1308 -//>>label: Effects Core  
1309 -//>>group: Effects  
1310 -// jscs:disable maximumLineLength  
1311 -//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.  
1312 -// jscs:enable maximumLineLength  
1313 -//>>docs: http://api.jqueryui.com/category/effects-core/  
1314 -//>>demos: http://jqueryui.com/effect/  
1315 -  
1316 -  
1317 1329
1318 -var dataSpace = "ui-effects-",  
1319 - dataSpaceStyle = "ui-effects-style",  
1320 - dataSpaceAnimated = "ui-effects-animated", 1330 +// Create a local jQuery because jQuery Color relies on it and the
  1331 +// global may not exist with AMD and a custom build (#10199).
  1332 +// This module is a noop if used as a regular AMD module.
  1333 +// eslint-disable-next-line no-unused-vars
  1334 +var jQuery = $;
1321 1335
1322 - // Create a local jQuery because jQuery Color relies on it and the  
1323 - // global may not exist with AMD and a custom build (#10199)  
1324 - jQuery = $;  
1325 -  
1326 -$.effects = {  
1327 - effect: {}  
1328 -};  
1329 1336
1330 /*! 1337 /*!
1331 - * jQuery Color Animations v2.1.2 1338 + * jQuery Color Animations v2.2.0
1332 * https://github.com/jquery/jquery-color 1339 * https://github.com/jquery/jquery-color
1333 * 1340 *
1334 - * Copyright 2014 jQuery Foundation and other contributors 1341 + * Copyright OpenJS Foundation and other contributors
1335 * Released under the MIT license. 1342 * Released under the MIT license.
1336 * http://jquery.org/license 1343 * http://jquery.org/license
1337 * 1344 *
1338 - * Date: Wed Jan 16 08:47:09 2013 -0600 1345 + * Date: Sun May 10 09:02:36 2020 +0200
1339 */ 1346 */
1340 -( function( jQuery, undefined ) { 1347 +
  1348 +
1341 1349
1342 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + 1350 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
1343 "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", 1351 "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1344 1352
1345 - // Plusequals test for += 100 -= 100 1353 + class2type = {},
  1354 + toString = class2type.toString,
  1355 +
  1356 + // plusequals test for += 100 -= 100
1346 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, 1357 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
1347 1358
1348 - // A set of RE's that can match strings and generate color tuples. 1359 + // a set of RE's that can match strings and generate color tuples.
1349 stringParsers = [ { 1360 stringParsers = [ {
1350 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, 1361 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1351 parse: function( execResult ) { 1362 parse: function( execResult ) {
@@ -1368,24 +1379,31 @@ $.effects = { @@ -1368,24 +1379,31 @@ $.effects = {
1368 } 1379 }
1369 }, { 1380 }, {
1370 1381
1371 - // This regex ignores A-F because it's compared against an already lowercased string  
1372 - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, 1382 + // this regex ignores A-F because it's compared against an already lowercased string
  1383 + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
1373 parse: function( execResult ) { 1384 parse: function( execResult ) {
1374 return [ 1385 return [
1375 parseInt( execResult[ 1 ], 16 ), 1386 parseInt( execResult[ 1 ], 16 ),
1376 parseInt( execResult[ 2 ], 16 ), 1387 parseInt( execResult[ 2 ], 16 ),
1377 - parseInt( execResult[ 3 ], 16 ) 1388 + parseInt( execResult[ 3 ], 16 ),
  1389 + execResult[ 4 ] ?
  1390 + ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
  1391 + 1
1378 ]; 1392 ];
1379 } 1393 }
1380 }, { 1394 }, {
1381 1395
1382 - // This regex ignores A-F because it's compared against an already lowercased string  
1383 - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, 1396 + // this regex ignores A-F because it's compared against an already lowercased string
  1397 + re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
1384 parse: function( execResult ) { 1398 parse: function( execResult ) {
1385 return [ 1399 return [
1386 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), 1400 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
1387 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), 1401 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
1388 - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) 1402 + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
  1403 + execResult[ 4 ] ?
  1404 + ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
  1405 + .toFixed( 2 ) :
  1406 + 1
1389 ]; 1407 ];
1390 } 1408 }
1391 }, { 1409 }, {
@@ -1401,7 +1419,7 @@ $.effects = { @@ -1401,7 +1419,7 @@ $.effects = {
1401 } 1419 }
1402 } ], 1420 } ],
1403 1421
1404 - // JQuery.Color( ) 1422 + // jQuery.Color( )
1405 color = jQuery.Color = function( color, green, blue, alpha ) { 1423 color = jQuery.Color = function( color, green, blue, alpha ) {
1406 return new jQuery.Color.fn.parse( color, green, blue, alpha ); 1424 return new jQuery.Color.fn.parse( color, green, blue, alpha );
1407 }, 1425 },
@@ -1455,20 +1473,20 @@ $.effects = { @@ -1455,20 +1473,20 @@ $.effects = {
1455 }, 1473 },
1456 support = color.support = {}, 1474 support = color.support = {},
1457 1475
1458 - // Element for support tests 1476 + // element for support tests
1459 supportElem = jQuery( "<p>" )[ 0 ], 1477 supportElem = jQuery( "<p>" )[ 0 ],
1460 1478
1461 - // Colors = jQuery.Color.names 1479 + // colors = jQuery.Color.names
1462 colors, 1480 colors,
1463 1481
1464 - // Local aliases of functions called often 1482 + // local aliases of functions called often
1465 each = jQuery.each; 1483 each = jQuery.each;
1466 1484
1467 -// Determine rgba support immediately 1485 +// determine rgba support immediately
1468 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; 1486 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
1469 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; 1487 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
1470 1488
1471 -// Define cache name and alpha properties 1489 +// define cache name and alpha properties
1472 // for rgba and hsla spaces 1490 // for rgba and hsla spaces
1473 each( spaces, function( spaceName, space ) { 1491 each( spaces, function( spaceName, space ) {
1474 space.cache = "_" + spaceName; 1492 space.cache = "_" + spaceName;
@@ -1479,6 +1497,22 @@ each( spaces, function( spaceName, space ) { @@ -1479,6 +1497,22 @@ each( spaces, function( spaceName, space ) {
1479 }; 1497 };
1480 } ); 1498 } );
1481 1499
  1500 +// Populate the class2type map
  1501 +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
  1502 + function( _i, name ) {
  1503 + class2type[ "[object " + name + "]" ] = name.toLowerCase();
  1504 + } );
  1505 +
  1506 +function getType( obj ) {
  1507 + if ( obj == null ) {
  1508 + return obj + "";
  1509 + }
  1510 +
  1511 + return typeof obj === "object" ?
  1512 + class2type[ toString.call( obj ) ] || "object" :
  1513 + typeof obj;
  1514 +}
  1515 +
1482 function clamp( value, prop, allowEmpty ) { 1516 function clamp( value, prop, allowEmpty ) {
1483 var type = propTypes[ prop.type ] || {}; 1517 var type = propTypes[ prop.type ] || {};
1484 1518
@@ -1497,13 +1531,13 @@ function clamp( value, prop, allowEmpty ) { @@ -1497,13 +1531,13 @@ function clamp( value, prop, allowEmpty ) {
1497 1531
1498 if ( type.mod ) { 1532 if ( type.mod ) {
1499 1533
1500 - // We add mod before modding to make sure that negatives values 1534 + // we add mod before modding to make sure that negatives values
1501 // get converted properly: -10 -> 350 1535 // get converted properly: -10 -> 350
1502 return ( value + type.mod ) % type.mod; 1536 return ( value + type.mod ) % type.mod;
1503 } 1537 }
1504 1538
1505 - // For now all property types without mod have min and max  
1506 - return 0 > value ? 0 : type.max < value ? type.max : value; 1539 + // for now all property types without mod have min and max
  1540 + return Math.min( type.max, Math.max( 0, value ) );
1507 } 1541 }
1508 1542
1509 function stringParse( string ) { 1543 function stringParse( string ) {
@@ -1512,7 +1546,7 @@ function stringParse( string ) { @@ -1512,7 +1546,7 @@ function stringParse( string ) {
1512 1546
1513 string = string.toLowerCase(); 1547 string = string.toLowerCase();
1514 1548
1515 - each( stringParsers, function( i, parser ) { 1549 + each( stringParsers, function( _i, parser ) {
1516 var parsed, 1550 var parsed,
1517 match = parser.re.exec( string ), 1551 match = parser.re.exec( string ),
1518 values = match && parser.parse( match ), 1552 values = match && parser.parse( match ),
@@ -1521,12 +1555,12 @@ function stringParse( string ) { @@ -1521,12 +1555,12 @@ function stringParse( string ) {
1521 if ( values ) { 1555 if ( values ) {
1522 parsed = inst[ spaceName ]( values ); 1556 parsed = inst[ spaceName ]( values );
1523 1557
1524 - // If this was an rgba parse the assignment might happen twice 1558 + // if this was an rgba parse the assignment might happen twice
1525 // oh well.... 1559 // oh well....
1526 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; 1560 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
1527 rgba = inst._rgba = parsed._rgba; 1561 rgba = inst._rgba = parsed._rgba;
1528 1562
1529 - // Exit each( stringParsers ) here because we matched 1563 + // exit each( stringParsers ) here because we matched
1530 return false; 1564 return false;
1531 } 1565 }
1532 } ); 1566 } );
@@ -1534,7 +1568,7 @@ function stringParse( string ) { @@ -1534,7 +1568,7 @@ function stringParse( string ) {
1534 // Found a stringParser that handled it 1568 // Found a stringParser that handled it
1535 if ( rgba.length ) { 1569 if ( rgba.length ) {
1536 1570
1537 - // If this came from a parsed string, force "transparent" when alpha is 0 1571 + // if this came from a parsed string, force "transparent" when alpha is 0
1538 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) 1572 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
1539 if ( rgba.join() === "0,0,0,0" ) { 1573 if ( rgba.join() === "0,0,0,0" ) {
1540 jQuery.extend( rgba, colors.transparent ); 1574 jQuery.extend( rgba, colors.transparent );
@@ -1542,7 +1576,7 @@ function stringParse( string ) { @@ -1542,7 +1576,7 @@ function stringParse( string ) {
1542 return inst; 1576 return inst;
1543 } 1577 }
1544 1578
1545 - // Named colors 1579 + // named colors
1546 return colors[ string ]; 1580 return colors[ string ];
1547 } 1581 }
1548 1582
@@ -1558,10 +1592,10 @@ color.fn = jQuery.extend( color.prototype, { @@ -1558,10 +1592,10 @@ color.fn = jQuery.extend( color.prototype, {
1558 } 1592 }
1559 1593
1560 var inst = this, 1594 var inst = this,
1561 - type = jQuery.type( red ), 1595 + type = getType( red ),
1562 rgba = this._rgba = []; 1596 rgba = this._rgba = [];
1563 1597
1564 - // More than 1 argument specified - assume ( red, green, blue, alpha ) 1598 + // more than 1 argument specified - assume ( red, green, blue, alpha )
1565 if ( green !== undefined ) { 1599 if ( green !== undefined ) {
1566 red = [ red, green, blue, alpha ]; 1600 red = [ red, green, blue, alpha ];
1567 type = "array"; 1601 type = "array";
@@ -1572,7 +1606,7 @@ color.fn = jQuery.extend( color.prototype, { @@ -1572,7 +1606,7 @@ color.fn = jQuery.extend( color.prototype, {
1572 } 1606 }
1573 1607
1574 if ( type === "array" ) { 1608 if ( type === "array" ) {
1575 - each( spaces.rgba.props, function( key, prop ) { 1609 + each( spaces.rgba.props, function( _key, prop ) {
1576 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); 1610 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
1577 } ); 1611 } );
1578 return this; 1612 return this;
@@ -1580,20 +1614,20 @@ color.fn = jQuery.extend( color.prototype, { @@ -1580,20 +1614,20 @@ color.fn = jQuery.extend( color.prototype, {
1580 1614
1581 if ( type === "object" ) { 1615 if ( type === "object" ) {
1582 if ( red instanceof color ) { 1616 if ( red instanceof color ) {
1583 - each( spaces, function( spaceName, space ) { 1617 + each( spaces, function( _spaceName, space ) {
1584 if ( red[ space.cache ] ) { 1618 if ( red[ space.cache ] ) {
1585 inst[ space.cache ] = red[ space.cache ].slice(); 1619 inst[ space.cache ] = red[ space.cache ].slice();
1586 } 1620 }
1587 } ); 1621 } );
1588 } else { 1622 } else {
1589 - each( spaces, function( spaceName, space ) { 1623 + each( spaces, function( _spaceName, space ) {
1590 var cache = space.cache; 1624 var cache = space.cache;
1591 each( space.props, function( key, prop ) { 1625 each( space.props, function( key, prop ) {
1592 1626
1593 - // If the cache doesn't exist, and we know how to convert 1627 + // if the cache doesn't exist, and we know how to convert
1594 if ( !inst[ cache ] && space.to ) { 1628 if ( !inst[ cache ] && space.to ) {
1595 1629
1596 - // If the value was null, we don't need to copy it 1630 + // if the value was null, we don't need to copy it
1597 // if the key was alpha, we don't need to copy it either 1631 // if the key was alpha, we don't need to copy it either
1598 if ( key === "alpha" || red[ key ] == null ) { 1632 if ( key === "alpha" || red[ key ] == null ) {
1599 return; 1633 return;
@@ -1601,17 +1635,19 @@ color.fn = jQuery.extend( color.prototype, { @@ -1601,17 +1635,19 @@ color.fn = jQuery.extend( color.prototype, {
1601 inst[ cache ] = space.to( inst._rgba ); 1635 inst[ cache ] = space.to( inst._rgba );
1602 } 1636 }
1603 1637
1604 - // This is the only case where we allow nulls for ALL properties. 1638 + // this is the only case where we allow nulls for ALL properties.
1605 // call clamp with alwaysAllowEmpty 1639 // call clamp with alwaysAllowEmpty
1606 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); 1640 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
1607 } ); 1641 } );
1608 1642
1609 - // Everything defined but alpha?  
1610 - if ( inst[ cache ] &&  
1611 - jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { 1643 + // everything defined but alpha?
  1644 + if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
  1645 +
  1646 + // use the default of 1
  1647 + if ( inst[ cache ][ 3 ] == null ) {
  1648 + inst[ cache ][ 3 ] = 1;
  1649 + }
1612 1650
1613 - // Use the default of 1  
1614 - inst[ cache ][ 3 ] = 1;  
1615 if ( space.from ) { 1651 if ( space.from ) {
1616 inst._rgba = space.from( inst[ cache ] ); 1652 inst._rgba = space.from( inst[ cache ] );
1617 } 1653 }
@@ -1661,18 +1697,18 @@ color.fn = jQuery.extend( color.prototype, { @@ -1661,18 +1697,18 @@ color.fn = jQuery.extend( color.prototype, {
1661 result = start.slice(); 1697 result = start.slice();
1662 1698
1663 end = end[ space.cache ]; 1699 end = end[ space.cache ];
1664 - each( space.props, function( key, prop ) { 1700 + each( space.props, function( _key, prop ) {
1665 var index = prop.idx, 1701 var index = prop.idx,
1666 startValue = start[ index ], 1702 startValue = start[ index ],
1667 endValue = end[ index ], 1703 endValue = end[ index ],
1668 type = propTypes[ prop.type ] || {}; 1704 type = propTypes[ prop.type ] || {};
1669 1705
1670 - // If null, don't override start value 1706 + // if null, don't override start value
1671 if ( endValue === null ) { 1707 if ( endValue === null ) {
1672 return; 1708 return;
1673 } 1709 }
1674 1710
1675 - // If null - use end 1711 + // if null - use end
1676 if ( startValue === null ) { 1712 if ( startValue === null ) {
1677 result[ index ] = endValue; 1713 result[ index ] = endValue;
1678 } else { 1714 } else {
@@ -1690,7 +1726,7 @@ color.fn = jQuery.extend( color.prototype, { @@ -1690,7 +1726,7 @@ color.fn = jQuery.extend( color.prototype, {
1690 }, 1726 },
1691 blend: function( opaque ) { 1727 blend: function( opaque ) {
1692 1728
1693 - // If we are already opaque - return ourself 1729 + // if we are already opaque - return ourself
1694 if ( this._rgba[ 3 ] === 1 ) { 1730 if ( this._rgba[ 3 ] === 1 ) {
1695 return this; 1731 return this;
1696 } 1732 }
@@ -1706,7 +1742,10 @@ color.fn = jQuery.extend( color.prototype, { @@ -1706,7 +1742,10 @@ color.fn = jQuery.extend( color.prototype, {
1706 toRgbaString: function() { 1742 toRgbaString: function() {
1707 var prefix = "rgba(", 1743 var prefix = "rgba(",
1708 rgba = jQuery.map( this._rgba, function( v, i ) { 1744 rgba = jQuery.map( this._rgba, function( v, i ) {
1709 - return v == null ? ( i > 2 ? 1 : 0 ) : v; 1745 + if ( v != null ) {
  1746 + return v;
  1747 + }
  1748 + return i > 2 ? 1 : 0;
1710 } ); 1749 } );
1711 1750
1712 if ( rgba[ 3 ] === 1 ) { 1751 if ( rgba[ 3 ] === 1 ) {
@@ -1723,7 +1762,7 @@ color.fn = jQuery.extend( color.prototype, { @@ -1723,7 +1762,7 @@ color.fn = jQuery.extend( color.prototype, {
1723 v = i > 2 ? 1 : 0; 1762 v = i > 2 ? 1 : 0;
1724 } 1763 }
1725 1764
1726 - // Catch 1 and 2 1765 + // catch 1 and 2
1727 if ( i && i < 3 ) { 1766 if ( i && i < 3 ) {
1728 v = Math.round( v * 100 ) + "%"; 1767 v = Math.round( v * 100 ) + "%";
1729 } 1768 }
@@ -1746,7 +1785,7 @@ color.fn = jQuery.extend( color.prototype, { @@ -1746,7 +1785,7 @@ color.fn = jQuery.extend( color.prototype, {
1746 1785
1747 return "#" + jQuery.map( rgba, function( v ) { 1786 return "#" + jQuery.map( rgba, function( v ) {
1748 1787
1749 - // Default to 0 when nulls exist 1788 + // default to 0 when nulls exist
1750 v = ( v || 0 ).toString( 16 ); 1789 v = ( v || 0 ).toString( 16 );
1751 return v.length === 1 ? "0" + v : v; 1790 return v.length === 1 ? "0" + v : v;
1752 } ).join( "" ); 1791 } ).join( "" );
@@ -1757,7 +1796,7 @@ color.fn = jQuery.extend( color.prototype, { @@ -1757,7 +1796,7 @@ color.fn = jQuery.extend( color.prototype, {
1757 } ); 1796 } );
1758 color.fn.parse.prototype = color.fn; 1797 color.fn.parse.prototype = color.fn;
1759 1798
1760 -// Hsla conversions adapted from: 1799 +// hsla conversions adapted from:
1761 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 1800 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
1762 1801
1763 function hue2rgb( p, q, h ) { 1802 function hue2rgb( p, q, h ) {
@@ -1799,7 +1838,7 @@ spaces.hsla.to = function( rgba ) { @@ -1799,7 +1838,7 @@ spaces.hsla.to = function( rgba ) {
1799 h = ( 60 * ( r - g ) / diff ) + 240; 1838 h = ( 60 * ( r - g ) / diff ) + 240;
1800 } 1839 }
1801 1840
1802 - // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% 1841 + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1803 // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) 1842 // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
1804 if ( diff === 0 ) { 1843 if ( diff === 0 ) {
1805 s = 0; 1844 s = 0;
@@ -1830,16 +1869,17 @@ spaces.hsla.from = function( hsla ) { @@ -1830,16 +1869,17 @@ spaces.hsla.from = function( hsla ) {
1830 ]; 1869 ];
1831 }; 1870 };
1832 1871
  1872 +
1833 each( spaces, function( spaceName, space ) { 1873 each( spaces, function( spaceName, space ) {
1834 var props = space.props, 1874 var props = space.props,
1835 cache = space.cache, 1875 cache = space.cache,
1836 to = space.to, 1876 to = space.to,
1837 from = space.from; 1877 from = space.from;
1838 1878
1839 - // Makes rgba() and hsla() 1879 + // makes rgba() and hsla()
1840 color.fn[ spaceName ] = function( value ) { 1880 color.fn[ spaceName ] = function( value ) {
1841 1881
1842 - // Generate a cache for this space if it doesn't exist 1882 + // generate a cache for this space if it doesn't exist
1843 if ( to && !this[ cache ] ) { 1883 if ( to && !this[ cache ] ) {
1844 this[ cache ] = to( this._rgba ); 1884 this[ cache ] = to( this._rgba );
1845 } 1885 }
@@ -1848,7 +1888,7 @@ each( spaces, function( spaceName, space ) { @@ -1848,7 +1888,7 @@ each( spaces, function( spaceName, space ) {
1848 } 1888 }
1849 1889
1850 var ret, 1890 var ret,
1851 - type = jQuery.type( value ), 1891 + type = getType( value ),
1852 arr = ( type === "array" || type === "object" ) ? value : arguments, 1892 arr = ( type === "array" || type === "object" ) ? value : arguments,
1853 local = this[ cache ].slice(); 1893 local = this[ cache ].slice();
1854 1894
@@ -1869,19 +1909,24 @@ each( spaces, function( spaceName, space ) { @@ -1869,19 +1909,24 @@ each( spaces, function( spaceName, space ) {
1869 } 1909 }
1870 }; 1910 };
1871 1911
1872 - // Makes red() green() blue() alpha() hue() saturation() lightness() 1912 + // makes red() green() blue() alpha() hue() saturation() lightness()
1873 each( props, function( key, prop ) { 1913 each( props, function( key, prop ) {
1874 1914
1875 - // Alpha is included in more than one space 1915 + // alpha is included in more than one space
1876 if ( color.fn[ key ] ) { 1916 if ( color.fn[ key ] ) {
1877 return; 1917 return;
1878 } 1918 }
1879 color.fn[ key ] = function( value ) { 1919 color.fn[ key ] = function( value ) {
1880 - var vtype = jQuery.type( value ),  
1881 - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),  
1882 - local = this[ fn ](),  
1883 - cur = local[ prop.idx ],  
1884 - match; 1920 + var local, cur, match, fn,
  1921 + vtype = getType( value );
  1922 +
  1923 + if ( key === "alpha" ) {
  1924 + fn = this._hsla ? "hsla" : "rgba";
  1925 + } else {
  1926 + fn = spaceName;
  1927 + }
  1928 + local = this[ fn ]();
  1929 + cur = local[ prop.idx ];
1885 1930
1886 if ( vtype === "undefined" ) { 1931 if ( vtype === "undefined" ) {
1887 return cur; 1932 return cur;
@@ -1889,7 +1934,7 @@ each( spaces, function( spaceName, space ) { @@ -1889,7 +1934,7 @@ each( spaces, function( spaceName, space ) {
1889 1934
1890 if ( vtype === "function" ) { 1935 if ( vtype === "function" ) {
1891 value = value.call( this, cur ); 1936 value = value.call( this, cur );
1892 - vtype = jQuery.type( value ); 1937 + vtype = getType( value );
1893 } 1938 }
1894 if ( value == null && prop.empty ) { 1939 if ( value == null && prop.empty ) {
1895 return this; 1940 return this;
@@ -1906,18 +1951,17 @@ each( spaces, function( spaceName, space ) { @@ -1906,18 +1951,17 @@ each( spaces, function( spaceName, space ) {
1906 } ); 1951 } );
1907 } ); 1952 } );
1908 1953
1909 -// Add cssHook and .fx.step function for each named hook. 1954 +// add cssHook and .fx.step function for each named hook.
1910 // accept a space separated string of properties 1955 // accept a space separated string of properties
1911 color.hook = function( hook ) { 1956 color.hook = function( hook ) {
1912 var hooks = hook.split( " " ); 1957 var hooks = hook.split( " " );
1913 - each( hooks, function( i, hook ) { 1958 + each( hooks, function( _i, hook ) {
1914 jQuery.cssHooks[ hook ] = { 1959 jQuery.cssHooks[ hook ] = {
1915 set: function( elem, value ) { 1960 set: function( elem, value ) {
1916 var parsed, curElem, 1961 var parsed, curElem,
1917 backgroundColor = ""; 1962 backgroundColor = "";
1918 1963
1919 - if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||  
1920 - ( parsed = stringParse( value ) ) ) ) { 1964 + if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
1921 value = color( parsed || value ); 1965 value = color( parsed || value );
1922 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { 1966 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
1923 curElem = hook === "backgroundColor" ? elem.parentNode : elem; 1967 curElem = hook === "backgroundColor" ? elem.parentNode : elem;
@@ -1943,8 +1987,7 @@ color.hook = function( hook ) { @@ -1943,8 +1987,7 @@ color.hook = function( hook ) {
1943 elem.style[ hook ] = value; 1987 elem.style[ hook ] = value;
1944 } catch ( e ) { 1988 } catch ( e ) {
1945 1989
1946 - // Wrapped to prevent IE from throwing errors on "invalid" values like  
1947 - // 'auto' or 'inherit' 1990 + // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
1948 } 1991 }
1949 } 1992 }
1950 }; 1993 };
@@ -1966,7 +2009,7 @@ jQuery.cssHooks.borderColor = { @@ -1966,7 +2009,7 @@ jQuery.cssHooks.borderColor = {
1966 expand: function( value ) { 2009 expand: function( value ) {
1967 var expanded = {}; 2010 var expanded = {};
1968 2011
1969 - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { 2012 + each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
1970 expanded[ "border" + part + "Color" ] = value; 2013 expanded[ "border" + part + "Color" ] = value;
1971 } ); 2014 } );
1972 return expanded; 2015 return expanded;
@@ -2002,7 +2045,32 @@ colors = jQuery.Color.names = { @@ -2002,7 +2045,32 @@ colors = jQuery.Color.names = {
2002 _default: "#ffffff" 2045 _default: "#ffffff"
2003 }; 2046 };
2004 2047
2005 -} )( jQuery ); 2048 +
  2049 +/*!
  2050 + * jQuery UI Effects 1.13.2
  2051 + * http://jqueryui.com
  2052 + *
  2053 + * Copyright jQuery Foundation and other contributors
  2054 + * Released under the MIT license.
  2055 + * http://jquery.org/license
  2056 + */
  2057 +
  2058 +//>>label: Effects Core
  2059 +//>>group: Effects
  2060 +/* eslint-disable max-len */
  2061 +//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
  2062 +/* eslint-enable max-len */
  2063 +//>>docs: http://api.jqueryui.com/category/effects-core/
  2064 +//>>demos: http://jqueryui.com/effect/
  2065 +
  2066 +
  2067 +var dataSpace = "ui-effects-",
  2068 + dataSpaceStyle = "ui-effects-style",
  2069 + dataSpaceAnimated = "ui-effects-animated";
  2070 +
  2071 +$.effects = {
  2072 + effect: {}
  2073 +};
2006 2074
2007 /******************************************************************************/ 2075 /******************************************************************************/
2008 /****************************** CLASS ANIMATIONS ******************************/ 2076 /****************************** CLASS ANIMATIONS ******************************/
@@ -2034,6 +2102,12 @@ $.each( @@ -2034,6 +2102,12 @@ $.each(
2034 } 2102 }
2035 ); 2103 );
2036 2104
  2105 +function camelCase( string ) {
  2106 + return string.replace( /-([\da-z])/gi, function( all, letter ) {
  2107 + return letter.toUpperCase();
  2108 + } );
  2109 +}
  2110 +
2037 function getElementStyles( elem ) { 2111 function getElementStyles( elem ) {
2038 var key, len, 2112 var key, len,
2039 style = elem.ownerDocument.defaultView ? 2113 style = elem.ownerDocument.defaultView ?
@@ -2046,7 +2120,7 @@ function getElementStyles( elem ) { @@ -2046,7 +2120,7 @@ function getElementStyles( elem ) {
2046 while ( len-- ) { 2120 while ( len-- ) {
2047 key = style[ len ]; 2121 key = style[ len ];
2048 if ( typeof style[ key ] === "string" ) { 2122 if ( typeof style[ key ] === "string" ) {
2049 - styles[ $.camelCase( key ) ] = style[ key ]; 2123 + styles[ camelCase( key ) ] = style[ key ];
2050 } 2124 }
2051 } 2125 }
2052 2126
@@ -2220,12 +2294,12 @@ $.fn.extend( { @@ -2220,12 +2294,12 @@ $.fn.extend( {
2220 2294
2221 ( function() { 2295 ( function() {
2222 2296
2223 -if ( $.expr && $.expr.filters && $.expr.filters.animated ) {  
2224 - $.expr.filters.animated = ( function( orig ) { 2297 +if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
  2298 + $.expr.pseudos.animated = ( function( orig ) {
2225 return function( elem ) { 2299 return function( elem ) {
2226 return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); 2300 return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
2227 }; 2301 };
2228 - } )( $.expr.filters.animated ); 2302 + } )( $.expr.pseudos.animated );
2229 } 2303 }
2230 2304
2231 if ( $.uiBackCompat !== false ) { 2305 if ( $.uiBackCompat !== false ) {
@@ -2294,6 +2368,7 @@ if ( $.uiBackCompat !== false ) { @@ -2294,6 +2368,7 @@ if ( $.uiBackCompat !== false ) {
2294 // Firefox incorrectly exposes anonymous content 2368 // Firefox incorrectly exposes anonymous content
2295 // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 2369 // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
2296 try { 2370 try {
  2371 + // eslint-disable-next-line no-unused-expressions
2297 active.id; 2372 active.id;
2298 } catch ( e ) { 2373 } catch ( e ) {
2299 active = document.body; 2374 active = document.body;
@@ -2356,7 +2431,7 @@ if ( $.uiBackCompat !== false ) { @@ -2356,7 +2431,7 @@ if ( $.uiBackCompat !== false ) {
2356 } 2431 }
2357 2432
2358 $.extend( $.effects, { 2433 $.extend( $.effects, {
2359 - version: "1.12.1", 2434 + version: "1.13.2",
2360 2435
2361 define: function( name, mode, effect ) { 2436 define: function( name, mode, effect ) {
2362 if ( !effect ) { 2437 if ( !effect ) {
@@ -2572,7 +2647,7 @@ function _normalizeArguments( effect, options, speed, callback ) { @@ -2572,7 +2647,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2572 } 2647 }
2573 2648
2574 // Catch (effect, callback) 2649 // Catch (effect, callback)
2575 - if ( $.isFunction( options ) ) { 2650 + if ( typeof options === "function" ) {
2576 callback = options; 2651 callback = options;
2577 speed = null; 2652 speed = null;
2578 options = {}; 2653 options = {};
@@ -2586,7 +2661,7 @@ function _normalizeArguments( effect, options, speed, callback ) { @@ -2586,7 +2661,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2586 } 2661 }
2587 2662
2588 // Catch (effect, options, callback) 2663 // Catch (effect, options, callback)
2589 - if ( $.isFunction( speed ) ) { 2664 + if ( typeof speed === "function" ) {
2590 callback = speed; 2665 callback = speed;
2591 speed = null; 2666 speed = null;
2592 } 2667 }
@@ -2620,7 +2695,7 @@ function standardAnimationOption( option ) { @@ -2620,7 +2695,7 @@ function standardAnimationOption( option ) {
2620 } 2695 }
2621 2696
2622 // Complete callback 2697 // Complete callback
2623 - if ( $.isFunction( option ) ) { 2698 + if ( typeof option === "function" ) {
2624 return true; 2699 return true;
2625 } 2700 }
2626 2701
@@ -2647,7 +2722,7 @@ $.fn.extend( { @@ -2647,7 +2722,7 @@ $.fn.extend( {
2647 var el = $( this ), 2722 var el = $( this ),
2648 normalizedMode = $.effects.mode( el, mode ) || defaultMode; 2723 normalizedMode = $.effects.mode( el, mode ) || defaultMode;
2649 2724
2650 - // Sentinel for duck-punching the :animated psuedo-selector 2725 + // Sentinel for duck-punching the :animated pseudo-selector
2651 el.data( dataSpaceAnimated, true ); 2726 el.data( dataSpaceAnimated, true );
2652 2727
2653 // Save effect mode for later use, 2728 // Save effect mode for later use,
@@ -2655,7 +2730,7 @@ $.fn.extend( { @@ -2655,7 +2730,7 @@ $.fn.extend( {
2655 // as the .show() below destroys the initial state 2730 // as the .show() below destroys the initial state
2656 modes.push( normalizedMode ); 2731 modes.push( normalizedMode );
2657 2732
2658 - // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 2733 + // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
2659 if ( defaultMode && ( normalizedMode === "show" || 2734 if ( defaultMode && ( normalizedMode === "show" ||
2660 ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { 2735 ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
2661 el.show(); 2736 el.show();
@@ -2665,7 +2740,7 @@ $.fn.extend( { @@ -2665,7 +2740,7 @@ $.fn.extend( {
2665 $.effects.saveStyle( el ); 2740 $.effects.saveStyle( el );
2666 } 2741 }
2667 2742
2668 - if ( $.isFunction( next ) ) { 2743 + if ( typeof next === "function" ) {
2669 next(); 2744 next();
2670 } 2745 }
2671 }; 2746 };
@@ -2700,11 +2775,11 @@ $.fn.extend( { @@ -2700,11 +2775,11 @@ $.fn.extend( {
2700 } 2775 }
2701 2776
2702 function done() { 2777 function done() {
2703 - if ( $.isFunction( complete ) ) { 2778 + if ( typeof complete === "function" ) {
2704 complete.call( elem[ 0 ] ); 2779 complete.call( elem[ 0 ] );
2705 } 2780 }
2706 2781
2707 - if ( $.isFunction( next ) ) { 2782 + if ( typeof next === "function" ) {
2708 next(); 2783 next();
2709 } 2784 }
2710 } 2785 }
@@ -2813,22 +2888,24 @@ $.fn.extend( { @@ -2813,22 +2888,24 @@ $.fn.extend( {
2813 width: target.innerWidth() 2888 width: target.innerWidth()
2814 }, 2889 },
2815 startPosition = element.offset(), 2890 startPosition = element.offset(),
2816 - transfer = $( "<div class='ui-effects-transfer'></div>" )  
2817 - .appendTo( "body" )  
2818 - .addClass( options.className )  
2819 - .css( {  
2820 - top: startPosition.top - fixTop,  
2821 - left: startPosition.left - fixLeft,  
2822 - height: element.innerHeight(),  
2823 - width: element.innerWidth(),  
2824 - position: targetFixed ? "fixed" : "absolute"  
2825 - } )  
2826 - .animate( animation, options.duration, options.easing, function() {  
2827 - transfer.remove();  
2828 - if ( $.isFunction( done ) ) {  
2829 - done();  
2830 - }  
2831 - } ); 2891 + transfer = $( "<div class='ui-effects-transfer'></div>" );
  2892 +
  2893 + transfer
  2894 + .appendTo( "body" )
  2895 + .addClass( options.className )
  2896 + .css( {
  2897 + top: startPosition.top - fixTop,
  2898 + left: startPosition.left - fixLeft,
  2899 + height: element.innerHeight(),
  2900 + width: element.innerWidth(),
  2901 + position: targetFixed ? "fixed" : "absolute"
  2902 + } )
  2903 + .animate( animation, options.duration, options.easing, function() {
  2904 + transfer.remove();
  2905 + if ( typeof done === "function" ) {
  2906 + done();
  2907 + }
  2908 + } );
2832 } 2909 }
2833 } ); 2910 } );
2834 2911
@@ -2922,7 +2999,7 @@ var effect = $.effects; @@ -2922,7 +2999,7 @@ var effect = $.effects;
2922 2999
2923 3000
2924 /*! 3001 /*!
2925 - * jQuery UI Effects Blind 1.12.1 3002 + * jQuery UI Effects Blind 1.13.2
2926 * http://jqueryui.com 3003 * http://jqueryui.com
2927 * 3004 *
2928 * Copyright jQuery Foundation and other contributors 3005 * Copyright jQuery Foundation and other contributors
@@ -2937,7 +3014,6 @@ var effect = $.effects; @@ -2937,7 +3014,6 @@ var effect = $.effects;
2937 //>>demos: http://jqueryui.com/effect/ 3014 //>>demos: http://jqueryui.com/effect/
2938 3015
2939 3016
2940 -  
2941 var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { 3017 var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
2942 var map = { 3018 var map = {
2943 up: [ "bottom", "top" ], 3019 up: [ "bottom", "top" ],
@@ -2978,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( &quot;blind&quot;, &quot;hide&quot;, function( options, d @@ -2978,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( &quot;blind&quot;, &quot;hide&quot;, function( options, d
2978 3054
2979 3055
2980 /*! 3056 /*!
2981 - * jQuery UI Effects Bounce 1.12.1 3057 + * jQuery UI Effects Bounce 1.13.2
2982 * http://jqueryui.com 3058 * http://jqueryui.com
2983 * 3059 *
2984 * Copyright jQuery Foundation and other contributors 3060 * Copyright jQuery Foundation and other contributors
@@ -2993,7 +3069,6 @@ var effectsEffectBlind = $.effects.define( &quot;blind&quot;, &quot;hide&quot;, function( options, d @@ -2993,7 +3069,6 @@ var effectsEffectBlind = $.effects.define( &quot;blind&quot;, &quot;hide&quot;, function( options, d
2993 //>>demos: http://jqueryui.com/effect/ 3069 //>>demos: http://jqueryui.com/effect/
2994 3070
2995 3071
2996 -  
2997 var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { 3072 var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
2998 var upAnim, downAnim, refValue, 3073 var upAnim, downAnim, refValue,
2999 element = $( this ), 3074 element = $( this ),
@@ -3074,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( &quot;bounce&quot;, function( options, done ) @@ -3074,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( &quot;bounce&quot;, function( options, done )
3074 3149
3075 3150
3076 /*! 3151 /*!
3077 - * jQuery UI Effects Clip 1.12.1 3152 + * jQuery UI Effects Clip 1.13.2
3078 * http://jqueryui.com 3153 * http://jqueryui.com
3079 * 3154 *
3080 * Copyright jQuery Foundation and other contributors 3155 * Copyright jQuery Foundation and other contributors
@@ -3089,7 +3164,6 @@ var effectsEffectBounce = $.effects.define( &quot;bounce&quot;, function( options, done ) @@ -3089,7 +3164,6 @@ var effectsEffectBounce = $.effects.define( &quot;bounce&quot;, function( options, done )
3089 //>>demos: http://jqueryui.com/effect/ 3164 //>>demos: http://jqueryui.com/effect/
3090 3165
3091 3166
3092 -  
3093 var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { 3167 var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
3094 var start, 3168 var start,
3095 animate = {}, 3169 animate = {},
@@ -3125,7 +3199,7 @@ var effectsEffectClip = $.effects.define( &quot;clip&quot;, &quot;hide&quot;, function( options, don @@ -3125,7 +3199,7 @@ var effectsEffectClip = $.effects.define( &quot;clip&quot;, &quot;hide&quot;, function( options, don
3125 3199
3126 3200
3127 /*! 3201 /*!
3128 - * jQuery UI Effects Drop 1.12.1 3202 + * jQuery UI Effects Drop 1.13.2
3129 * http://jqueryui.com 3203 * http://jqueryui.com
3130 * 3204 *
3131 * Copyright jQuery Foundation and other contributors 3205 * Copyright jQuery Foundation and other contributors
@@ -3140,7 +3214,6 @@ var effectsEffectClip = $.effects.define( &quot;clip&quot;, &quot;hide&quot;, function( options, don @@ -3140,7 +3214,6 @@ var effectsEffectClip = $.effects.define( &quot;clip&quot;, &quot;hide&quot;, function( options, don
3140 //>>demos: http://jqueryui.com/effect/ 3214 //>>demos: http://jqueryui.com/effect/
3141 3215
3142 3216
3143 -  
3144 var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { 3217 var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
3145 3218
3146 var distance, 3219 var distance,
@@ -3180,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( &quot;drop&quot;, &quot;hide&quot;, function( options, don @@ -3180,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( &quot;drop&quot;, &quot;hide&quot;, function( options, don
3180 3253
3181 3254
3182 /*! 3255 /*!
3183 - * jQuery UI Effects Explode 1.12.1 3256 + * jQuery UI Effects Explode 1.13.2
3184 * http://jqueryui.com 3257 * http://jqueryui.com
3185 * 3258 *
3186 * Copyright jQuery Foundation and other contributors 3259 * Copyright jQuery Foundation and other contributors
@@ -3190,14 +3263,13 @@ var effectsEffectDrop = $.effects.define( &quot;drop&quot;, &quot;hide&quot;, function( options, don @@ -3190,14 +3263,13 @@ var effectsEffectDrop = $.effects.define( &quot;drop&quot;, &quot;hide&quot;, function( options, don
3190 3263
3191 //>>label: Explode Effect 3264 //>>label: Explode Effect
3192 //>>group: Effects 3265 //>>group: Effects
3193 -// jscs:disable maximumLineLength 3266 +/* eslint-disable max-len */
3194 //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. 3267 //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
3195 -// jscs:enable maximumLineLength 3268 +/* eslint-enable max-len */
3196 //>>docs: http://api.jqueryui.com/explode-effect/ 3269 //>>docs: http://api.jqueryui.com/explode-effect/
3197 //>>demos: http://jqueryui.com/effect/ 3270 //>>demos: http://jqueryui.com/effect/
3198 3271
3199 3272
3200 -  
3201 var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { 3273 var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
3202 3274
3203 var i, j, left, top, mx, my, 3275 var i, j, left, top, mx, my,
@@ -3277,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( &quot;explode&quot;, &quot;hide&quot;, function( option @@ -3277,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( &quot;explode&quot;, &quot;hide&quot;, function( option
3277 3349
3278 3350
3279 /*! 3351 /*!
3280 - * jQuery UI Effects Fade 1.12.1 3352 + * jQuery UI Effects Fade 1.13.2
3281 * http://jqueryui.com 3353 * http://jqueryui.com
3282 * 3354 *
3283 * Copyright jQuery Foundation and other contributors 3355 * Copyright jQuery Foundation and other contributors
@@ -3292,7 +3364,6 @@ var effectsEffectExplode = $.effects.define( &quot;explode&quot;, &quot;hide&quot;, function( option @@ -3292,7 +3364,6 @@ var effectsEffectExplode = $.effects.define( &quot;explode&quot;, &quot;hide&quot;, function( option
3292 //>>demos: http://jqueryui.com/effect/ 3364 //>>demos: http://jqueryui.com/effect/
3293 3365
3294 3366
3295 -  
3296 var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { 3367 var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
3297 var show = options.mode === "show"; 3368 var show = options.mode === "show";
3298 3369
@@ -3310,7 +3381,7 @@ var effectsEffectFade = $.effects.define( &quot;fade&quot;, &quot;toggle&quot;, function( options, d @@ -3310,7 +3381,7 @@ var effectsEffectFade = $.effects.define( &quot;fade&quot;, &quot;toggle&quot;, function( options, d
3310 3381
3311 3382
3312 /*! 3383 /*!
3313 - * jQuery UI Effects Fold 1.12.1 3384 + * jQuery UI Effects Fold 1.13.2
3314 * http://jqueryui.com 3385 * http://jqueryui.com
3315 * 3386 *
3316 * Copyright jQuery Foundation and other contributors 3387 * Copyright jQuery Foundation and other contributors
@@ -3325,7 +3396,6 @@ var effectsEffectFade = $.effects.define( &quot;fade&quot;, &quot;toggle&quot;, function( options, d @@ -3325,7 +3396,6 @@ var effectsEffectFade = $.effects.define( &quot;fade&quot;, &quot;toggle&quot;, function( options, d
3325 //>>demos: http://jqueryui.com/effect/ 3396 //>>demos: http://jqueryui.com/effect/
3326 3397
3327 3398
3328 -  
3329 var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { 3399 var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
3330 3400
3331 // Create element 3401 // Create element
@@ -3385,7 +3455,7 @@ var effectsEffectFold = $.effects.define( &quot;fold&quot;, &quot;hide&quot;, function( options, don @@ -3385,7 +3455,7 @@ var effectsEffectFold = $.effects.define( &quot;fold&quot;, &quot;hide&quot;, function( options, don
3385 3455
3386 3456
3387 /*! 3457 /*!
3388 - * jQuery UI Effects Highlight 1.12.1 3458 + * jQuery UI Effects Highlight 1.13.2
3389 * http://jqueryui.com 3459 * http://jqueryui.com
3390 * 3460 *
3391 * Copyright jQuery Foundation and other contributors 3461 * Copyright jQuery Foundation and other contributors
@@ -3400,7 +3470,6 @@ var effectsEffectFold = $.effects.define( &quot;fold&quot;, &quot;hide&quot;, function( options, don @@ -3400,7 +3470,6 @@ var effectsEffectFold = $.effects.define( &quot;fold&quot;, &quot;hide&quot;, function( options, don
3400 //>>demos: http://jqueryui.com/effect/ 3470 //>>demos: http://jqueryui.com/effect/
3401 3471
3402 3472
3403 -  
3404 var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { 3473 var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
3405 var element = $( this ), 3474 var element = $( this ),
3406 animation = { 3475 animation = {
@@ -3428,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( &quot;highlight&quot;, &quot;show&quot;, function( op @@ -3428,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( &quot;highlight&quot;, &quot;show&quot;, function( op
3428 3497
3429 3498
3430 /*! 3499 /*!
3431 - * jQuery UI Effects Size 1.12.1 3500 + * jQuery UI Effects Size 1.13.2
3432 * http://jqueryui.com 3501 * http://jqueryui.com
3433 * 3502 *
3434 * Copyright jQuery Foundation and other contributors 3503 * Copyright jQuery Foundation and other contributors
@@ -3443,7 +3512,6 @@ var effectsEffectHighlight = $.effects.define( &quot;highlight&quot;, &quot;show&quot;, function( op @@ -3443,7 +3512,6 @@ var effectsEffectHighlight = $.effects.define( &quot;highlight&quot;, &quot;show&quot;, function( op
3443 //>>demos: http://jqueryui.com/effect/ 3512 //>>demos: http://jqueryui.com/effect/
3444 3513
3445 3514
3446 -  
3447 var effectsEffectSize = $.effects.define( "size", function( options, done ) { 3515 var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3448 3516
3449 // Create element 3517 // Create element
@@ -3520,6 +3588,8 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) { @@ -3520,6 +3588,8 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) {
3520 to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; 3588 to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
3521 to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; 3589 to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
3522 } 3590 }
  3591 + delete from.outerHeight;
  3592 + delete from.outerWidth;
3523 element.css( from ); 3593 element.css( from );
3524 3594
3525 // Animate the children if desired 3595 // Animate the children if desired
@@ -3605,7 +3675,7 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) { @@ -3605,7 +3675,7 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) {
3605 3675
3606 3676
3607 /*! 3677 /*!
3608 - * jQuery UI Effects Scale 1.12.1 3678 + * jQuery UI Effects Scale 1.13.2
3609 * http://jqueryui.com 3679 * http://jqueryui.com
3610 * 3680 *
3611 * Copyright jQuery Foundation and other contributors 3681 * Copyright jQuery Foundation and other contributors
@@ -3620,7 +3690,6 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) { @@ -3620,7 +3690,6 @@ var effectsEffectSize = $.effects.define( &quot;size&quot;, function( options, done ) {
3620 //>>demos: http://jqueryui.com/effect/ 3690 //>>demos: http://jqueryui.com/effect/
3621 3691
3622 3692
3623 -  
3624 var effectsEffectScale = $.effects.define( "scale", function( options, done ) { 3693 var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3625 3694
3626 // Create element 3695 // Create element
@@ -3646,7 +3715,7 @@ var effectsEffectScale = $.effects.define( &quot;scale&quot;, function( options, done ) { @@ -3646,7 +3715,7 @@ var effectsEffectScale = $.effects.define( &quot;scale&quot;, function( options, done ) {
3646 3715
3647 3716
3648 /*! 3717 /*!
3649 - * jQuery UI Effects Puff 1.12.1 3718 + * jQuery UI Effects Puff 1.13.2
3650 * http://jqueryui.com 3719 * http://jqueryui.com
3651 * 3720 *
3652 * Copyright jQuery Foundation and other contributors 3721 * Copyright jQuery Foundation and other contributors
@@ -3661,7 +3730,6 @@ var effectsEffectScale = $.effects.define( &quot;scale&quot;, function( options, done ) { @@ -3661,7 +3730,6 @@ var effectsEffectScale = $.effects.define( &quot;scale&quot;, function( options, done ) {
3661 //>>demos: http://jqueryui.com/effect/ 3730 //>>demos: http://jqueryui.com/effect/
3662 3731
3663 3732
3664 -  
3665 var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { 3733 var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
3666 var newOptions = $.extend( true, {}, options, { 3734 var newOptions = $.extend( true, {}, options, {
3667 fade: true, 3735 fade: true,
@@ -3673,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( &quot;puff&quot;, &quot;hide&quot;, function( options, don @@ -3673,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( &quot;puff&quot;, &quot;hide&quot;, function( options, don
3673 3741
3674 3742
3675 /*! 3743 /*!
3676 - * jQuery UI Effects Pulsate 1.12.1 3744 + * jQuery UI Effects Pulsate 1.13.2
3677 * http://jqueryui.com 3745 * http://jqueryui.com
3678 * 3746 *
3679 * Copyright jQuery Foundation and other contributors 3747 * Copyright jQuery Foundation and other contributors
@@ -3688,7 +3756,6 @@ var effectsEffectPuff = $.effects.define( &quot;puff&quot;, &quot;hide&quot;, function( options, don @@ -3688,7 +3756,6 @@ var effectsEffectPuff = $.effects.define( &quot;puff&quot;, &quot;hide&quot;, function( options, don
3688 //>>demos: http://jqueryui.com/effect/ 3756 //>>demos: http://jqueryui.com/effect/
3689 3757
3690 3758
3691 -  
3692 var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { 3759 var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
3693 var element = $( this ), 3760 var element = $( this ),
3694 mode = options.mode, 3761 mode = options.mode,
@@ -3723,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( &quot;pulsate&quot;, &quot;show&quot;, function( option @@ -3723,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( &quot;pulsate&quot;, &quot;show&quot;, function( option
3723 3790
3724 3791
3725 /*! 3792 /*!
3726 - * jQuery UI Effects Shake 1.12.1 3793 + * jQuery UI Effects Shake 1.13.2
3727 * http://jqueryui.com 3794 * http://jqueryui.com
3728 * 3795 *
3729 * Copyright jQuery Foundation and other contributors 3796 * Copyright jQuery Foundation and other contributors
@@ -3738,7 +3805,6 @@ var effectsEffectPulsate = $.effects.define( &quot;pulsate&quot;, &quot;show&quot;, function( option @@ -3738,7 +3805,6 @@ var effectsEffectPulsate = $.effects.define( &quot;pulsate&quot;, &quot;show&quot;, function( option
3738 //>>demos: http://jqueryui.com/effect/ 3805 //>>demos: http://jqueryui.com/effect/
3739 3806
3740 3807
3741 -  
3742 var effectsEffectShake = $.effects.define( "shake", function( options, done ) { 3808 var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3743 3809
3744 var i = 1, 3810 var i = 1,
@@ -3783,7 +3849,7 @@ var effectsEffectShake = $.effects.define( &quot;shake&quot;, function( options, done ) { @@ -3783,7 +3849,7 @@ var effectsEffectShake = $.effects.define( &quot;shake&quot;, function( options, done ) {
3783 3849
3784 3850
3785 /*! 3851 /*!
3786 - * jQuery UI Effects Slide 1.12.1 3852 + * jQuery UI Effects Slide 1.13.2
3787 * http://jqueryui.com 3853 * http://jqueryui.com
3788 * 3854 *
3789 * Copyright jQuery Foundation and other contributors 3855 * Copyright jQuery Foundation and other contributors
@@ -3798,7 +3864,6 @@ var effectsEffectShake = $.effects.define( &quot;shake&quot;, function( options, done ) { @@ -3798,7 +3864,6 @@ var effectsEffectShake = $.effects.define( &quot;shake&quot;, function( options, done ) {
3798 //>>demos: http://jqueryui.com/effect/ 3864 //>>demos: http://jqueryui.com/effect/
3799 3865
3800 3866
3801 -  
3802 var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { 3867 var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
3803 var startClip, startRef, 3868 var startClip, startRef,
3804 element = $( this ), 3869 element = $( this ),
@@ -3845,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( &quot;slide&quot;, &quot;show&quot;, function( options, d @@ -3845,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( &quot;slide&quot;, &quot;show&quot;, function( options, d
3845 3910
3846 3911
3847 /*! 3912 /*!
3848 - * jQuery UI Effects Transfer 1.12.1 3913 + * jQuery UI Effects Transfer 1.13.2
3849 * http://jqueryui.com 3914 * http://jqueryui.com
3850 * 3915 *
3851 * Copyright jQuery Foundation and other contributors 3916 * Copyright jQuery Foundation and other contributors
@@ -3860,7 +3925,6 @@ var effectsEffectSlide = $.effects.define( &quot;slide&quot;, &quot;show&quot;, function( options, d @@ -3860,7 +3925,6 @@ var effectsEffectSlide = $.effects.define( &quot;slide&quot;, &quot;show&quot;, function( options, d
3860 //>>demos: http://jqueryui.com/effect/ 3925 //>>demos: http://jqueryui.com/effect/
3861 3926
3862 3927
3863 -  
3864 var effect; 3928 var effect;
3865 if ( $.uiBackCompat !== false ) { 3929 if ( $.uiBackCompat !== false ) {
3866 effect = $.effects.define( "transfer", function( options, done ) { 3930 effect = $.effects.define( "transfer", function( options, done ) {
@@ -3871,7 +3935,7 @@ var effectsEffectTransfer = effect; @@ -3871,7 +3935,7 @@ var effectsEffectTransfer = effect;
3871 3935
3872 3936
3873 /*! 3937 /*!
3874 - * jQuery UI Focusable 1.12.1 3938 + * jQuery UI Focusable 1.13.2
3875 * http://jqueryui.com 3939 * http://jqueryui.com
3876 * 3940 *
3877 * Copyright jQuery Foundation and other contributors 3941 * Copyright jQuery Foundation and other contributors
@@ -3885,7 +3949,6 @@ var effectsEffectTransfer = effect; @@ -3885,7 +3949,6 @@ var effectsEffectTransfer = effect;
3885 //>>docs: http://api.jqueryui.com/focusable-selector/ 3949 //>>docs: http://api.jqueryui.com/focusable-selector/
3886 3950
3887 3951
3888 -  
3889 // Selectors 3952 // Selectors
3890 $.ui.focusable = function( element, hasTabindex ) { 3953 $.ui.focusable = function( element, hasTabindex ) {
3891 var map, mapName, img, focusableIfVisible, fieldset, 3954 var map, mapName, img, focusableIfVisible, fieldset,
@@ -3932,10 +3995,10 @@ function visible( element ) { @@ -3932,10 +3995,10 @@ function visible( element ) {
3932 element = element.parent(); 3995 element = element.parent();
3933 visibility = element.css( "visibility" ); 3996 visibility = element.css( "visibility" );
3934 } 3997 }
3935 - return visibility !== "hidden"; 3998 + return visibility === "visible";
3936 } 3999 }
3937 4000
3938 -$.extend( $.expr[ ":" ], { 4001 +$.extend( $.expr.pseudos, {
3939 focusable: function( element ) { 4002 focusable: function( element ) {
3940 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); 4003 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
3941 } 4004 }
@@ -3945,17 +4008,16 @@ var focusable = $.ui.focusable; @@ -3945,17 +4008,16 @@ var focusable = $.ui.focusable;
3945 4008
3946 4009
3947 4010
3948 -  
3949 // Support: IE8 Only 4011 // Support: IE8 Only
3950 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop 4012 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
3951 // with a string, so we need to find the proper form. 4013 // with a string, so we need to find the proper form.
3952 -var form = $.fn.form = function() { 4014 +var form = $.fn._form = function() {
3953 return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); 4015 return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
3954 }; 4016 };
3955 4017
3956 4018
3957 /*! 4019 /*!
3958 - * jQuery UI Form Reset Mixin 1.12.1 4020 + * jQuery UI Form Reset Mixin 1.13.2
3959 * http://jqueryui.com 4021 * http://jqueryui.com
3960 * 4022 *
3961 * Copyright jQuery Foundation and other contributors 4023 * Copyright jQuery Foundation and other contributors
@@ -3969,7 +4031,6 @@ var form = $.fn.form = function() { @@ -3969,7 +4031,6 @@ var form = $.fn.form = function() {
3969 //>>docs: http://api.jqueryui.com/form-reset-mixin/ 4031 //>>docs: http://api.jqueryui.com/form-reset-mixin/
3970 4032
3971 4033
3972 -  
3973 var formResetMixin = $.ui.formResetMixin = { 4034 var formResetMixin = $.ui.formResetMixin = {
3974 _formResetHandler: function() { 4035 _formResetHandler: function() {
3975 var form = $( this ); 4036 var form = $( this );
@@ -3984,7 +4045,7 @@ var formResetMixin = $.ui.formResetMixin = { @@ -3984,7 +4045,7 @@ var formResetMixin = $.ui.formResetMixin = {
3984 }, 4045 },
3985 4046
3986 _bindFormResetHandler: function() { 4047 _bindFormResetHandler: function() {
3987 - this.form = this.element.form(); 4048 + this.form = this.element._form();
3988 if ( !this.form.length ) { 4049 if ( !this.form.length ) {
3989 return; 4050 return;
3990 } 4051 }
@@ -4018,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = { @@ -4018,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = {
4018 4079
4019 4080
4020 /*! 4081 /*!
4021 - * jQuery UI Support for jQuery core 1.7.x 1.12.1 4082 + * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2
4022 * http://jqueryui.com 4083 * http://jqueryui.com
4023 * 4084 *
4024 * Copyright jQuery Foundation and other contributors 4085 * Copyright jQuery Foundation and other contributors
@@ -4027,77 +4088,73 @@ var formResetMixin = $.ui.formResetMixin = { @@ -4027,77 +4088,73 @@ var formResetMixin = $.ui.formResetMixin = {
4027 * 4088 *
4028 */ 4089 */
4029 4090
4030 -//>>label: jQuery 1.7 Support 4091 +//>>label: jQuery 1.8+ Support
4031 //>>group: Core 4092 //>>group: Core
4032 -//>>description: Support version 1.7.x of jQuery core  
4033 -  
4034 -  
4035 -  
4036 -// Support: jQuery 1.7 only  
4037 -// Not a great way to check versions, but since we only support 1.7+ and only  
4038 -// need to detect <1.8, this is a simple check that should suffice. Checking  
4039 -// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0  
4040 -// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting  
4041 -// 1.7 anymore). See #11197 for why we're not using feature detection.  
4042 -if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {  
4043 -  
4044 - // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()  
4045 - // Unlike jQuery Core 1.8+, these only support numeric values to set the  
4046 - // dimensions in pixels  
4047 - $.each( [ "Width", "Height" ], function( i, name ) {  
4048 - var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],  
4049 - type = name.toLowerCase(),  
4050 - orig = {  
4051 - innerWidth: $.fn.innerWidth,  
4052 - innerHeight: $.fn.innerHeight,  
4053 - outerWidth: $.fn.outerWidth,  
4054 - outerHeight: $.fn.outerHeight  
4055 - }; 4093 +//>>description: Support version 1.8.x and newer of jQuery core
4056 4094
4057 - function reduce( elem, size, border, margin ) {  
4058 - $.each( side, function() {  
4059 - size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;  
4060 - if ( border ) {  
4061 - size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;  
4062 - }  
4063 - if ( margin ) {  
4064 - size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;  
4065 - }  
4066 - } );  
4067 - return size;  
4068 - }  
4069 4095
4070 - $.fn[ "inner" + name ] = function( size ) {  
4071 - if ( size === undefined ) {  
4072 - return orig[ "inner" + name ].call( this );  
4073 - } 4096 +// Support: jQuery 1.9.x or older
  4097 +// $.expr[ ":" ] is deprecated.
  4098 +if ( !$.expr.pseudos ) {
  4099 + $.expr.pseudos = $.expr[ ":" ];
  4100 +}
4074 4101
4075 - return this.each( function() {  
4076 - $( this ).css( type, reduce( this, size ) + "px" );  
4077 - } );  
4078 - }; 4102 +// Support: jQuery 1.11.x or older
  4103 +// $.unique has been renamed to $.uniqueSort
  4104 +if ( !$.uniqueSort ) {
  4105 + $.uniqueSort = $.unique;
  4106 +}
  4107 +
  4108 +// Support: jQuery 2.2.x or older.
  4109 +// This method has been defined in jQuery 3.0.0.
  4110 +// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
  4111 +if ( !$.escapeSelector ) {
  4112 +
  4113 + // CSS string/identifier serialization
  4114 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
  4115 + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4079 4116
4080 - $.fn[ "outer" + name ] = function( size, margin ) {  
4081 - if ( typeof size !== "number" ) {  
4082 - return orig[ "outer" + name ].call( this, size ); 4117 + var fcssescape = function( ch, asCodePoint ) {
  4118 + if ( asCodePoint ) {
  4119 +
  4120 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
  4121 + if ( ch === "\0" ) {
  4122 + return "\uFFFD";
4083 } 4123 }
4084 4124
4085 - return this.each( function() {  
4086 - $( this ).css( type, reduce( this, size, true, margin ) + "px" );  
4087 - } );  
4088 - };  
4089 - } ); 4125 + // Control characters and (dependent upon position) numbers get escaped as code points
  4126 + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
  4127 + }
4090 4128
4091 - $.fn.addBack = function( selector ) {  
4092 - return this.add( selector == null ?  
4093 - this.prevObject : this.prevObject.filter( selector )  
4094 - ); 4129 + // Other potentially-special ASCII characters get backslash-escaped
  4130 + return "\\" + ch;
  4131 + };
  4132 +
  4133 + $.escapeSelector = function( sel ) {
  4134 + return ( sel + "" ).replace( rcssescape, fcssescape );
4095 }; 4135 };
4096 } 4136 }
4097 4137
  4138 +// Support: jQuery 3.4.x or older
  4139 +// These methods have been defined in jQuery 3.5.0.
  4140 +if ( !$.fn.even || !$.fn.odd ) {
  4141 + $.fn.extend( {
  4142 + even: function() {
  4143 + return this.filter( function( i ) {
  4144 + return i % 2 === 0;
  4145 + } );
  4146 + },
  4147 + odd: function() {
  4148 + return this.filter( function( i ) {
  4149 + return i % 2 === 1;
  4150 + } );
  4151 + }
  4152 + } );
  4153 +}
  4154 +
4098 ; 4155 ;
4099 /*! 4156 /*!
4100 - * jQuery UI Keycode 1.12.1 4157 + * jQuery UI Keycode 1.13.2
4101 * http://jqueryui.com 4158 * http://jqueryui.com
4102 * 4159 *
4103 * Copyright jQuery Foundation and other contributors 4160 * Copyright jQuery Foundation and other contributors
@@ -4131,19 +4188,8 @@ var keycode = $.ui.keyCode = { @@ -4131,19 +4188,8 @@ var keycode = $.ui.keyCode = {
4131 }; 4188 };
4132 4189
4133 4190
4134 -  
4135 -  
4136 -// Internal use only  
4137 -var escapeSelector = $.ui.escapeSelector = ( function() {  
4138 - var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;  
4139 - return function( selector ) {  
4140 - return selector.replace( selectorEscape, "\\$1" );  
4141 - };  
4142 -} )();  
4143 -  
4144 -  
4145 /*! 4191 /*!
4146 - * jQuery UI Labels 1.12.1 4192 + * jQuery UI Labels 1.13.2
4147 * http://jqueryui.com 4193 * http://jqueryui.com
4148 * 4194 *
4149 * Copyright jQuery Foundation and other contributors 4195 * Copyright jQuery Foundation and other contributors
@@ -4157,10 +4203,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() { @@ -4157,10 +4203,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() {
4157 //>>docs: http://api.jqueryui.com/labels/ 4203 //>>docs: http://api.jqueryui.com/labels/
4158 4204
4159 4205
4160 -  
4161 var labels = $.fn.labels = function() { 4206 var labels = $.fn.labels = function() {
4162 var ancestor, selector, id, labels, ancestors; 4207 var ancestor, selector, id, labels, ancestors;
4163 4208
  4209 + if ( !this.length ) {
  4210 + return this.pushStack( [] );
  4211 + }
  4212 +
4164 // Check control.labels first 4213 // Check control.labels first
4165 if ( this[ 0 ].labels && this[ 0 ].labels.length ) { 4214 if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
4166 return this.pushStack( this[ 0 ].labels ); 4215 return this.pushStack( this[ 0 ].labels );
@@ -4183,7 +4232,7 @@ var labels = $.fn.labels = function() { @@ -4183,7 +4232,7 @@ var labels = $.fn.labels = function() {
4183 ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); 4232 ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
4184 4233
4185 // Create a selector for the label based on the id 4234 // Create a selector for the label based on the id
4186 - selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; 4235 + selector = "label[for='" + $.escapeSelector( id ) + "']";
4187 4236
4188 labels = labels.add( ancestors.find( selector ).addBack( selector ) ); 4237 labels = labels.add( ancestors.find( selector ).addBack( selector ) );
4189 4238
@@ -4195,7 +4244,7 @@ var labels = $.fn.labels = function() { @@ -4195,7 +4244,7 @@ var labels = $.fn.labels = function() {
4195 4244
4196 4245
4197 /*! 4246 /*!
4198 - * jQuery UI Scroll Parent 1.12.1 4247 + * jQuery UI Scroll Parent 1.13.2
4199 * http://jqueryui.com 4248 * http://jqueryui.com
4200 * 4249 *
4201 * Copyright jQuery Foundation and other contributors 4250 * Copyright jQuery Foundation and other contributors
@@ -4209,7 +4258,6 @@ var labels = $.fn.labels = function() { @@ -4209,7 +4258,6 @@ var labels = $.fn.labels = function() {
4209 //>>docs: http://api.jqueryui.com/scrollParent/ 4258 //>>docs: http://api.jqueryui.com/scrollParent/
4210 4259
4211 4260
4212 -  
4213 var scrollParent = $.fn.scrollParent = function( includeHidden ) { 4261 var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4214 var position = this.css( "position" ), 4262 var position = this.css( "position" ),
4215 excludeStaticParent = position === "absolute", 4263 excludeStaticParent = position === "absolute",
@@ -4230,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) { @@ -4230,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4230 4278
4231 4279
4232 /*! 4280 /*!
4233 - * jQuery UI Tabbable 1.12.1 4281 + * jQuery UI Tabbable 1.13.2
4234 * http://jqueryui.com 4282 * http://jqueryui.com
4235 * 4283 *
4236 * Copyright jQuery Foundation and other contributors 4284 * Copyright jQuery Foundation and other contributors
@@ -4244,8 +4292,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) { @@ -4244,8 +4292,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4244 //>>docs: http://api.jqueryui.com/tabbable-selector/ 4292 //>>docs: http://api.jqueryui.com/tabbable-selector/
4245 4293
4246 4294
4247 -  
4248 -var tabbable = $.extend( $.expr[ ":" ], { 4295 +var tabbable = $.extend( $.expr.pseudos, {
4249 tabbable: function( element ) { 4296 tabbable: function( element ) {
4250 var tabIndex = $.attr( element, "tabindex" ), 4297 var tabIndex = $.attr( element, "tabindex" ),
4251 hasTabindex = tabIndex != null; 4298 hasTabindex = tabIndex != null;
@@ -4255,7 +4302,7 @@ var tabbable = $.extend( $.expr[ &quot;:&quot; ], { @@ -4255,7 +4302,7 @@ var tabbable = $.extend( $.expr[ &quot;:&quot; ], {
4255 4302
4256 4303
4257 /*! 4304 /*!
4258 - * jQuery UI Unique ID 1.12.1 4305 + * jQuery UI Unique ID 1.13.2
4259 * http://jqueryui.com 4306 * http://jqueryui.com
4260 * 4307 *
4261 * Copyright jQuery Foundation and other contributors 4308 * Copyright jQuery Foundation and other contributors
@@ -4269,7 +4316,6 @@ var tabbable = $.extend( $.expr[ &quot;:&quot; ], { @@ -4269,7 +4316,6 @@ var tabbable = $.extend( $.expr[ &quot;:&quot; ], {
4269 //>>docs: http://api.jqueryui.com/uniqueId/ 4316 //>>docs: http://api.jqueryui.com/uniqueId/
4270 4317
4271 4318
4272 -  
4273 var uniqueId = $.fn.extend( { 4319 var uniqueId = $.fn.extend( {
4274 uniqueId: ( function() { 4320 uniqueId: ( function() {
4275 var uuid = 0; 4321 var uuid = 0;
@@ -4294,7 +4340,7 @@ var uniqueId = $.fn.extend( { @@ -4294,7 +4340,7 @@ var uniqueId = $.fn.extend( {
4294 4340
4295 4341
4296 /*! 4342 /*!
4297 - * jQuery UI Accordion 1.12.1 4343 + * jQuery UI Accordion 1.13.2
4298 * http://jqueryui.com 4344 * http://jqueryui.com
4299 * 4345 *
4300 * Copyright jQuery Foundation and other contributors 4346 * Copyright jQuery Foundation and other contributors
@@ -4304,9 +4350,9 @@ var uniqueId = $.fn.extend( { @@ -4304,9 +4350,9 @@ var uniqueId = $.fn.extend( {
4304 4350
4305 //>>label: Accordion 4351 //>>label: Accordion
4306 //>>group: Widgets 4352 //>>group: Widgets
4307 -// jscs:disable maximumLineLength 4353 +/* eslint-disable max-len */
4308 //>>description: Displays collapsible content panels for presenting information in a limited amount of space. 4354 //>>description: Displays collapsible content panels for presenting information in a limited amount of space.
4309 -// jscs:enable maximumLineLength 4355 +/* eslint-enable max-len */
4310 //>>docs: http://api.jqueryui.com/accordion/ 4356 //>>docs: http://api.jqueryui.com/accordion/
4311 //>>demos: http://jqueryui.com/accordion/ 4357 //>>demos: http://jqueryui.com/accordion/
4312 //>>css.structure: ../../themes/base/core.css 4358 //>>css.structure: ../../themes/base/core.css
@@ -4314,9 +4360,8 @@ var uniqueId = $.fn.extend( { @@ -4314,9 +4360,8 @@ var uniqueId = $.fn.extend( {
4314 //>>css.theme: ../../themes/base/theme.css 4360 //>>css.theme: ../../themes/base/theme.css
4315 4361
4316 4362
4317 -  
4318 var widgetsAccordion = $.widget( "ui.accordion", { 4363 var widgetsAccordion = $.widget( "ui.accordion", {
4319 - version: "1.12.1", 4364 + version: "1.13.2",
4320 options: { 4365 options: {
4321 active: 0, 4366 active: 0,
4322 animate: {}, 4367 animate: {},
@@ -4327,7 +4372,9 @@ var widgetsAccordion = $.widget( &quot;ui.accordion&quot;, { @@ -4327,7 +4372,9 @@ var widgetsAccordion = $.widget( &quot;ui.accordion&quot;, {
4327 }, 4372 },
4328 collapsible: false, 4373 collapsible: false,
4329 event: "click", 4374 event: "click",
4330 - header: "> li > :first-child, > :not(li):even", 4375 + header: function( elem ) {
  4376 + return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
  4377 + },
4331 heightStyle: "auto", 4378 heightStyle: "auto",
4332 icons: { 4379 icons: {
4333 activeHeader: "ui-icon-triangle-1-s", 4380 activeHeader: "ui-icon-triangle-1-s",
@@ -4558,7 +4605,11 @@ var widgetsAccordion = $.widget( &quot;ui.accordion&quot;, { @@ -4558,7 +4605,11 @@ var widgetsAccordion = $.widget( &quot;ui.accordion&quot;, {
4558 var prevHeaders = this.headers, 4605 var prevHeaders = this.headers,
4559 prevPanels = this.panels; 4606 prevPanels = this.panels;
4560 4607
4561 - this.headers = this.element.find( this.options.header ); 4608 + if ( typeof this.options.header === "function" ) {
  4609 + this.headers = this.options.header( this.element );
  4610 + } else {
  4611 + this.headers = this.element.find( this.options.header );
  4612 + }
4562 this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", 4613 this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
4563 "ui-state-default" ); 4614 "ui-state-default" );
4564 4615
@@ -4921,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) { @@ -4921,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4921 4972
4922 4973
4923 /*! 4974 /*!
4924 - * jQuery UI Menu 1.12.1 4975 + * jQuery UI Menu 1.13.2
4925 * http://jqueryui.com 4976 * http://jqueryui.com
4926 * 4977 *
4927 * Copyright jQuery Foundation and other contributors 4978 * Copyright jQuery Foundation and other contributors
@@ -4939,9 +4990,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) { @@ -4939,9 +4990,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4939 //>>css.theme: ../../themes/base/theme.css 4990 //>>css.theme: ../../themes/base/theme.css
4940 4991
4941 4992
4942 -  
4943 var widgetsMenu = $.widget( "ui.menu", { 4993 var widgetsMenu = $.widget( "ui.menu", {
4944 - version: "1.12.1", 4994 + version: "1.13.2",
4945 defaultElement: "<ul>", 4995 defaultElement: "<ul>",
4946 delay: 300, 4996 delay: 300,
4947 options: { 4997 options: {
@@ -4968,6 +5018,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -4968,6 +5018,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
4968 // Flag used to prevent firing of the click handler 5018 // Flag used to prevent firing of the click handler
4969 // as the event bubbles up through nested menus 5019 // as the event bubbles up through nested menus
4970 this.mouseHandled = false; 5020 this.mouseHandled = false;
  5021 + this.lastMousePosition = { x: null, y: null };
4971 this.element 5022 this.element
4972 .uniqueId() 5023 .uniqueId()
4973 .attr( { 5024 .attr( {
@@ -4982,6 +5033,8 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -4982,6 +5033,8 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
4982 // them (focus should always stay on UL during navigation). 5033 // them (focus should always stay on UL during navigation).
4983 "mousedown .ui-menu-item": function( event ) { 5034 "mousedown .ui-menu-item": function( event ) {
4984 event.preventDefault(); 5035 event.preventDefault();
  5036 +
  5037 + this._activateItem( event );
4985 }, 5038 },
4986 "click .ui-menu-item": function( event ) { 5039 "click .ui-menu-item": function( event ) {
4987 var target = $( event.target ); 5040 var target = $( event.target );
@@ -5011,36 +5064,15 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5011,36 +5064,15 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5011 } 5064 }
5012 } 5065 }
5013 }, 5066 },
5014 - "mouseenter .ui-menu-item": function( event ) {  
5015 -  
5016 - // Ignore mouse events while typeahead is active, see #10458.  
5017 - // Prevents focusing the wrong item when typeahead causes a scroll while the mouse  
5018 - // is over an item in the menu  
5019 - if ( this.previousFilter ) {  
5020 - return;  
5021 - }  
5022 -  
5023 - var actualTarget = $( event.target ).closest( ".ui-menu-item" ),  
5024 - target = $( event.currentTarget );  
5025 -  
5026 - // Ignore bubbled events on parent items, see #11641  
5027 - if ( actualTarget[ 0 ] !== target[ 0 ] ) {  
5028 - return;  
5029 - }  
5030 -  
5031 - // Remove ui-state-active class from siblings of the newly focused menu item  
5032 - // to avoid a jump caused by adjacent elements both having a class with a border  
5033 - this._removeClass( target.siblings().children( ".ui-state-active" ),  
5034 - null, "ui-state-active" );  
5035 - this.focus( event, target );  
5036 - }, 5067 + "mouseenter .ui-menu-item": "_activateItem",
  5068 + "mousemove .ui-menu-item": "_activateItem",
5037 mouseleave: "collapseAll", 5069 mouseleave: "collapseAll",
5038 "mouseleave .ui-menu": "collapseAll", 5070 "mouseleave .ui-menu": "collapseAll",
5039 focus: function( event, keepActiveItem ) { 5071 focus: function( event, keepActiveItem ) {
5040 5072
5041 // If there's already an active item, keep it active 5073 // If there's already an active item, keep it active
5042 // If not, activate the first item 5074 // If not, activate the first item
5043 - var item = this.active || this.element.find( this.options.items ).eq( 0 ); 5075 + var item = this.active || this._menuItems().first();
5044 5076
5045 if ( !keepActiveItem ) { 5077 if ( !keepActiveItem ) {
5046 this.focus( event, item ); 5078 this.focus( event, item );
@@ -5066,7 +5098,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5066,7 +5098,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5066 this._on( this.document, { 5098 this._on( this.document, {
5067 click: function( event ) { 5099 click: function( event ) {
5068 if ( this._closeOnDocumentClick( event ) ) { 5100 if ( this._closeOnDocumentClick( event ) ) {
5069 - this.collapseAll( event ); 5101 + this.collapseAll( event, true );
5070 } 5102 }
5071 5103
5072 // Reset the mouseHandled flag 5104 // Reset the mouseHandled flag
@@ -5075,6 +5107,46 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5075,6 +5107,46 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5075 } ); 5107 } );
5076 }, 5108 },
5077 5109
  5110 + _activateItem: function( event ) {
  5111 +
  5112 + // Ignore mouse events while typeahead is active, see #10458.
  5113 + // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
  5114 + // is over an item in the menu
  5115 + if ( this.previousFilter ) {
  5116 + return;
  5117 + }
  5118 +
  5119 + // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
  5120 + if ( event.clientX === this.lastMousePosition.x &&
  5121 + event.clientY === this.lastMousePosition.y ) {
  5122 + return;
  5123 + }
  5124 +
  5125 + this.lastMousePosition = {
  5126 + x: event.clientX,
  5127 + y: event.clientY
  5128 + };
  5129 +
  5130 + var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
  5131 + target = $( event.currentTarget );
  5132 +
  5133 + // Ignore bubbled events on parent items, see #11641
  5134 + if ( actualTarget[ 0 ] !== target[ 0 ] ) {
  5135 + return;
  5136 + }
  5137 +
  5138 + // If the item is already active, there's nothing to do
  5139 + if ( target.is( ".ui-state-active" ) ) {
  5140 + return;
  5141 + }
  5142 +
  5143 + // Remove ui-state-active class from siblings of the newly focused menu item
  5144 + // to avoid a jump caused by adjacent elements both having a class with a border
  5145 + this._removeClass( target.siblings().children( ".ui-state-active" ),
  5146 + null, "ui-state-active" );
  5147 + this.focus( event, target );
  5148 + },
  5149 +
5078 _destroy: function() { 5150 _destroy: function() {
5079 var items = this.element.find( ".ui-menu-item" ) 5151 var items = this.element.find( ".ui-menu-item" )
5080 .removeAttr( "role aria-disabled" ), 5152 .removeAttr( "role aria-disabled" ),
@@ -5406,7 +5478,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5406,7 +5478,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5406 this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" ); 5478 this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
5407 5479
5408 this.activeMenu = currentMenu; 5480 this.activeMenu = currentMenu;
5409 - }, this.delay ); 5481 + }, all ? 0 : this.delay );
5410 }, 5482 },
5411 5483
5412 // With no arguments, closes the currently active menu - if nothing is active 5484 // With no arguments, closes the currently active menu - if nothing is active
@@ -5442,11 +5514,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5442,11 +5514,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5442 }, 5514 },
5443 5515
5444 expand: function( event ) { 5516 expand: function( event ) {
5445 - var newItem = this.active &&  
5446 - this.active  
5447 - .children( ".ui-menu " )  
5448 - .find( this.options.items )  
5449 - .first(); 5517 + var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
5450 5518
5451 if ( newItem && newItem.length ) { 5519 if ( newItem && newItem.length ) {
5452 this._open( newItem.parent() ); 5520 this._open( newItem.parent() );
@@ -5474,21 +5542,27 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5474,21 +5542,27 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5474 return this.active && !this.active.nextAll( ".ui-menu-item" ).length; 5542 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
5475 }, 5543 },
5476 5544
  5545 + _menuItems: function( menu ) {
  5546 + return ( menu || this.element )
  5547 + .find( this.options.items )
  5548 + .filter( ".ui-menu-item" );
  5549 + },
  5550 +
5477 _move: function( direction, filter, event ) { 5551 _move: function( direction, filter, event ) {
5478 var next; 5552 var next;
5479 if ( this.active ) { 5553 if ( this.active ) {
5480 if ( direction === "first" || direction === "last" ) { 5554 if ( direction === "first" || direction === "last" ) {
5481 next = this.active 5555 next = this.active
5482 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) 5556 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
5483 - .eq( -1 ); 5557 + .last();
5484 } else { 5558 } else {
5485 next = this.active 5559 next = this.active
5486 [ direction + "All" ]( ".ui-menu-item" ) 5560 [ direction + "All" ]( ".ui-menu-item" )
5487 - .eq( 0 ); 5561 + .first();
5488 } 5562 }
5489 } 5563 }
5490 if ( !next || !next.length || !this.active ) { 5564 if ( !next || !next.length || !this.active ) {
5491 - next = this.activeMenu.find( this.options.items )[ filter ](); 5565 + next = this._menuItems( this.activeMenu )[ filter ]();
5492 } 5566 }
5493 5567
5494 this.focus( event, next ); 5568 this.focus( event, next );
@@ -5506,7 +5580,13 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5506,7 +5580,13 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5506 } 5580 }
5507 if ( this._hasScroll() ) { 5581 if ( this._hasScroll() ) {
5508 base = this.active.offset().top; 5582 base = this.active.offset().top;
5509 - height = this.element.height(); 5583 + height = this.element.innerHeight();
  5584 +
  5585 + // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
  5586 + if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
  5587 + height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
  5588 + }
  5589 +
5510 this.active.nextAll( ".ui-menu-item" ).each( function() { 5590 this.active.nextAll( ".ui-menu-item" ).each( function() {
5511 item = $( this ); 5591 item = $( this );
5512 return item.offset().top - base - height < 0; 5592 return item.offset().top - base - height < 0;
@@ -5514,7 +5594,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5514,7 +5594,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5514 5594
5515 this.focus( event, item ); 5595 this.focus( event, item );
5516 } else { 5596 } else {
5517 - this.focus( event, this.activeMenu.find( this.options.items ) 5597 + this.focus( event, this._menuItems( this.activeMenu )
5518 [ !this.active ? "first" : "last" ]() ); 5598 [ !this.active ? "first" : "last" ]() );
5519 } 5599 }
5520 }, 5600 },
@@ -5530,7 +5610,13 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5530,7 +5610,13 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5530 } 5610 }
5531 if ( this._hasScroll() ) { 5611 if ( this._hasScroll() ) {
5532 base = this.active.offset().top; 5612 base = this.active.offset().top;
5533 - height = this.element.height(); 5613 + height = this.element.innerHeight();
  5614 +
  5615 + // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
  5616 + if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
  5617 + height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
  5618 + }
  5619 +
5534 this.active.prevAll( ".ui-menu-item" ).each( function() { 5620 this.active.prevAll( ".ui-menu-item" ).each( function() {
5535 item = $( this ); 5621 item = $( this );
5536 return item.offset().top - base + height > 0; 5622 return item.offset().top - base + height > 0;
@@ -5538,7 +5624,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5538,7 +5624,7 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5538 5624
5539 this.focus( event, item ); 5625 this.focus( event, item );
5540 } else { 5626 } else {
5541 - this.focus( event, this.activeMenu.find( this.options.items ).first() ); 5627 + this.focus( event, this._menuItems( this.activeMenu ).first() );
5542 } 5628 }
5543 }, 5629 },
5544 5630
@@ -5569,14 +5655,15 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5569,14 +5655,15 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5569 .filter( ".ui-menu-item" ) 5655 .filter( ".ui-menu-item" )
5570 .filter( function() { 5656 .filter( function() {
5571 return regex.test( 5657 return regex.test(
5572 - $.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) ); 5658 + String.prototype.trim.call(
  5659 + $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5573 } ); 5660 } );
5574 } 5661 }
5575 } ); 5662 } );
5576 5663
5577 5664
5578 /*! 5665 /*!
5579 - * jQuery UI Autocomplete 1.12.1 5666 + * jQuery UI Autocomplete 1.13.2
5580 * http://jqueryui.com 5667 * http://jqueryui.com
5581 * 5668 *
5582 * Copyright jQuery Foundation and other contributors 5669 * Copyright jQuery Foundation and other contributors
@@ -5594,9 +5681,8 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, { @@ -5594,9 +5681,8 @@ var widgetsMenu = $.widget( &quot;ui.menu&quot;, {
5594 //>>css.theme: ../../themes/base/theme.css 5681 //>>css.theme: ../../themes/base/theme.css
5595 5682
5596 5683
5597 -  
5598 $.widget( "ui.autocomplete", { 5684 $.widget( "ui.autocomplete", {
5599 - version: "1.12.1", 5685 + version: "1.13.2",
5600 defaultElement: "<input>", 5686 defaultElement: "<input>",
5601 options: { 5687 options: {
5602 appendTo: null, 5688 appendTo: null,
@@ -5622,6 +5708,7 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -5622,6 +5708,7 @@ $.widget( &quot;ui.autocomplete&quot;, {
5622 5708
5623 requestIndex: 0, 5709 requestIndex: 0,
5624 pending: 0, 5710 pending: 0,
  5711 + liveRegionTimer: null,
5625 5712
5626 _create: function() { 5713 _create: function() {
5627 5714
@@ -5759,11 +5846,6 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -5759,11 +5846,6 @@ $.widget( &quot;ui.autocomplete&quot;, {
5759 this.previous = this._value(); 5846 this.previous = this._value();
5760 }, 5847 },
5761 blur: function( event ) { 5848 blur: function( event ) {
5762 - if ( this.cancelBlur ) {  
5763 - delete this.cancelBlur;  
5764 - return;  
5765 - }  
5766 -  
5767 clearTimeout( this.searching ); 5849 clearTimeout( this.searching );
5768 this.close( event ); 5850 this.close( event );
5769 this._change( event ); 5851 this._change( event );
@@ -5779,31 +5861,24 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -5779,31 +5861,24 @@ $.widget( &quot;ui.autocomplete&quot;, {
5779 role: null 5861 role: null
5780 } ) 5862 } )
5781 .hide() 5863 .hide()
  5864 +
  5865 + // Support: IE 11 only, Edge <= 14
  5866 + // For other browsers, we preventDefault() on the mousedown event
  5867 + // to keep the dropdown from taking focus from the input. This doesn't
  5868 + // work for IE/Edge, causing problems with selection and scrolling (#9638)
  5869 + // Happily, IE and Edge support an "unselectable" attribute that
  5870 + // prevents an element from receiving focus, exactly what we want here.
  5871 + .attr( {
  5872 + "unselectable": "on"
  5873 + } )
5782 .menu( "instance" ); 5874 .menu( "instance" );
5783 5875
5784 this._addClass( this.menu.element, "ui-autocomplete", "ui-front" ); 5876 this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
5785 this._on( this.menu.element, { 5877 this._on( this.menu.element, {
5786 mousedown: function( event ) { 5878 mousedown: function( event ) {
5787 5879
5788 - // prevent moving focus out of the text field 5880 + // Prevent moving focus out of the text field
5789 event.preventDefault(); 5881 event.preventDefault();
5790 -  
5791 - // IE doesn't prevent moving focus even with event.preventDefault()  
5792 - // so we set a flag to know when we should ignore the blur event  
5793 - this.cancelBlur = true;  
5794 - this._delay( function() {  
5795 - delete this.cancelBlur;  
5796 -  
5797 - // Support: IE 8 only  
5798 - // Right clicking a menu item or selecting text from the menu items will  
5799 - // result in focus moving out of the input. However, we've already received  
5800 - // and ignored the blur event because of the cancelBlur flag set above. So  
5801 - // we restore focus to ensure that the menu closes properly based on the user's  
5802 - // next actions.  
5803 - if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {  
5804 - this.element.trigger( "focus" );  
5805 - }  
5806 - } );  
5807 }, 5882 },
5808 menufocus: function( event, ui ) { 5883 menufocus: function( event, ui ) {
5809 var label, item; 5884 var label, item;
@@ -5834,9 +5909,11 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -5834,9 +5909,11 @@ $.widget( &quot;ui.autocomplete&quot;, {
5834 5909
5835 // Announce the value in the liveRegion 5910 // Announce the value in the liveRegion
5836 label = ui.item.attr( "aria-label" ) || item.value; 5911 label = ui.item.attr( "aria-label" ) || item.value;
5837 - if ( label && $.trim( label ).length ) {  
5838 - this.liveRegion.children().hide();  
5839 - $( "<div>" ).text( label ).appendTo( this.liveRegion ); 5912 + if ( label && String.prototype.trim.call( label ).length ) {
  5913 + clearTimeout( this.liveRegionTimer );
  5914 + this.liveRegionTimer = this._delay( function() {
  5915 + this.liveRegion.html( $( "<div>" ).text( label ) );
  5916 + }, 100 );
5840 } 5917 }
5841 }, 5918 },
5842 menuselect: function( event, ui ) { 5919 menuselect: function( event, ui ) {
@@ -5946,7 +6023,7 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -5946,7 +6023,7 @@ $.widget( &quot;ui.autocomplete&quot;, {
5946 _initSource: function() { 6023 _initSource: function() {
5947 var array, url, 6024 var array, url,
5948 that = this; 6025 that = this;
5949 - if ( $.isArray( this.options.source ) ) { 6026 + if ( Array.isArray( this.options.source ) ) {
5950 array = this.options.source; 6027 array = this.options.source;
5951 this.source = function( request, response ) { 6028 this.source = function( request, response ) {
5952 response( $.ui.autocomplete.filter( array, request.term ) ); 6029 response( $.ui.autocomplete.filter( array, request.term ) );
@@ -6018,7 +6095,7 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -6018,7 +6095,7 @@ $.widget( &quot;ui.autocomplete&quot;, {
6018 _response: function() { 6095 _response: function() {
6019 var index = ++this.requestIndex; 6096 var index = ++this.requestIndex;
6020 6097
6021 - return $.proxy( function( content ) { 6098 + return function( content ) {
6022 if ( index === this.requestIndex ) { 6099 if ( index === this.requestIndex ) {
6023 this.__response( content ); 6100 this.__response( content );
6024 } 6101 }
@@ -6027,7 +6104,7 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -6027,7 +6104,7 @@ $.widget( &quot;ui.autocomplete&quot;, {
6027 if ( !this.pending ) { 6104 if ( !this.pending ) {
6028 this._removeClass( "ui-autocomplete-loading" ); 6105 this._removeClass( "ui-autocomplete-loading" );
6029 } 6106 }
6030 - }, this ); 6107 + }.bind( this );
6031 }, 6108 },
6032 6109
6033 __response: function( content ) { 6110 __response: function( content ) {
@@ -6187,7 +6264,7 @@ $.widget( &quot;ui.autocomplete&quot;, { @@ -6187,7 +6264,7 @@ $.widget( &quot;ui.autocomplete&quot;, {
6187 var editable = element.prop( "contentEditable" ); 6264 var editable = element.prop( "contentEditable" );
6188 6265
6189 if ( editable === "inherit" ) { 6266 if ( editable === "inherit" ) {
6190 - return this._isContentEditable( element.parent() ); 6267 + return this._isContentEditable( element.parent() );
6191 } 6268 }
6192 6269
6193 return editable === "true"; 6270 return editable === "true";
@@ -6231,8 +6308,10 @@ $.widget( &quot;ui.autocomplete&quot;, $.ui.autocomplete, { @@ -6231,8 +6308,10 @@ $.widget( &quot;ui.autocomplete&quot;, $.ui.autocomplete, {
6231 } else { 6308 } else {
6232 message = this.options.messages.noResults; 6309 message = this.options.messages.noResults;
6233 } 6310 }
6234 - this.liveRegion.children().hide();  
6235 - $( "<div>" ).text( message ).appendTo( this.liveRegion ); 6311 + clearTimeout( this.liveRegionTimer );
  6312 + this.liveRegionTimer = this._delay( function() {
  6313 + this.liveRegion.html( $( "<div>" ).text( message ) );
  6314 + }, 100 );
6236 } 6315 }
6237 } ); 6316 } );
6238 6317
@@ -6240,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete; @@ -6240,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6240 6319
6241 6320
6242 /*! 6321 /*!
6243 - * jQuery UI Controlgroup 1.12.1 6322 + * jQuery UI Controlgroup 1.13.2
6244 * http://jqueryui.com 6323 * http://jqueryui.com
6245 * 6324 *
6246 * Copyright jQuery Foundation and other contributors 6325 * Copyright jQuery Foundation and other contributors
@@ -6261,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete; @@ -6261,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6261 var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g; 6340 var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
6262 6341
6263 var widgetsControlgroup = $.widget( "ui.controlgroup", { 6342 var widgetsControlgroup = $.widget( "ui.controlgroup", {
6264 - version: "1.12.1", 6343 + version: "1.13.2",
6265 defaultElement: "<div>", 6344 defaultElement: "<div>",
6266 options: { 6345 options: {
6267 direction: "horizontal", 6346 direction: "horizontal",
@@ -6378,7 +6457,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, { @@ -6378,7 +6457,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, {
6378 } ); 6457 } );
6379 } ); 6458 } );
6380 6459
6381 - this.childWidgets = $( $.unique( childWidgets ) ); 6460 + this.childWidgets = $( $.uniqueSort( childWidgets ) );
6382 this._addClass( this.childWidgets, "ui-controlgroup-item" ); 6461 this._addClass( this.childWidgets, "ui-controlgroup-item" );
6383 }, 6462 },
6384 6463
@@ -6462,7 +6541,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, { @@ -6462,7 +6541,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, {
6462 var result = {}; 6541 var result = {};
6463 $.each( classes, function( key ) { 6542 $.each( classes, function( key ) {
6464 var current = instance.options.classes[ key ] || ""; 6543 var current = instance.options.classes[ key ] || "";
6465 - current = $.trim( current.replace( controlgroupCornerRegex, "" ) ); 6544 + current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
6466 result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " ); 6545 result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
6467 } ); 6546 } );
6468 return result; 6547 return result;
@@ -6525,7 +6604,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, { @@ -6525,7 +6604,7 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, {
6525 } ); 6604 } );
6526 6605
6527 /*! 6606 /*!
6528 - * jQuery UI Checkboxradio 1.12.1 6607 + * jQuery UI Checkboxradio 1.13.2
6529 * http://jqueryui.com 6608 * http://jqueryui.com
6530 * 6609 *
6531 * Copyright jQuery Foundation and other contributors 6610 * Copyright jQuery Foundation and other contributors
@@ -6544,9 +6623,8 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, { @@ -6544,9 +6623,8 @@ var widgetsControlgroup = $.widget( &quot;ui.controlgroup&quot;, {
6544 //>>css.theme: ../../themes/base/theme.css 6623 //>>css.theme: ../../themes/base/theme.css
6545 6624
6546 6625
6547 -  
6548 $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { 6626 $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6549 - version: "1.12.1", 6627 + version: "1.13.2",
6550 options: { 6628 options: {
6551 disabled: null, 6629 disabled: null,
6552 label: null, 6630 label: null,
@@ -6558,8 +6636,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, { @@ -6558,8 +6636,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, {
6558 }, 6636 },
6559 6637
6560 _getCreateOptions: function() { 6638 _getCreateOptions: function() {
6561 - var disabled, labels;  
6562 - var that = this; 6639 + var disabled, labels, labelContents;
6563 var options = this._super() || {}; 6640 var options = this._super() || {};
6564 6641
6565 // We read the type here, because it makes more sense to throw a element type error first, 6642 // We read the type here, because it makes more sense to throw a element type error first,
@@ -6579,12 +6656,18 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, { @@ -6579,12 +6656,18 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, {
6579 6656
6580 // We need to get the label text but this may also need to make sure it does not contain the 6657 // We need to get the label text but this may also need to make sure it does not contain the
6581 // input itself. 6658 // input itself.
6582 - this.label.contents().not( this.element[ 0 ] ).each( function() { 6659 + // The label contents could be text, html, or a mix. We wrap all elements
  6660 + // and read the wrapper's `innerHTML` to get a string representation of
  6661 + // the label, without the input as part of it.
  6662 + labelContents = this.label.contents().not( this.element[ 0 ] );
6583 6663
6584 - // The label contents could be text, html, or a mix. We concat each element to get a  
6585 - // string representation of the label, without the input as part of it.  
6586 - that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;  
6587 - } ); 6664 + if ( labelContents.length ) {
  6665 + this.originalLabel += labelContents
  6666 + .clone()
  6667 + .wrapAll( "<div></div>" )
  6668 + .parent()
  6669 + .html();
  6670 + }
6588 6671
6589 // Set the label option if we found label text 6672 // Set the label option if we found label text
6590 if ( this.originalLabel ) { 6673 if ( this.originalLabel ) {
@@ -6625,9 +6708,6 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, { @@ -6625,9 +6708,6 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, {
6625 6708
6626 if ( checked ) { 6709 if ( checked ) {
6627 this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" ); 6710 this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
6628 - if ( this.icon ) {  
6629 - this._addClass( this.icon, null, "ui-state-hover" );  
6630 - }  
6631 } 6711 }
6632 6712
6633 this._on( { 6713 this._on( {
@@ -6662,7 +6742,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, { @@ -6662,7 +6742,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, {
6662 _getRadioGroup: function() { 6742 _getRadioGroup: function() {
6663 var group; 6743 var group;
6664 var name = this.element[ 0 ].name; 6744 var name = this.element[ 0 ].name;
6665 - var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']"; 6745 + var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
6666 6746
6667 if ( !name ) { 6747 if ( !name ) {
6668 return $( [] ); 6748 return $( [] );
@@ -6674,7 +6754,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, { @@ -6674,7 +6754,7 @@ $.widget( &quot;ui.checkboxradio&quot;, [ $.ui.formResetMixin, {
6674 6754
6675 // Not inside a form, check all inputs that also are not inside a form 6755 // Not inside a form, check all inputs that also are not inside a form
6676 group = $( nameSelector ).filter( function() { 6756 group = $( nameSelector ).filter( function() {
6677 - return $( this ).form().length === 0; 6757 + return $( this )._form().length === 0;
6678 } ); 6758 } );
6679 } 6759 }
6680 6760
@@ -6795,7 +6875,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio; @@ -6795,7 +6875,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6795 6875
6796 6876
6797 /*! 6877 /*!
6798 - * jQuery UI Button 1.12.1 6878 + * jQuery UI Button 1.13.2
6799 * http://jqueryui.com 6879 * http://jqueryui.com
6800 * 6880 *
6801 * Copyright jQuery Foundation and other contributors 6881 * Copyright jQuery Foundation and other contributors
@@ -6813,9 +6893,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio; @@ -6813,9 +6893,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6813 //>>css.theme: ../../themes/base/theme.css 6893 //>>css.theme: ../../themes/base/theme.css
6814 6894
6815 6895
6816 -  
6817 $.widget( "ui.button", { 6896 $.widget( "ui.button", {
6818 - version: "1.12.1", 6897 + version: "1.13.2",
6819 defaultElement: "<button>", 6898 defaultElement: "<button>",
6820 options: { 6899 options: {
6821 classes: { 6900 classes: {
@@ -7039,7 +7118,7 @@ $.widget( &quot;ui.button&quot;, { @@ -7039,7 +7118,7 @@ $.widget( &quot;ui.button&quot;, {
7039 this._toggleClass( null, "ui-state-disabled", value ); 7118 this._toggleClass( null, "ui-state-disabled", value );
7040 this.element[ 0 ].disabled = value; 7119 this.element[ 0 ].disabled = value;
7041 if ( value ) { 7120 if ( value ) {
7042 - this.element.blur(); 7121 + this.element.trigger( "blur" );
7043 } 7122 }
7044 } 7123 }
7045 }, 7124 },
@@ -7118,22 +7197,82 @@ if ( $.uiBackCompat !== false ) { @@ -7118,22 +7197,82 @@ if ( $.uiBackCompat !== false ) {
7118 } ); 7197 } );
7119 7198
7120 $.fn.button = ( function( orig ) { 7199 $.fn.button = ( function( orig ) {
7121 - return function() {  
7122 - if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||  
7123 - ( this.length && this[ 0 ].tagName === "INPUT" && (  
7124 - this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"  
7125 - ) ) ) {  
7126 - return orig.apply( this, arguments );  
7127 - }  
7128 - if ( !$.ui.checkboxradio ) {  
7129 - $.error( "Checkboxradio widget missing" );  
7130 - }  
7131 - if ( arguments.length === 0 ) {  
7132 - return this.checkboxradio( {  
7133 - "icon": false 7200 + return function( options ) {
  7201 + var isMethodCall = typeof options === "string";
  7202 + var args = Array.prototype.slice.call( arguments, 1 );
  7203 + var returnValue = this;
  7204 +
  7205 + if ( isMethodCall ) {
  7206 +
  7207 + // If this is an empty collection, we need to have the instance method
  7208 + // return undefined instead of the jQuery instance
  7209 + if ( !this.length && options === "instance" ) {
  7210 + returnValue = undefined;
  7211 + } else {
  7212 + this.each( function() {
  7213 + var methodValue;
  7214 + var type = $( this ).attr( "type" );
  7215 + var name = type !== "checkbox" && type !== "radio" ?
  7216 + "button" :
  7217 + "checkboxradio";
  7218 + var instance = $.data( this, "ui-" + name );
  7219 +
  7220 + if ( options === "instance" ) {
  7221 + returnValue = instance;
  7222 + return false;
  7223 + }
  7224 +
  7225 + if ( !instance ) {
  7226 + return $.error( "cannot call methods on button" +
  7227 + " prior to initialization; " +
  7228 + "attempted to call method '" + options + "'" );
  7229 + }
  7230 +
  7231 + if ( typeof instance[ options ] !== "function" ||
  7232 + options.charAt( 0 ) === "_" ) {
  7233 + return $.error( "no such method '" + options + "' for button" +
  7234 + " widget instance" );
  7235 + }
  7236 +
  7237 + methodValue = instance[ options ].apply( instance, args );
  7238 +
  7239 + if ( methodValue !== instance && methodValue !== undefined ) {
  7240 + returnValue = methodValue && methodValue.jquery ?
  7241 + returnValue.pushStack( methodValue.get() ) :
  7242 + methodValue;
  7243 + return false;
  7244 + }
  7245 + } );
  7246 + }
  7247 + } else {
  7248 +
  7249 + // Allow multiple hashes to be passed on init
  7250 + if ( args.length ) {
  7251 + options = $.widget.extend.apply( null, [ options ].concat( args ) );
  7252 + }
  7253 +
  7254 + this.each( function() {
  7255 + var type = $( this ).attr( "type" );
  7256 + var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
  7257 + var instance = $.data( this, "ui-" + name );
  7258 +
  7259 + if ( instance ) {
  7260 + instance.option( options || {} );
  7261 + if ( instance._init ) {
  7262 + instance._init();
  7263 + }
  7264 + } else {
  7265 + if ( name === "button" ) {
  7266 + orig.call( $( this ), options );
  7267 + return;
  7268 + }
  7269 +
  7270 + $( this ).checkboxradio( $.extend( { icon: false }, options ) );
  7271 + }
7134 } ); 7272 } );
7135 } 7273 }
7136 - return this.checkboxradio.apply( this, arguments ); 7274 +
  7275 + return returnValue;
7137 }; 7276 };
7138 } )( $.fn.button ); 7277 } )( $.fn.button );
7139 7278
@@ -7160,10 +7299,9 @@ if ( $.uiBackCompat !== false ) { @@ -7160,10 +7299,9 @@ if ( $.uiBackCompat !== false ) {
7160 var widgetsButton = $.ui.button; 7299 var widgetsButton = $.ui.button;
7161 7300
7162 7301
7163 -// jscs:disable maximumLineLength  
7164 -/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */ 7302 +/* eslint-disable max-len, camelcase */
7165 /*! 7303 /*!
7166 - * jQuery UI Datepicker 1.12.1 7304 + * jQuery UI Datepicker 1.13.2
7167 * http://jqueryui.com 7305 * http://jqueryui.com
7168 * 7306 *
7169 * Copyright jQuery Foundation and other contributors 7307 * Copyright jQuery Foundation and other contributors
@@ -7181,8 +7319,7 @@ var widgetsButton = $.ui.button; @@ -7181,8 +7319,7 @@ var widgetsButton = $.ui.button;
7181 //>>css.theme: ../../themes/base/theme.css 7319 //>>css.theme: ../../themes/base/theme.css
7182 7320
7183 7321
7184 -  
7185 -$.extend( $.ui, { datepicker: { version: "1.12.1" } } ); 7322 +$.extend( $.ui, { datepicker: { version: "1.13.2" } } );
7186 7323
7187 var datepicker_instActive; 7324 var datepicker_instActive;
7188 7325
@@ -7210,6 +7347,7 @@ function datepicker_getZindex( elem ) { @@ -7210,6 +7347,7 @@ function datepicker_getZindex( elem ) {
7210 7347
7211 return 0; 7348 return 0;
7212 } 7349 }
  7350 +
7213 /* Date picker manager. 7351 /* Date picker manager.
7214 Use the singleton instance of this class, $.datepicker, to interact with the date picker. 7352 Use the singleton instance of this class, $.datepicker, to interact with the date picker.
7215 Settings for (groups of) date pickers are maintained in an instance object, 7353 Settings for (groups of) date pickers are maintained in an instance object,
@@ -7236,18 +7374,20 @@ function Datepicker() { @@ -7236,18 +7374,20 @@ function Datepicker() {
7236 prevText: "Prev", // Display text for previous month link 7374 prevText: "Prev", // Display text for previous month link
7237 nextText: "Next", // Display text for next month link 7375 nextText: "Next", // Display text for next month link
7238 currentText: "Today", // Display text for current month link 7376 currentText: "Today", // Display text for current month link
7239 - monthNames: [ "January","February","March","April","May","June",  
7240 - "July","August","September","October","November","December" ], // Names of months for drop-down and formatting 7377 + monthNames: [ "January", "February", "March", "April", "May", "June",
  7378 + "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
7241 monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting 7379 monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
7242 dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting 7380 dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
7243 dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting 7381 dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
7244 - dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday 7382 + dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
7245 weekHeader: "Wk", // Column header for week of the year 7383 weekHeader: "Wk", // Column header for week of the year
7246 dateFormat: "mm/dd/yy", // See format options on parseDate 7384 dateFormat: "mm/dd/yy", // See format options on parseDate
7247 firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... 7385 firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
7248 isRTL: false, // True if right-to-left language, false if left-to-right 7386 isRTL: false, // True if right-to-left language, false if left-to-right
7249 showMonthAfterYear: false, // True if the year select precedes month, false for month then year 7387 showMonthAfterYear: false, // True if the year select precedes month, false for month then year
7250 - yearSuffix: "" // Additional text to append to the year in the month headers 7388 + yearSuffix: "", // Additional text to append to the year in the month headers,
  7389 + selectMonthLabel: "Select month", // Invisible label for month selector
  7390 + selectYearLabel: "Select year" // Invisible label for year selector
7251 }; 7391 };
7252 this._defaults = { // Global defaults for all the date picker instances 7392 this._defaults = { // Global defaults for all the date picker instances
7253 showOn: "focus", // "focus" for popup on focus, 7393 showOn: "focus", // "focus" for popup on focus,
@@ -7288,6 +7428,7 @@ function Datepicker() { @@ -7288,6 +7428,7 @@ function Datepicker() {
7288 onSelect: null, // Define a callback function when a date is selected 7428 onSelect: null, // Define a callback function when a date is selected
7289 onChangeMonthYear: null, // Define a callback function when the month or year is changed 7429 onChangeMonthYear: null, // Define a callback function when the month or year is changed
7290 onClose: null, // Define a callback function when the datepicker is closed 7430 onClose: null, // Define a callback function when the datepicker is closed
  7431 + onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
7291 numberOfMonths: 1, // Number of months to show at a time 7432 numberOfMonths: 1, // Number of months to show at a time
7292 showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) 7433 showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
7293 stepMonths: 1, // Number of months to step back/forward 7434 stepMonths: 1, // Number of months to step back/forward
@@ -7306,6 +7447,7 @@ function Datepicker() { @@ -7306,6 +7447,7 @@ function Datepicker() {
7306 } 7447 }
7307 7448
7308 $.extend( Datepicker.prototype, { 7449 $.extend( Datepicker.prototype, {
  7450 +
7309 /* Class name added to elements to indicate already configured with a date picker. */ 7451 /* Class name added to elements to indicate already configured with a date picker. */
7310 markerClassName: "hasDatepicker", 7452 markerClassName: "hasDatepicker",
7311 7453
@@ -7388,7 +7530,9 @@ $.extend( Datepicker.prototype, { @@ -7388,7 +7530,9 @@ $.extend( Datepicker.prototype, {
7388 inst.append.remove(); 7530 inst.append.remove();
7389 } 7531 }
7390 if ( appendText ) { 7532 if ( appendText ) {
7391 - inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" ); 7533 + inst.append = $( "<span>" )
  7534 + .addClass( this._appendClass )
  7535 + .text( appendText );
7392 input[ isRTL ? "before" : "after" ]( inst.append ); 7536 input[ isRTL ? "before" : "after" ]( inst.append );
7393 } 7537 }
7394 7538
@@ -7405,12 +7549,32 @@ $.extend( Datepicker.prototype, { @@ -7405,12 +7549,32 @@ $.extend( Datepicker.prototype, {
7405 if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked 7549 if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
7406 buttonText = this._get( inst, "buttonText" ); 7550 buttonText = this._get( inst, "buttonText" );
7407 buttonImage = this._get( inst, "buttonImage" ); 7551 buttonImage = this._get( inst, "buttonImage" );
7408 - inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?  
7409 - $( "<img/>" ).addClass( this._triggerClass ).  
7410 - attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :  
7411 - $( "<button type='button'></button>" ).addClass( this._triggerClass ).  
7412 - html( !buttonImage ? buttonText : $( "<img/>" ).attr(  
7413 - { src:buttonImage, alt:buttonText, title:buttonText } ) ) ); 7552 +
  7553 + if ( this._get( inst, "buttonImageOnly" ) ) {
  7554 + inst.trigger = $( "<img>" )
  7555 + .addClass( this._triggerClass )
  7556 + .attr( {
  7557 + src: buttonImage,
  7558 + alt: buttonText,
  7559 + title: buttonText
  7560 + } );
  7561 + } else {
  7562 + inst.trigger = $( "<button type='button'>" )
  7563 + .addClass( this._triggerClass );
  7564 + if ( buttonImage ) {
  7565 + inst.trigger.html(
  7566 + $( "<img>" )
  7567 + .attr( {
  7568 + src: buttonImage,
  7569 + alt: buttonText,
  7570 + title: buttonText
  7571 + } )
  7572 + );
  7573 + } else {
  7574 + inst.trigger.text( buttonText );
  7575 + }
  7576 + }
  7577 +
7414 input[ isRTL ? "before" : "after" ]( inst.trigger ); 7578 input[ isRTL ? "before" : "after" ]( inst.trigger );
7415 inst.trigger.on( "click", function() { 7579 inst.trigger.on( "click", function() {
7416 if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) { 7580 if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
@@ -7556,6 +7720,7 @@ $.extend( Datepicker.prototype, { @@ -7556,6 +7720,7 @@ $.extend( Datepicker.prototype, {
7556 7720
7557 if ( datepicker_instActive === inst ) { 7721 if ( datepicker_instActive === inst ) {
7558 datepicker_instActive = null; 7722 datepicker_instActive = null;
  7723 + this._curInst = null;
7559 } 7724 }
7560 }, 7725 },
7561 7726
@@ -7575,7 +7740,9 @@ $.extend( Datepicker.prototype, { @@ -7575,7 +7740,9 @@ $.extend( Datepicker.prototype, {
7575 if ( nodeName === "input" ) { 7740 if ( nodeName === "input" ) {
7576 target.disabled = false; 7741 target.disabled = false;
7577 inst.trigger.filter( "button" ). 7742 inst.trigger.filter( "button" ).
7578 - each( function() { this.disabled = false; } ).end(). 7743 + each( function() {
  7744 + this.disabled = false;
  7745 + } ).end().
7579 filter( "img" ).css( { opacity: "1.0", cursor: "" } ); 7746 filter( "img" ).css( { opacity: "1.0", cursor: "" } );
7580 } else if ( nodeName === "div" || nodeName === "span" ) { 7747 } else if ( nodeName === "div" || nodeName === "span" ) {
7581 inline = $target.children( "." + this._inlineClass ); 7748 inline = $target.children( "." + this._inlineClass );
@@ -7584,7 +7751,11 @@ $.extend( Datepicker.prototype, { @@ -7584,7 +7751,11 @@ $.extend( Datepicker.prototype, {
7584 prop( "disabled", false ); 7751 prop( "disabled", false );
7585 } 7752 }
7586 this._disabledInputs = $.map( this._disabledInputs, 7753 this._disabledInputs = $.map( this._disabledInputs,
7587 - function( value ) { return ( value === target ? null : value ); } ); // delete entry 7754 +
  7755 + // Delete entry
  7756 + function( value ) {
  7757 + return ( value === target ? null : value );
  7758 + } );
7588 }, 7759 },
7589 7760
7590 /* Disable the date picker to a jQuery selection. 7761 /* Disable the date picker to a jQuery selection.
@@ -7603,7 +7774,9 @@ $.extend( Datepicker.prototype, { @@ -7603,7 +7774,9 @@ $.extend( Datepicker.prototype, {
7603 if ( nodeName === "input" ) { 7774 if ( nodeName === "input" ) {
7604 target.disabled = true; 7775 target.disabled = true;
7605 inst.trigger.filter( "button" ). 7776 inst.trigger.filter( "button" ).
7606 - each( function() { this.disabled = true; } ).end(). 7777 + each( function() {
  7778 + this.disabled = true;
  7779 + } ).end().
7607 filter( "img" ).css( { opacity: "0.5", cursor: "default" } ); 7780 filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
7608 } else if ( nodeName === "div" || nodeName === "span" ) { 7781 } else if ( nodeName === "div" || nodeName === "span" ) {
7609 inline = $target.children( "." + this._inlineClass ); 7782 inline = $target.children( "." + this._inlineClass );
@@ -7612,7 +7785,11 @@ $.extend( Datepicker.prototype, { @@ -7612,7 +7785,11 @@ $.extend( Datepicker.prototype, {
7612 prop( "disabled", true ); 7785 prop( "disabled", true );
7613 } 7786 }
7614 this._disabledInputs = $.map( this._disabledInputs, 7787 this._disabledInputs = $.map( this._disabledInputs,
7615 - function( value ) { return ( value === target ? null : value ); } ); // delete entry 7788 +
  7789 + // Delete entry
  7790 + function( value ) {
  7791 + return ( value === target ? null : value );
  7792 + } );
7616 this._disabledInputs[ this._disabledInputs.length ] = target; 7793 this._disabledInputs[ this._disabledInputs.length ] = target;
7617 }, 7794 },
7618 7795
@@ -7640,8 +7817,7 @@ $.extend( Datepicker.prototype, { @@ -7640,8 +7817,7 @@ $.extend( Datepicker.prototype, {
7640 _getInst: function( target ) { 7817 _getInst: function( target ) {
7641 try { 7818 try {
7642 return $.data( target, "datepicker" ); 7819 return $.data( target, "datepicker" );
7643 - }  
7644 - catch ( err ) { 7820 + } catch ( err ) {
7645 throw "Missing instance data for this datepicker"; 7821 throw "Missing instance data for this datepicker";
7646 } 7822 }
7647 }, 7823 },
@@ -7874,8 +8050,7 @@ $.extend( Datepicker.prototype, { @@ -7874,8 +8050,7 @@ $.extend( Datepicker.prototype, {
7874 $.datepicker._updateAlternate( inst ); 8050 $.datepicker._updateAlternate( inst );
7875 $.datepicker._updateDatepicker( inst ); 8051 $.datepicker._updateDatepicker( inst );
7876 } 8052 }
7877 - }  
7878 - catch ( err ) { 8053 + } catch ( err ) {
7879 } 8054 }
7880 } 8055 }
7881 return true; 8056 return true;
@@ -7980,7 +8155,8 @@ $.extend( Datepicker.prototype, { @@ -7980,7 +8155,8 @@ $.extend( Datepicker.prototype, {
7980 numMonths = this._getNumberOfMonths( inst ), 8155 numMonths = this._getNumberOfMonths( inst ),
7981 cols = numMonths[ 1 ], 8156 cols = numMonths[ 1 ],
7982 width = 17, 8157 width = 17,
7983 - activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ); 8158 + activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
  8159 + onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
7984 8160
7985 if ( activeCell.length > 0 ) { 8161 if ( activeCell.length > 0 ) {
7986 datepicker_handleMouseover.apply( activeCell.get( 0 ) ); 8162 datepicker_handleMouseover.apply( activeCell.get( 0 ) );
@@ -8006,11 +8182,15 @@ $.extend( Datepicker.prototype, { @@ -8006,11 +8182,15 @@ $.extend( Datepicker.prototype, {
8006 8182
8007 //assure that inst.yearshtml didn't change. 8183 //assure that inst.yearshtml didn't change.
8008 if ( origyearshtml === inst.yearshtml && inst.yearshtml ) { 8184 if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
8009 - inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml ); 8185 + inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
8010 } 8186 }
8011 origyearshtml = inst.yearshtml = null; 8187 origyearshtml = inst.yearshtml = null;
8012 }, 0 ); 8188 }, 0 );
8013 } 8189 }
  8190 +
  8191 + if ( onUpdateDatepicker ) {
  8192 + onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
  8193 + }
8014 }, 8194 },
8015 8195
8016 // #6694 - don't focus the input if it's already focused 8196 // #6694 - don't focus the input if it's already focused
@@ -8048,7 +8228,7 @@ $.extend( Datepicker.prototype, { @@ -8048,7 +8228,7 @@ $.extend( Datepicker.prototype, {
8048 inst = this._getInst( obj ), 8228 inst = this._getInst( obj ),
8049 isRTL = this._get( inst, "isRTL" ); 8229 isRTL = this._get( inst, "isRTL" );
8050 8230
8051 - while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) { 8231 + while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
8052 obj = obj[ isRTL ? "previousSibling" : "nextSibling" ]; 8232 obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
8053 } 8233 }
8054 8234
@@ -8136,9 +8316,7 @@ $.extend( Datepicker.prototype, { @@ -8136,9 +8316,7 @@ $.extend( Datepicker.prototype, {
8136 if ( this._isDisabledDatepicker( target[ 0 ] ) ) { 8316 if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
8137 return; 8317 return;
8138 } 8318 }
8139 - this._adjustInstDate( inst, offset +  
8140 - ( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning  
8141 - period ); 8319 + this._adjustInstDate( inst, offset, period );
8142 this._updateDatepicker( inst ); 8320 this._updateDatepicker( inst );
8143 }, 8321 },
8144 8322
@@ -8185,7 +8363,7 @@ $.extend( Datepicker.prototype, { @@ -8185,7 +8363,7 @@ $.extend( Datepicker.prototype, {
8185 } 8363 }
8186 8364
8187 inst = this._getInst( target[ 0 ] ); 8365 inst = this._getInst( target[ 0 ] );
8188 - inst.selectedDay = inst.currentDay = $( "a", td ).html(); 8366 + inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
8189 inst.selectedMonth = inst.currentMonth = month; 8367 inst.selectedMonth = inst.currentMonth = month;
8190 inst.selectedYear = inst.currentYear = year; 8368 inst.selectedYear = inst.currentYear = year;
8191 this._selectDate( id, this._formatDate( inst, 8369 this._selectDate( id, this._formatDate( inst,
@@ -8238,7 +8416,7 @@ $.extend( Datepicker.prototype, { @@ -8238,7 +8416,7 @@ $.extend( Datepicker.prototype, {
8238 altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" ); 8416 altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
8239 date = this._getDate( inst ); 8417 date = this._getDate( inst );
8240 dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) ); 8418 dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
8241 - $( altField ).val( dateStr ); 8419 + $( document ).find( altField ).val( dateStr );
8242 } 8420 }
8243 }, 8421 },
8244 8422
@@ -8677,8 +8855,7 @@ $.extend( Datepicker.prototype, { @@ -8677,8 +8855,7 @@ $.extend( Datepicker.prototype, {
8677 try { 8855 try {
8678 return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ), 8856 return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
8679 offset, $.datepicker._getFormatConfig( inst ) ); 8857 offset, $.datepicker._getFormatConfig( inst ) );
8680 - }  
8681 - catch ( e ) { 8858 + } catch ( e ) {
8682 8859
8683 // Ignore 8860 // Ignore
8684 } 8861 }
@@ -8852,32 +9029,104 @@ $.extend( Datepicker.prototype, { @@ -8852,32 +9029,104 @@ $.extend( Datepicker.prototype, {
8852 this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ), 9029 this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
8853 this._getFormatConfig( inst ) ) ); 9030 this._getFormatConfig( inst ) ) );
8854 9031
8855 - prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?  
8856 - "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +  
8857 - " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :  
8858 - ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) ); 9032 + if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
  9033 + prev = $( "<a>" )
  9034 + .attr( {
  9035 + "class": "ui-datepicker-prev ui-corner-all",
  9036 + "data-handler": "prev",
  9037 + "data-event": "click",
  9038 + title: prevText
  9039 + } )
  9040 + .append(
  9041 + $( "<span>" )
  9042 + .addClass( "ui-icon ui-icon-circle-triangle-" +
  9043 + ( isRTL ? "e" : "w" ) )
  9044 + .text( prevText )
  9045 + )[ 0 ].outerHTML;
  9046 + } else if ( hideIfNoPrevNext ) {
  9047 + prev = "";
  9048 + } else {
  9049 + prev = $( "<a>" )
  9050 + .attr( {
  9051 + "class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
  9052 + title: prevText
  9053 + } )
  9054 + .append(
  9055 + $( "<span>" )
  9056 + .addClass( "ui-icon ui-icon-circle-triangle-" +
  9057 + ( isRTL ? "e" : "w" ) )
  9058 + .text( prevText )
  9059 + )[ 0 ].outerHTML;
  9060 + }
8859 9061
8860 nextText = this._get( inst, "nextText" ); 9062 nextText = this._get( inst, "nextText" );
8861 nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText, 9063 nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
8862 this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ), 9064 this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
8863 this._getFormatConfig( inst ) ) ); 9065 this._getFormatConfig( inst ) ) );
8864 9066
8865 - next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?  
8866 - "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +  
8867 - " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :  
8868 - ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) ); 9067 + if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
  9068 + next = $( "<a>" )
  9069 + .attr( {
  9070 + "class": "ui-datepicker-next ui-corner-all",
  9071 + "data-handler": "next",
  9072 + "data-event": "click",
  9073 + title: nextText
  9074 + } )
  9075 + .append(
  9076 + $( "<span>" )
  9077 + .addClass( "ui-icon ui-icon-circle-triangle-" +
  9078 + ( isRTL ? "w" : "e" ) )
  9079 + .text( nextText )
  9080 + )[ 0 ].outerHTML;
  9081 + } else if ( hideIfNoPrevNext ) {
  9082 + next = "";
  9083 + } else {
  9084 + next = $( "<a>" )
  9085 + .attr( {
  9086 + "class": "ui-datepicker-next ui-corner-all ui-state-disabled",
  9087 + title: nextText
  9088 + } )
  9089 + .append(
  9090 + $( "<span>" )
  9091 + .attr( "class", "ui-icon ui-icon-circle-triangle-" +
  9092 + ( isRTL ? "w" : "e" ) )
  9093 + .text( nextText )
  9094 + )[ 0 ].outerHTML;
  9095 + }
8869 9096
8870 currentText = this._get( inst, "currentText" ); 9097 currentText = this._get( inst, "currentText" );
8871 gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today ); 9098 gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
8872 currentText = ( !navigationAsDateFormat ? currentText : 9099 currentText = ( !navigationAsDateFormat ? currentText :
8873 this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) ); 9100 this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
8874 9101
8875 - controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +  
8876 - this._get( inst, "closeText" ) + "</button>" : "" );  
8877 -  
8878 - buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +  
8879 - ( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +  
8880 - ">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : ""; 9102 + controls = "";
  9103 + if ( !inst.inline ) {
  9104 + controls = $( "<button>" )
  9105 + .attr( {
  9106 + type: "button",
  9107 + "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
  9108 + "data-handler": "hide",
  9109 + "data-event": "click"
  9110 + } )
  9111 + .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
  9112 + }
  9113 +
  9114 + buttonPanel = "";
  9115 + if ( showButtonPanel ) {
  9116 + buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
  9117 + .append( isRTL ? controls : "" )
  9118 + .append( this._isInRange( inst, gotoDate ) ?
  9119 + $( "<button>" )
  9120 + .attr( {
  9121 + type: "button",
  9122 + "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
  9123 + "data-handler": "today",
  9124 + "data-event": "click"
  9125 + } )
  9126 + .text( currentText ) :
  9127 + "" )
  9128 + .append( isRTL ? "" : controls )[ 0 ].outerHTML;
  9129 + }
8881 9130
8882 firstDay = parseInt( this._get( inst, "firstDay" ), 10 ); 9131 firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
8883 firstDay = ( isNaN( firstDay ) ? 0 : firstDay ); 9132 firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
@@ -8965,7 +9214,9 @@ $.extend( Datepicker.prototype, { @@ -8965,7 +9214,9 @@ $.extend( Datepicker.prototype, {
8965 ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) + 9214 ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
8966 ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day 9215 ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
8967 ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months 9216 ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
8968 - "' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date 9217 + "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
  9218 + "' data-date='" + printDate.getDate() + // store date as data
  9219 + "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
8969 printDate.setDate( printDate.getDate() + 1 ); 9220 printDate.setDate( printDate.getDate() + 1 );
8970 printDate = this._daylightSavingAdjust( printDate ); 9221 printDate = this._daylightSavingAdjust( printDate );
8971 } 9222 }
@@ -8995,6 +9246,8 @@ $.extend( Datepicker.prototype, { @@ -8995,6 +9246,8 @@ $.extend( Datepicker.prototype, {
8995 changeMonth = this._get( inst, "changeMonth" ), 9246 changeMonth = this._get( inst, "changeMonth" ),
8996 changeYear = this._get( inst, "changeYear" ), 9247 changeYear = this._get( inst, "changeYear" ),
8997 showMonthAfterYear = this._get( inst, "showMonthAfterYear" ), 9248 showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
  9249 + selectMonthLabel = this._get( inst, "selectMonthLabel" ),
  9250 + selectYearLabel = this._get( inst, "selectYearLabel" ),
8998 html = "<div class='ui-datepicker-title'>", 9251 html = "<div class='ui-datepicker-title'>",
8999 monthHtml = ""; 9252 monthHtml = "";
9000 9253
@@ -9004,7 +9257,7 @@ $.extend( Datepicker.prototype, { @@ -9004,7 +9257,7 @@ $.extend( Datepicker.prototype, {
9004 } else { 9257 } else {
9005 inMinYear = ( minDate && minDate.getFullYear() === drawYear ); 9258 inMinYear = ( minDate && minDate.getFullYear() === drawYear );
9006 inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear ); 9259 inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
9007 - monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>"; 9260 + monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
9008 for ( month = 0; month < 12; month++ ) { 9261 for ( month = 0; month < 12; month++ ) {
9009 if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) { 9262 if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
9010 monthHtml += "<option value='" + month + "'" + 9263 monthHtml += "<option value='" + month + "'" +
@@ -9039,7 +9292,7 @@ $.extend( Datepicker.prototype, { @@ -9039,7 +9292,7 @@ $.extend( Datepicker.prototype, {
9039 endYear = Math.max( year, determineYear( years[ 1 ] || "" ) ); 9292 endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
9040 year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year ); 9293 year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
9041 endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear ); 9294 endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
9042 - inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; 9295 + inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
9043 for ( ; year <= endYear; year++ ) { 9296 for ( ; year <= endYear; year++ ) {
9044 inst.yearshtml += "<option value='" + year + "'" + 9297 inst.yearshtml += "<option value='" + year + "'" +
9045 ( year === drawYear ? " selected='selected'" : "" ) + 9298 ( year === drawYear ? " selected='selected'" : "" ) +
@@ -9251,28 +9504,29 @@ $.fn.datepicker = function( options ) { @@ -9251,28 +9504,29 @@ $.fn.datepicker = function( options ) {
9251 apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) ); 9504 apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
9252 } 9505 }
9253 return this.each( function() { 9506 return this.each( function() {
9254 - typeof options === "string" ?  
9255 - $.datepicker[ "_" + options + "Datepicker" ].  
9256 - apply( $.datepicker, [ this ].concat( otherArgs ) ) : 9507 + if ( typeof options === "string" ) {
  9508 + $.datepicker[ "_" + options + "Datepicker" ]
  9509 + .apply( $.datepicker, [ this ].concat( otherArgs ) );
  9510 + } else {
9257 $.datepicker._attachDatepicker( this, options ); 9511 $.datepicker._attachDatepicker( this, options );
  9512 + }
9258 } ); 9513 } );
9259 }; 9514 };
9260 9515
9261 $.datepicker = new Datepicker(); // singleton instance 9516 $.datepicker = new Datepicker(); // singleton instance
9262 $.datepicker.initialized = false; 9517 $.datepicker.initialized = false;
9263 $.datepicker.uuid = new Date().getTime(); 9518 $.datepicker.uuid = new Date().getTime();
9264 -$.datepicker.version = "1.12.1"; 9519 +$.datepicker.version = "1.13.2";
9265 9520
9266 var widgetsDatepicker = $.datepicker; 9521 var widgetsDatepicker = $.datepicker;
9267 9522
9268 9523
9269 9524
9270 -  
9271 // This file is deprecated 9525 // This file is deprecated
9272 var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); 9526 var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9273 9527
9274 /*! 9528 /*!
9275 - * jQuery UI Mouse 1.12.1 9529 + * jQuery UI Mouse 1.13.2
9276 * http://jqueryui.com 9530 * http://jqueryui.com
9277 * 9531 *
9278 * Copyright jQuery Foundation and other contributors 9532 * Copyright jQuery Foundation and other contributors
@@ -9286,14 +9540,13 @@ var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); @@ -9286,14 +9540,13 @@ var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9286 //>>docs: http://api.jqueryui.com/mouse/ 9540 //>>docs: http://api.jqueryui.com/mouse/
9287 9541
9288 9542
9289 -  
9290 var mouseHandled = false; 9543 var mouseHandled = false;
9291 $( document ).on( "mouseup", function() { 9544 $( document ).on( "mouseup", function() {
9292 mouseHandled = false; 9545 mouseHandled = false;
9293 } ); 9546 } );
9294 9547
9295 var widgetsMouse = $.widget( "ui.mouse", { 9548 var widgetsMouse = $.widget( "ui.mouse", {
9296 - version: "1.12.1", 9549 + version: "1.13.2",
9297 options: { 9550 options: {
9298 cancel: "input, textarea, button, select, option", 9551 cancel: "input, textarea, button, select, option",
9299 distance: 1, 9552 distance: 1,
@@ -9338,7 +9591,9 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, { @@ -9338,7 +9591,9 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, {
9338 this._mouseMoved = false; 9591 this._mouseMoved = false;
9339 9592
9340 // We may have missed mouseup (out of window) 9593 // We may have missed mouseup (out of window)
9341 - ( this._mouseStarted && this._mouseUp( event ) ); 9594 + if ( this._mouseStarted ) {
  9595 + this._mouseUp( event );
  9596 + }
9342 9597
9343 this._mouseDownEvent = event; 9598 this._mouseDownEvent = event;
9344 9599
@@ -9431,7 +9686,11 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, { @@ -9431,7 +9686,11 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, {
9431 if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { 9686 if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
9432 this._mouseStarted = 9687 this._mouseStarted =
9433 ( this._mouseStart( this._mouseDownEvent, event ) !== false ); 9688 ( this._mouseStart( this._mouseDownEvent, event ) !== false );
9434 - ( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) ); 9689 + if ( this._mouseStarted ) {
  9690 + this._mouseDrag( event );
  9691 + } else {
  9692 + this._mouseUp( event );
  9693 + }
9435 } 9694 }
9436 9695
9437 return !this._mouseStarted; 9696 return !this._mouseStarted;
@@ -9478,12 +9737,13 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, { @@ -9478,12 +9737,13 @@ var widgetsMouse = $.widget( &quot;ui.mouse&quot;, {
9478 _mouseStart: function( /* event */ ) {}, 9737 _mouseStart: function( /* event */ ) {},
9479 _mouseDrag: function( /* event */ ) {}, 9738 _mouseDrag: function( /* event */ ) {},
9480 _mouseStop: function( /* event */ ) {}, 9739 _mouseStop: function( /* event */ ) {},
9481 - _mouseCapture: function( /* event */ ) { return true; } 9740 + _mouseCapture: function( /* event */ ) {
  9741 + return true;
  9742 + }
9482 } ); 9743 } );
9483 9744
9484 9745
9485 9746
9486 -  
9487 // $.ui.plugin is deprecated. Use $.widget() extensions instead. 9747 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
9488 var plugin = $.ui.plugin = { 9748 var plugin = $.ui.plugin = {
9489 add: function( module, option, set ) { 9749 add: function( module, option, set ) {
@@ -9528,7 +9788,7 @@ var safeBlur = $.ui.safeBlur = function( element ) { @@ -9528,7 +9788,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9528 9788
9529 9789
9530 /*! 9790 /*!
9531 - * jQuery UI Draggable 1.12.1 9791 + * jQuery UI Draggable 1.13.2
9532 * http://jqueryui.com 9792 * http://jqueryui.com
9533 * 9793 *
9534 * Copyright jQuery Foundation and other contributors 9794 * Copyright jQuery Foundation and other contributors
@@ -9544,9 +9804,8 @@ var safeBlur = $.ui.safeBlur = function( element ) { @@ -9544,9 +9804,8 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9544 //>>css.structure: ../../themes/base/draggable.css 9804 //>>css.structure: ../../themes/base/draggable.css
9545 9805
9546 9806
9547 -  
9548 $.widget( "ui.draggable", $.ui.mouse, { 9807 $.widget( "ui.draggable", $.ui.mouse, {
9549 - version: "1.12.1", 9808 + version: "1.13.2",
9550 widgetEventPrefix: "drag", 9809 widgetEventPrefix: "drag",
9551 options: { 9810 options: {
9552 addClasses: true, 9811 addClasses: true,
@@ -9710,7 +9969,9 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, { @@ -9710,7 +9969,9 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, {
9710 this.originalPageY = event.pageY; 9969 this.originalPageY = event.pageY;
9711 9970
9712 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied 9971 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
9713 - ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) ); 9972 + if ( o.cursorAt ) {
  9973 + this._adjustOffsetFromHelper( o.cursorAt );
  9974 + }
9714 9975
9715 //Set a containment if given in the options 9976 //Set a containment if given in the options
9716 this._setContainment(); 9977 this._setContainment();
@@ -9805,7 +10066,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, { @@ -9805,7 +10066,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, {
9805 10066
9806 if ( ( this.options.revert === "invalid" && !dropped ) || 10067 if ( ( this.options.revert === "invalid" && !dropped ) ||
9807 ( this.options.revert === "valid" && dropped ) || 10068 ( this.options.revert === "valid" && dropped ) ||
9808 - this.options.revert === true || ( $.isFunction( this.options.revert ) && 10069 + this.options.revert === true || ( typeof this.options.revert === "function" &&
9809 this.options.revert.call( this.element, dropped ) ) 10070 this.options.revert.call( this.element, dropped ) )
9810 ) { 10071 ) {
9811 $( this.helper ).animate( 10072 $( this.helper ).animate(
@@ -9877,7 +10138,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, { @@ -9877,7 +10138,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, {
9877 _createHelper: function( event ) { 10138 _createHelper: function( event ) {
9878 10139
9879 var o = this.options, 10140 var o = this.options,
9880 - helperIsFunction = $.isFunction( o.helper ), 10141 + helperIsFunction = typeof o.helper === "function",
9881 helper = helperIsFunction ? 10142 helper = helperIsFunction ?
9882 $( o.helper.apply( this.element[ 0 ], [ event ] ) ) : 10143 $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
9883 ( o.helper === "clone" ? 10144 ( o.helper === "clone" ?
@@ -9916,7 +10177,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, { @@ -9916,7 +10177,7 @@ $.widget( &quot;ui.draggable&quot;, $.ui.mouse, {
9916 if ( typeof obj === "string" ) { 10177 if ( typeof obj === "string" ) {
9917 obj = obj.split( " " ); 10178 obj = obj.split( " " );
9918 } 10179 }
9919 - if ( $.isArray( obj ) ) { 10180 + if ( Array.isArray( obj ) ) {
9920 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; 10181 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
9921 } 10182 }
9922 if ( "left" in obj ) { 10183 if ( "left" in obj ) {
@@ -10625,12 +10886,13 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;snap&quot;, { @@ -10625,12 +10886,13 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;snap&quot;, {
10625 !$.contains( inst.snapElements[ i ].item.ownerDocument, 10886 !$.contains( inst.snapElements[ i ].item.ownerDocument,
10626 inst.snapElements[ i ].item ) ) { 10887 inst.snapElements[ i ].item ) ) {
10627 if ( inst.snapElements[ i ].snapping ) { 10888 if ( inst.snapElements[ i ].snapping ) {
10628 - ( inst.options.snap.release && 10889 + if ( inst.options.snap.release ) {
10629 inst.options.snap.release.call( 10890 inst.options.snap.release.call(
10630 inst.element, 10891 inst.element,
10631 event, 10892 event,
10632 $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } ) 10893 $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
10633 - ) ); 10894 + );
  10895 + }
10634 } 10896 }
10635 inst.snapElements[ i ].snapping = false; 10897 inst.snapElements[ i ].snapping = false;
10636 continue; 10898 continue;
@@ -10701,13 +10963,14 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;snap&quot;, { @@ -10701,13 +10963,14 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;snap&quot;, {
10701 } 10963 }
10702 10964
10703 if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) { 10965 if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
10704 - ( inst.options.snap.snap && 10966 + if ( inst.options.snap.snap ) {
10705 inst.options.snap.snap.call( 10967 inst.options.snap.snap.call(
10706 inst.element, 10968 inst.element,
10707 event, 10969 event,
10708 $.extend( inst._uiHash(), { 10970 $.extend( inst._uiHash(), {
10709 snapItem: inst.snapElements[ i ].item 10971 snapItem: inst.snapElements[ i ].item
10710 - } ) ) ); 10972 + } ) );
  10973 + }
10711 } 10974 }
10712 inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first ); 10975 inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
10713 10976
@@ -10725,7 +10988,9 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;stack&quot;, { @@ -10725,7 +10988,9 @@ $.ui.plugin.add( &quot;draggable&quot;, &quot;stack&quot;, {
10725 ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 ); 10988 ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
10726 } ); 10989 } );
10727 10990
10728 - if ( !group.length ) { return; } 10991 + if ( !group.length ) {
  10992 + return;
  10993 + }
10729 10994
10730 min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0; 10995 min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
10731 $( group ).each( function( i ) { 10996 $( group ).each( function( i ) {
@@ -10758,7 +11023,7 @@ var widgetsDraggable = $.ui.draggable; @@ -10758,7 +11023,7 @@ var widgetsDraggable = $.ui.draggable;
10758 11023
10759 11024
10760 /*! 11025 /*!
10761 - * jQuery UI Resizable 1.12.1 11026 + * jQuery UI Resizable 1.13.2
10762 * http://jqueryui.com 11027 * http://jqueryui.com
10763 * 11028 *
10764 * Copyright jQuery Foundation and other contributors 11029 * Copyright jQuery Foundation and other contributors
@@ -10776,9 +11041,8 @@ var widgetsDraggable = $.ui.draggable; @@ -10776,9 +11041,8 @@ var widgetsDraggable = $.ui.draggable;
10776 //>>css.theme: ../../themes/base/theme.css 11041 //>>css.theme: ../../themes/base/theme.css
10777 11042
10778 11043
10779 -  
10780 $.widget( "ui.resizable", $.ui.mouse, { 11044 $.widget( "ui.resizable", $.ui.mouse, {
10781 - version: "1.12.1", 11045 + version: "1.13.2",
10782 widgetEventPrefix: "resize", 11046 widgetEventPrefix: "resize",
10783 options: { 11047 options: {
10784 alsoResize: false, 11048 alsoResize: false,
@@ -10833,9 +11097,15 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -10833,9 +11097,15 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
10833 // TODO: determine which cases actually cause this to happen 11097 // TODO: determine which cases actually cause this to happen
10834 // if the element doesn't have the scroll set, see if it's possible to 11098 // if the element doesn't have the scroll set, see if it's possible to
10835 // set the scroll 11099 // set the scroll
10836 - el[ scroll ] = 1;  
10837 - has = ( el[ scroll ] > 0 );  
10838 - el[ scroll ] = 0; 11100 + try {
  11101 + el[ scroll ] = 1;
  11102 + has = ( el[ scroll ] > 0 );
  11103 + el[ scroll ] = 0;
  11104 + } catch ( e ) {
  11105 +
  11106 + // `el` might be a string, then setting `scroll` will throw
  11107 + // an error in strict mode; ignore it.
  11108 + }
10839 return has; 11109 return has;
10840 }, 11110 },
10841 11111
@@ -10858,7 +11128,8 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -10858,7 +11128,8 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
10858 if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) { 11128 if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
10859 11129
10860 this.element.wrap( 11130 this.element.wrap(
10861 - $( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( { 11131 + $( "<div class='ui-wrapper'></div>" ).css( {
  11132 + overflow: "hidden",
10862 position: this.element.css( "position" ), 11133 position: this.element.css( "position" ),
10863 width: this.element.outerWidth(), 11134 width: this.element.outerWidth(),
10864 height: this.element.outerHeight(), 11135 height: this.element.outerHeight(),
@@ -10929,15 +11200,14 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -10929,15 +11200,14 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
10929 _destroy: function() { 11200 _destroy: function() {
10930 11201
10931 this._mouseDestroy(); 11202 this._mouseDestroy();
  11203 + this._addedHandles.remove();
10932 11204
10933 var wrapper, 11205 var wrapper,
10934 _destroy = function( exp ) { 11206 _destroy = function( exp ) {
10935 $( exp ) 11207 $( exp )
10936 .removeData( "resizable" ) 11208 .removeData( "resizable" )
10937 .removeData( "ui-resizable" ) 11209 .removeData( "ui-resizable" )
10938 - .off( ".resizable" )  
10939 - .find( ".ui-resizable-handle" )  
10940 - .remove(); 11210 + .off( ".resizable" );
10941 }; 11211 };
10942 11212
10943 // TODO: Unwrap at same DOM position 11213 // TODO: Unwrap at same DOM position
@@ -10968,6 +11238,9 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -10968,6 +11238,9 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
10968 this._removeHandles(); 11238 this._removeHandles();
10969 this._setupHandles(); 11239 this._setupHandles();
10970 break; 11240 break;
  11241 + case "aspectRatio":
  11242 + this._aspectRatio = !!value;
  11243 + break;
10971 default: 11244 default:
10972 break; 11245 break;
10973 } 11246 }
@@ -10989,6 +11262,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -10989,6 +11262,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
10989 } ); 11262 } );
10990 11263
10991 this._handles = $(); 11264 this._handles = $();
  11265 + this._addedHandles = $();
10992 if ( this.handles.constructor === String ) { 11266 if ( this.handles.constructor === String ) {
10993 11267
10994 if ( this.handles === "all" ) { 11268 if ( this.handles === "all" ) {
@@ -11000,7 +11274,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -11000,7 +11274,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
11000 11274
11001 for ( i = 0; i < n.length; i++ ) { 11275 for ( i = 0; i < n.length; i++ ) {
11002 11276
11003 - handle = $.trim( n[ i ] ); 11277 + handle = String.prototype.trim.call( n[ i ] );
11004 hname = "ui-resizable-" + handle; 11278 hname = "ui-resizable-" + handle;
11005 axis = $( "<div>" ); 11279 axis = $( "<div>" );
11006 this._addClass( axis, "ui-resizable-handle " + hname ); 11280 this._addClass( axis, "ui-resizable-handle " + hname );
@@ -11008,7 +11282,10 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -11008,7 +11282,10 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
11008 axis.css( { zIndex: o.zIndex } ); 11282 axis.css( { zIndex: o.zIndex } );
11009 11283
11010 this.handles[ handle ] = ".ui-resizable-" + handle; 11284 this.handles[ handle ] = ".ui-resizable-" + handle;
11011 - this.element.append( axis ); 11285 + if ( !this.element.children( this.handles[ handle ] ).length ) {
  11286 + this.element.append( axis );
  11287 + this._addedHandles = this._addedHandles.add( axis );
  11288 + }
11012 } 11289 }
11013 11290
11014 } 11291 }
@@ -11074,7 +11351,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -11074,7 +11351,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
11074 }, 11351 },
11075 11352
11076 _removeHandles: function() { 11353 _removeHandles: function() {
11077 - this._handles.remove(); 11354 + this._addedHandles.remove();
11078 }, 11355 },
11079 11356
11080 _mouseCapture: function( event ) { 11357 _mouseCapture: function( event ) {
@@ -11454,7 +11731,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -11454,7 +11731,7 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
11454 11731
11455 if ( this._helper ) { 11732 if ( this._helper ) {
11456 11733
11457 - this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" ); 11734 + this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
11458 11735
11459 this._addClass( this.helper, this._helper ); 11736 this._addClass( this.helper, this._helper );
11460 this.helper.css( { 11737 this.helper.css( {
@@ -11511,7 +11788,9 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, { @@ -11511,7 +11788,9 @@ $.widget( &quot;ui.resizable&quot;, $.ui.mouse, {
11511 11788
11512 _propagate: function( n, event ) { 11789 _propagate: function( n, event ) {
11513 $.ui.plugin.call( this, n, [ event, this.ui() ] ); 11790 $.ui.plugin.call( this, n, [ event, this.ui() ] );
11514 - ( n !== "resize" && this._trigger( n, event, this.ui() ) ); 11791 + if ( n !== "resize" ) {
  11792 + this._trigger( n, event, this.ui() );
  11793 + }
11515 }, 11794 },
11516 11795
11517 plugins: {}, 11796 plugins: {},
@@ -11632,8 +11911,8 @@ $.ui.plugin.add( &quot;resizable&quot;, &quot;containment&quot;, { @@ -11632,8 +11911,8 @@ $.ui.plugin.add( &quot;resizable&quot;, &quot;containment&quot;, {
11632 co = that.containerOffset; 11911 co = that.containerOffset;
11633 ch = that.containerSize.height; 11912 ch = that.containerSize.height;
11634 cw = that.containerSize.width; 11913 cw = that.containerSize.width;
11635 - width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );  
11636 - height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ; 11914 + width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
  11915 + height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
11637 11916
11638 that.parentData = { 11917 that.parentData = {
11639 element: ce, 11918 element: ce,
@@ -11942,7 +12221,7 @@ var widgetsResizable = $.ui.resizable; @@ -11942,7 +12221,7 @@ var widgetsResizable = $.ui.resizable;
11942 12221
11943 12222
11944 /*! 12223 /*!
11945 - * jQuery UI Dialog 1.12.1 12224 + * jQuery UI Dialog 1.13.2
11946 * http://jqueryui.com 12225 * http://jqueryui.com
11947 * 12226 *
11948 * Copyright jQuery Foundation and other contributors 12227 * Copyright jQuery Foundation and other contributors
@@ -11960,9 +12239,8 @@ var widgetsResizable = $.ui.resizable; @@ -11960,9 +12239,8 @@ var widgetsResizable = $.ui.resizable;
11960 //>>css.theme: ../../themes/base/theme.css 12239 //>>css.theme: ../../themes/base/theme.css
11961 12240
11962 12241
11963 -  
11964 $.widget( "ui.dialog", { 12242 $.widget( "ui.dialog", {
11965 - version: "1.12.1", 12243 + version: "1.13.2",
11966 options: { 12244 options: {
11967 appendTo: "body", 12245 appendTo: "body",
11968 autoOpen: true, 12246 autoOpen: true,
@@ -12207,7 +12485,7 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12207,7 +12485,7 @@ $.widget( &quot;ui.dialog&quot;, {
12207 that._trigger( "focus" ); 12485 that._trigger( "focus" );
12208 } ); 12486 } );
12209 12487
12210 - // Track the dialog immediately upon openening in case a focus event 12488 + // Track the dialog immediately upon opening in case a focus event
12211 // somehow occurs outside of the dialog before an element inside the 12489 // somehow occurs outside of the dialog before an element inside the
12212 // dialog is focused (#10152) 12490 // dialog is focused (#10152)
12213 this._makeFocusTarget(); 12491 this._makeFocusTarget();
@@ -12243,22 +12521,23 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12243,22 +12521,23 @@ $.widget( &quot;ui.dialog&quot;, {
12243 hasFocus.eq( 0 ).trigger( "focus" ); 12521 hasFocus.eq( 0 ).trigger( "focus" );
12244 }, 12522 },
12245 12523
12246 - _keepFocus: function( event ) {  
12247 - function checkFocus() {  
12248 - var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),  
12249 - isActive = this.uiDialog[ 0 ] === activeElement ||  
12250 - $.contains( this.uiDialog[ 0 ], activeElement );  
12251 - if ( !isActive ) {  
12252 - this._focusTabbable();  
12253 - } 12524 + _restoreTabbableFocus: function() {
  12525 + var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
  12526 + isActive = this.uiDialog[ 0 ] === activeElement ||
  12527 + $.contains( this.uiDialog[ 0 ], activeElement );
  12528 + if ( !isActive ) {
  12529 + this._focusTabbable();
12254 } 12530 }
  12531 + },
  12532 +
  12533 + _keepFocus: function( event ) {
12255 event.preventDefault(); 12534 event.preventDefault();
12256 - checkFocus.call( this ); 12535 + this._restoreTabbableFocus();
12257 12536
12258 // support: IE 12537 // support: IE
12259 // IE <= 8 doesn't prevent moving focus even with event.preventDefault() 12538 // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
12260 // so we check again later 12539 // so we check again later
12261 - this._delay( checkFocus ); 12540 + this._delay( this._restoreTabbableFocus );
12262 }, 12541 },
12263 12542
12264 _createWrapper: function() { 12543 _createWrapper: function() {
@@ -12287,8 +12566,8 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12287,8 +12566,8 @@ $.widget( &quot;ui.dialog&quot;, {
12287 return; 12566 return;
12288 } 12567 }
12289 var tabbables = this.uiDialog.find( ":tabbable" ), 12568 var tabbables = this.uiDialog.find( ":tabbable" ),
12290 - first = tabbables.filter( ":first" ),  
12291 - last = tabbables.filter( ":last" ); 12569 + first = tabbables.first(),
  12570 + last = tabbables.last();
12292 12571
12293 if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) && 12572 if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
12294 !event.shiftKey ) { 12573 !event.shiftKey ) {
@@ -12399,14 +12678,14 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12399,14 +12678,14 @@ $.widget( &quot;ui.dialog&quot;, {
12399 this.uiDialogButtonPane.remove(); 12678 this.uiDialogButtonPane.remove();
12400 this.uiButtonSet.empty(); 12679 this.uiButtonSet.empty();
12401 12680
12402 - if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) { 12681 + if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
12403 this._removeClass( this.uiDialog, "ui-dialog-buttons" ); 12682 this._removeClass( this.uiDialog, "ui-dialog-buttons" );
12404 return; 12683 return;
12405 } 12684 }
12406 12685
12407 $.each( buttons, function( name, props ) { 12686 $.each( buttons, function( name, props ) {
12408 var click, buttonOptions; 12687 var click, buttonOptions;
12409 - props = $.isFunction( props ) ? 12688 + props = typeof props === "function" ?
12410 { click: props, text: name } : 12689 { click: props, text: name } :
12411 props; 12690 props;
12412 12691
@@ -12771,6 +13050,8 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12771,6 +13050,8 @@ $.widget( &quot;ui.dialog&quot;, {
12771 return; 13050 return;
12772 } 13051 }
12773 13052
  13053 + var jqMinor = $.fn.jquery.substring( 0, 4 );
  13054 +
12774 // We use a delay in case the overlay is created from an 13055 // We use a delay in case the overlay is created from an
12775 // event that we're going to be cancelling (#2804) 13056 // event that we're going to be cancelling (#2804)
12776 var isOpening = true; 13057 var isOpening = true;
@@ -12781,20 +13062,28 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12781,20 +13062,28 @@ $.widget( &quot;ui.dialog&quot;, {
12781 if ( !this.document.data( "ui-dialog-overlays" ) ) { 13062 if ( !this.document.data( "ui-dialog-overlays" ) ) {
12782 13063
12783 // Prevent use of anchors and inputs 13064 // Prevent use of anchors and inputs
12784 - // Using _on() for an event handler shared across many instances is  
12785 - // safe because the dialogs stack and must be closed in reverse order  
12786 - this._on( this.document, {  
12787 - focusin: function( event ) {  
12788 - if ( isOpening ) {  
12789 - return;  
12790 - } 13065 + // This doesn't use `_on()` because it is a shared event handler
  13066 + // across all open modal dialogs.
  13067 + this.document.on( "focusin.ui-dialog", function( event ) {
  13068 + if ( isOpening ) {
  13069 + return;
  13070 + }
12791 13071
12792 - if ( !this._allowInteraction( event ) ) {  
12793 - event.preventDefault();  
12794 - this._trackingInstances()[ 0 ]._focusTabbable(); 13072 + var instance = this._trackingInstances()[ 0 ];
  13073 + if ( !instance._allowInteraction( event ) ) {
  13074 + event.preventDefault();
  13075 + instance._focusTabbable();
  13076 +
  13077 + // Support: jQuery >=3.4 <3.6 only
  13078 + // Focus re-triggering in jQuery 3.4/3.5 makes the original element
  13079 + // have its focus event propagated last, breaking the re-targeting.
  13080 + // Trigger focus in a delay in addition if needed to avoid the issue
  13081 + // See https://github.com/jquery/jquery/issues/4382
  13082 + if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
  13083 + instance._delay( instance._restoreTabbableFocus );
12795 } 13084 }
12796 } 13085 }
12797 - } ); 13086 + }.bind( this ) );
12798 } 13087 }
12799 13088
12800 this.overlay = $( "<div>" ) 13089 this.overlay = $( "<div>" )
@@ -12817,7 +13106,7 @@ $.widget( &quot;ui.dialog&quot;, { @@ -12817,7 +13106,7 @@ $.widget( &quot;ui.dialog&quot;, {
12817 var overlays = this.document.data( "ui-dialog-overlays" ) - 1; 13106 var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
12818 13107
12819 if ( !overlays ) { 13108 if ( !overlays ) {
12820 - this._off( this.document, "focusin" ); 13109 + this.document.off( "focusin.ui-dialog" );
12821 this.document.removeData( "ui-dialog-overlays" ); 13110 this.document.removeData( "ui-dialog-overlays" );
12822 } else { 13111 } else {
12823 this.document.data( "ui-dialog-overlays", overlays ); 13112 this.document.data( "ui-dialog-overlays", overlays );
@@ -12857,7 +13146,7 @@ var widgetsDialog = $.ui.dialog; @@ -12857,7 +13146,7 @@ var widgetsDialog = $.ui.dialog;
12857 13146
12858 13147
12859 /*! 13148 /*!
12860 - * jQuery UI Droppable 1.12.1 13149 + * jQuery UI Droppable 1.13.2
12861 * http://jqueryui.com 13150 * http://jqueryui.com
12862 * 13151 *
12863 * Copyright jQuery Foundation and other contributors 13152 * Copyright jQuery Foundation and other contributors
@@ -12872,9 +13161,8 @@ var widgetsDialog = $.ui.dialog; @@ -12872,9 +13161,8 @@ var widgetsDialog = $.ui.dialog;
12872 //>>demos: http://jqueryui.com/droppable/ 13161 //>>demos: http://jqueryui.com/droppable/
12873 13162
12874 13163
12875 -  
12876 $.widget( "ui.droppable", { 13164 $.widget( "ui.droppable", {
12877 - version: "1.12.1", 13165 + version: "1.13.2",
12878 widgetEventPrefix: "drop", 13166 widgetEventPrefix: "drop",
12879 options: { 13167 options: {
12880 accept: "*", 13168 accept: "*",
@@ -12899,7 +13187,7 @@ $.widget( &quot;ui.droppable&quot;, { @@ -12899,7 +13187,7 @@ $.widget( &quot;ui.droppable&quot;, {
12899 this.isover = false; 13187 this.isover = false;
12900 this.isout = true; 13188 this.isout = true;
12901 13189
12902 - this.accept = $.isFunction( accept ) ? accept : function( d ) { 13190 + this.accept = typeof accept === "function" ? accept : function( d ) {
12903 return d.is( accept ); 13191 return d.is( accept );
12904 }; 13192 };
12905 13193
@@ -12922,7 +13210,9 @@ $.widget( &quot;ui.droppable&quot;, { @@ -12922,7 +13210,9 @@ $.widget( &quot;ui.droppable&quot;, {
12922 13210
12923 this._addToManager( o.scope ); 13211 this._addToManager( o.scope );
12924 13212
12925 - o.addClasses && this._addClass( "ui-droppable" ); 13213 + if ( o.addClasses ) {
  13214 + this._addClass( "ui-droppable" );
  13215 + }
12926 13216
12927 }, 13217 },
12928 13218
@@ -12951,7 +13241,7 @@ $.widget( &quot;ui.droppable&quot;, { @@ -12951,7 +13241,7 @@ $.widget( &quot;ui.droppable&quot;, {
12951 _setOption: function( key, value ) { 13241 _setOption: function( key, value ) {
12952 13242
12953 if ( key === "accept" ) { 13243 if ( key === "accept" ) {
12954 - this.accept = $.isFunction( value ) ? value : function( d ) { 13244 + this.accept = typeof value === "function" ? value : function( d ) {
12955 return d.is( value ); 13245 return d.is( value );
12956 }; 13246 };
12957 } else if ( key === "scope" ) { 13247 } else if ( key === "scope" ) {
@@ -13041,14 +13331,15 @@ $.widget( &quot;ui.droppable&quot;, { @@ -13041,14 +13331,15 @@ $.widget( &quot;ui.droppable&quot;, {
13041 inst.accept.call( 13331 inst.accept.call(
13042 inst.element[ 0 ], ( draggable.currentItem || draggable.element ) 13332 inst.element[ 0 ], ( draggable.currentItem || draggable.element )
13043 ) && 13333 ) &&
13044 - intersect( 13334 + $.ui.intersect(
13045 draggable, 13335 draggable,
13046 $.extend( inst, { offset: inst.element.offset() } ), 13336 $.extend( inst, { offset: inst.element.offset() } ),
13047 inst.options.tolerance, event 13337 inst.options.tolerance, event
13048 ) 13338 )
13049 ) { 13339 ) {
13050 childrenIntersection = true; 13340 childrenIntersection = true;
13051 - return false; } 13341 + return false;
  13342 + }
13052 } ); 13343 } );
13053 if ( childrenIntersection ) { 13344 if ( childrenIntersection ) {
13054 return false; 13345 return false;
@@ -13077,7 +13368,7 @@ $.widget( &quot;ui.droppable&quot;, { @@ -13077,7 +13368,7 @@ $.widget( &quot;ui.droppable&quot;, {
13077 }, 13368 },
13078 13369
13079 // Extension points just to make backcompat sane and avoid duplicating logic 13370 // Extension points just to make backcompat sane and avoid duplicating logic
13080 - // TODO: Remove in 1.13 along with call to it below 13371 + // TODO: Remove in 1.14 along with call to it below
13081 _addHoverClass: function() { 13372 _addHoverClass: function() {
13082 this._addClass( "ui-droppable-hover" ); 13373 this._addClass( "ui-droppable-hover" );
13083 }, 13374 },
@@ -13095,7 +13386,7 @@ $.widget( &quot;ui.droppable&quot;, { @@ -13095,7 +13386,7 @@ $.widget( &quot;ui.droppable&quot;, {
13095 } 13386 }
13096 } ); 13387 } );
13097 13388
13098 -var intersect = $.ui.intersect = ( function() { 13389 +$.ui.intersect = ( function() {
13099 function isOverAxis( x, reference, size ) { 13390 function isOverAxis( x, reference, size ) {
13100 return ( x >= reference ) && ( x < ( reference + size ) ); 13391 return ( x >= reference ) && ( x < ( reference + size ) );
13101 } 13392 }
@@ -13203,7 +13494,7 @@ $.ui.ddmanager = { @@ -13203,7 +13494,7 @@ $.ui.ddmanager = {
13203 return; 13494 return;
13204 } 13495 }
13205 if ( !this.options.disabled && this.visible && 13496 if ( !this.options.disabled && this.visible &&
13206 - intersect( draggable, this, this.options.tolerance, event ) ) { 13497 + $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
13207 dropped = this._drop.call( this, event ) || dropped; 13498 dropped = this._drop.call( this, event ) || dropped;
13208 } 13499 }
13209 13500
@@ -13244,7 +13535,7 @@ $.ui.ddmanager = { @@ -13244,7 +13535,7 @@ $.ui.ddmanager = {
13244 } 13535 }
13245 13536
13246 var parentInstance, scope, parent, 13537 var parentInstance, scope, parent,
13247 - intersects = intersect( draggable, this, this.options.tolerance, event ), 13538 + intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
13248 c = !intersects && this.isover ? 13539 c = !intersects && this.isover ?
13249 "isout" : 13540 "isout" :
13250 ( intersects && !this.isover ? "isover" : null ); 13541 ( intersects && !this.isover ? "isover" : null );
@@ -13338,7 +13629,7 @@ var widgetsDroppable = $.ui.droppable; @@ -13338,7 +13629,7 @@ var widgetsDroppable = $.ui.droppable;
13338 13629
13339 13630
13340 /*! 13631 /*!
13341 - * jQuery UI Progressbar 1.12.1 13632 + * jQuery UI Progressbar 1.13.2
13342 * http://jqueryui.com 13633 * http://jqueryui.com
13343 * 13634 *
13344 * Copyright jQuery Foundation and other contributors 13635 * Copyright jQuery Foundation and other contributors
@@ -13348,9 +13639,9 @@ var widgetsDroppable = $.ui.droppable; @@ -13348,9 +13639,9 @@ var widgetsDroppable = $.ui.droppable;
13348 13639
13349 //>>label: Progressbar 13640 //>>label: Progressbar
13350 //>>group: Widgets 13641 //>>group: Widgets
13351 -// jscs:disable maximumLineLength 13642 +/* eslint-disable max-len */
13352 //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators. 13643 //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
13353 -// jscs:enable maximumLineLength 13644 +/* eslint-enable max-len */
13354 //>>docs: http://api.jqueryui.com/progressbar/ 13645 //>>docs: http://api.jqueryui.com/progressbar/
13355 //>>demos: http://jqueryui.com/progressbar/ 13646 //>>demos: http://jqueryui.com/progressbar/
13356 //>>css.structure: ../../themes/base/core.css 13647 //>>css.structure: ../../themes/base/core.css
@@ -13358,9 +13649,8 @@ var widgetsDroppable = $.ui.droppable; @@ -13358,9 +13649,8 @@ var widgetsDroppable = $.ui.droppable;
13358 //>>css.theme: ../../themes/base/theme.css 13649 //>>css.theme: ../../themes/base/theme.css
13359 13650
13360 13651
13361 -  
13362 var widgetsProgressbar = $.widget( "ui.progressbar", { 13652 var widgetsProgressbar = $.widget( "ui.progressbar", {
13363 - version: "1.12.1", 13653 + version: "1.13.2",
13364 options: { 13654 options: {
13365 classes: { 13655 classes: {
13366 "ui-progressbar": "ui-corner-all", 13656 "ui-progressbar": "ui-corner-all",
@@ -13502,7 +13792,7 @@ var widgetsProgressbar = $.widget( &quot;ui.progressbar&quot;, { @@ -13502,7 +13792,7 @@ var widgetsProgressbar = $.widget( &quot;ui.progressbar&quot;, {
13502 13792
13503 13793
13504 /*! 13794 /*!
13505 - * jQuery UI Selectable 1.12.1 13795 + * jQuery UI Selectable 1.13.2
13506 * http://jqueryui.com 13796 * http://jqueryui.com
13507 * 13797 *
13508 * Copyright jQuery Foundation and other contributors 13798 * Copyright jQuery Foundation and other contributors
@@ -13518,9 +13808,8 @@ var widgetsProgressbar = $.widget( &quot;ui.progressbar&quot;, { @@ -13518,9 +13808,8 @@ var widgetsProgressbar = $.widget( &quot;ui.progressbar&quot;, {
13518 //>>css.structure: ../../themes/base/selectable.css 13808 //>>css.structure: ../../themes/base/selectable.css
13519 13809
13520 13810
13521 -  
13522 var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, { 13811 var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13523 - version: "1.12.1", 13812 + version: "1.13.2",
13524 options: { 13813 options: {
13525 appendTo: "body", 13814 appendTo: "body",
13526 autoRefresh: true, 13815 autoRefresh: true,
@@ -13671,8 +13960,12 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, { @@ -13671,8 +13960,12 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, {
13671 x2 = event.pageX, 13960 x2 = event.pageX,
13672 y2 = event.pageY; 13961 y2 = event.pageY;
13673 13962
13674 - if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }  
13675 - if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; } 13963 + if ( x1 > x2 ) {
  13964 + tmp = x2; x2 = x1; x1 = tmp;
  13965 + }
  13966 + if ( y1 > y2 ) {
  13967 + tmp = y2; y2 = y1; y1 = tmp;
  13968 + }
13676 this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } ); 13969 this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
13677 13970
13678 this.selectees.each( function() { 13971 this.selectees.each( function() {
@@ -13797,7 +14090,7 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, { @@ -13797,7 +14090,7 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, {
13797 14090
13798 14091
13799 /*! 14092 /*!
13800 - * jQuery UI Selectmenu 1.12.1 14093 + * jQuery UI Selectmenu 1.13.2
13801 * http://jqueryui.com 14094 * http://jqueryui.com
13802 * 14095 *
13803 * Copyright jQuery Foundation and other contributors 14096 * Copyright jQuery Foundation and other contributors
@@ -13807,9 +14100,9 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, { @@ -13807,9 +14100,9 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, {
13807 14100
13808 //>>label: Selectmenu 14101 //>>label: Selectmenu
13809 //>>group: Widgets 14102 //>>group: Widgets
13810 -// jscs:disable maximumLineLength 14103 +/* eslint-disable max-len */
13811 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select. 14104 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
13812 -// jscs:enable maximumLineLength 14105 +/* eslint-enable max-len */
13813 //>>docs: http://api.jqueryui.com/selectmenu/ 14106 //>>docs: http://api.jqueryui.com/selectmenu/
13814 //>>demos: http://jqueryui.com/selectmenu/ 14107 //>>demos: http://jqueryui.com/selectmenu/
13815 //>>css.structure: ../../themes/base/core.css 14108 //>>css.structure: ../../themes/base/core.css
@@ -13817,9 +14110,8 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, { @@ -13817,9 +14110,8 @@ var widgetsSelectable = $.widget( &quot;ui.selectable&quot;, $.ui.mouse, {
13817 //>>css.theme: ../../themes/base/theme.css 14110 //>>css.theme: ../../themes/base/theme.css
13818 14111
13819 14112
13820 -  
13821 var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { 14113 var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
13822 - version: "1.12.1", 14114 + version: "1.13.2",
13823 defaultElement: "<select>", 14115 defaultElement: "<select>",
13824 options: { 14116 options: {
13825 appendTo: null, 14117 appendTo: null,
@@ -13874,7 +14166,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -13874,7 +14166,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
13874 this.labels = this.element.labels().attr( "for", this.ids.button ); 14166 this.labels = this.element.labels().attr( "for", this.ids.button );
13875 this._on( this.labels, { 14167 this._on( this.labels, {
13876 click: function( event ) { 14168 click: function( event ) {
13877 - this.button.focus(); 14169 + this.button.trigger( "focus" );
13878 event.preventDefault(); 14170 event.preventDefault();
13879 } 14171 }
13880 } ); 14172 } );
@@ -14192,7 +14484,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -14192,7 +14484,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
14192 // Support: IE 14484 // Support: IE
14193 // Setting the text selection kills the button focus in IE, but 14485 // Setting the text selection kills the button focus in IE, but
14194 // restoring the focus doesn't kill the selection. 14486 // restoring the focus doesn't kill the selection.
14195 - this.button.focus(); 14487 + this.button.trigger( "focus" );
14196 }, 14488 },
14197 14489
14198 _documentClick: { 14490 _documentClick: {
@@ -14202,7 +14494,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -14202,7 +14494,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
14202 } 14494 }
14203 14495
14204 if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" + 14496 if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
14205 - $.ui.escapeSelector( this.ids.button ) ).length ) { 14497 + $.escapeSelector( this.ids.button ) ).length ) {
14206 this.close( event ); 14498 this.close( event );
14207 } 14499 }
14208 } 14500 }
@@ -14433,6 +14725,10 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -14433,6 +14725,10 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
14433 var that = this, 14725 var that = this,
14434 data = []; 14726 data = [];
14435 options.each( function( index, item ) { 14727 options.each( function( index, item ) {
  14728 + if ( item.hidden ) {
  14729 + return;
  14730 + }
  14731 +
14436 data.push( that._parseOption( $( item ), index ) ); 14732 data.push( that._parseOption( $( item ), index ) );
14437 } ); 14733 } );
14438 this.items = data; 14734 this.items = data;
@@ -14463,7 +14759,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -14463,7 +14759,7 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
14463 14759
14464 14760
14465 /*! 14761 /*!
14466 - * jQuery UI Slider 1.12.1 14762 + * jQuery UI Slider 1.13.2
14467 * http://jqueryui.com 14763 * http://jqueryui.com
14468 * 14764 *
14469 * Copyright jQuery Foundation and other contributors 14765 * Copyright jQuery Foundation and other contributors
@@ -14481,9 +14777,8 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, { @@ -14481,9 +14777,8 @@ var widgetsSelectmenu = $.widget( &quot;ui.selectmenu&quot;, [ $.ui.formResetMixin, {
14481 //>>css.theme: ../../themes/base/theme.css 14777 //>>css.theme: ../../themes/base/theme.css
14482 14778
14483 14779
14484 -  
14485 var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, { 14780 var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14486 - version: "1.12.1", 14781 + version: "1.13.2",
14487 widgetEventPrefix: "slide", 14782 widgetEventPrefix: "slide",
14488 14783
14489 options: { 14784 options: {
@@ -14580,7 +14875,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, { @@ -14580,7 +14875,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, {
14580 options.values = [ this._valueMin(), this._valueMin() ]; 14875 options.values = [ this._valueMin(), this._valueMin() ];
14581 } else if ( options.values.length && options.values.length !== 2 ) { 14876 } else if ( options.values.length && options.values.length !== 2 ) {
14582 options.values = [ options.values[ 0 ], options.values[ 0 ] ]; 14877 options.values = [ options.values[ 0 ], options.values[ 0 ] ];
14583 - } else if ( $.isArray( options.values ) ) { 14878 + } else if ( Array.isArray( options.values ) ) {
14584 options.values = options.values.slice( 0 ); 14879 options.values = options.values.slice( 0 );
14585 } 14880 }
14586 } 14881 }
@@ -14843,7 +15138,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, { @@ -14843,7 +15138,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, {
14843 } 15138 }
14844 15139
14845 if ( arguments.length ) { 15140 if ( arguments.length ) {
14846 - if ( $.isArray( arguments[ 0 ] ) ) { 15141 + if ( Array.isArray( arguments[ 0 ] ) ) {
14847 vals = this.options.values; 15142 vals = this.options.values;
14848 newValues = arguments[ 0 ]; 15143 newValues = arguments[ 0 ];
14849 for ( i = 0; i < vals.length; i += 1 ) { 15144 for ( i = 0; i < vals.length; i += 1 ) {
@@ -14877,7 +15172,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, { @@ -14877,7 +15172,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, {
14877 } 15172 }
14878 } 15173 }
14879 15174
14880 - if ( $.isArray( this.options.values ) ) { 15175 + if ( Array.isArray( this.options.values ) ) {
14881 valsLength = this.options.values.length; 15176 valsLength = this.options.values.length;
14882 } 15177 }
14883 15178
@@ -15199,7 +15494,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, { @@ -15199,7 +15494,7 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, {
15199 15494
15200 15495
15201 /*! 15496 /*!
15202 - * jQuery UI Sortable 1.12.1 15497 + * jQuery UI Sortable 1.13.2
15203 * http://jqueryui.com 15498 * http://jqueryui.com
15204 * 15499 *
15205 * Copyright jQuery Foundation and other contributors 15500 * Copyright jQuery Foundation and other contributors
@@ -15215,9 +15510,8 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, { @@ -15215,9 +15510,8 @@ var widgetsSlider = $.widget( &quot;ui.slider&quot;, $.ui.mouse, {
15215 //>>css.structure: ../../themes/base/sortable.css 15510 //>>css.structure: ../../themes/base/sortable.css
15216 15511
15217 15512
15218 -  
15219 var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, { 15513 var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15220 - version: "1.12.1", 15514 + version: "1.13.2",
15221 widgetEventPrefix: "sort", 15515 widgetEventPrefix: "sort",
15222 ready: false, 15516 ready: false,
15223 options: { 15517 options: {
@@ -15377,6 +15671,11 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15377,6 +15671,11 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15377 // mouseCapture 15671 // mouseCapture
15378 this.refreshPositions(); 15672 this.refreshPositions();
15379 15673
  15674 + //Prepare the dragged items parent
  15675 + this.appendTo = $( o.appendTo !== "parent" ?
  15676 + o.appendTo :
  15677 + this.currentItem.parent() );
  15678 +
15380 //Create and append the visible helper 15679 //Create and append the visible helper
15381 this.helper = this._createHelper( event ); 15680 this.helper = this._createHelper( event );
15382 15681
@@ -15391,9 +15690,6 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15391,9 +15690,6 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15391 //Cache the margins of the original element 15690 //Cache the margins of the original element
15392 this._cacheMargins(); 15691 this._cacheMargins();
15393 15692
15394 - //Get the next scrolling parent  
15395 - this.scrollParent = this.helper.scrollParent();  
15396 -  
15397 //The element's absolute position on the page minus margins 15693 //The element's absolute position on the page minus margins
15398 this.offset = this.currentItem.offset(); 15694 this.offset = this.currentItem.offset();
15399 this.offset = { 15695 this.offset = {
@@ -15406,25 +15702,22 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15406,25 +15702,22 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15406 left: event.pageX - this.offset.left, 15702 left: event.pageX - this.offset.left,
15407 top: event.pageY - this.offset.top 15703 top: event.pageY - this.offset.top
15408 }, 15704 },
15409 - parent: this._getParentOffset(),  
15410 15705
15411 // This is a relative to absolute position minus the actual position calculation - 15706 // This is a relative to absolute position minus the actual position calculation -
15412 // only used for relative positioned helper 15707 // only used for relative positioned helper
15413 relative: this._getRelativeOffset() 15708 relative: this._getRelativeOffset()
15414 } ); 15709 } );
15415 15710
15416 - // Only after we got the offset, we can change the helper's position to absolute 15711 + // After we get the helper offset, but before we get the parent offset we can
  15712 + // change the helper's position to absolute
15417 // TODO: Still need to figure out a way to make relative sorting possible 15713 // TODO: Still need to figure out a way to make relative sorting possible
15418 this.helper.css( "position", "absolute" ); 15714 this.helper.css( "position", "absolute" );
15419 this.cssPosition = this.helper.css( "position" ); 15715 this.cssPosition = this.helper.css( "position" );
15420 15716
15421 - //Generate the original position  
15422 - this.originalPosition = this._generatePosition( event );  
15423 - this.originalPageX = event.pageX;  
15424 - this.originalPageY = event.pageY;  
15425 -  
15426 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied 15717 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
15427 - ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) ); 15718 + if ( o.cursorAt ) {
  15719 + this._adjustOffsetFromHelper( o.cursorAt );
  15720 + }
15428 15721
15429 //Cache the former DOM position 15722 //Cache the former DOM position
15430 this.domPosition = { 15723 this.domPosition = {
@@ -15441,6 +15734,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15441,6 +15734,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15441 //Create the placeholder 15734 //Create the placeholder
15442 this._createPlaceholder(); 15735 this._createPlaceholder();
15443 15736
  15737 + //Get the next scrolling parent
  15738 + this.scrollParent = this.placeholder.scrollParent();
  15739 +
  15740 + $.extend( this.offset, {
  15741 + parent: this._getParentOffset()
  15742 + } );
  15743 +
15444 //Set a containment if given in the options 15744 //Set a containment if given in the options
15445 if ( o.containment ) { 15745 if ( o.containment ) {
15446 this._setContainment(); 15746 this._setContainment();
@@ -15457,13 +15757,9 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15457,13 +15757,9 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15457 $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body ); 15757 $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
15458 } 15758 }
15459 15759
15460 - if ( o.opacity ) { // opacity option  
15461 - if ( this.helper.css( "opacity" ) ) {  
15462 - this._storedOpacity = this.helper.css( "opacity" );  
15463 - }  
15464 - this.helper.css( "opacity", o.opacity );  
15465 - }  
15466 - 15760 + // We need to make sure to grab the zIndex before setting the
  15761 + // opacity, because setting the opacity to anything lower than 1
  15762 + // causes the zIndex to change from "auto" to 0.
15467 if ( o.zIndex ) { // zIndex option 15763 if ( o.zIndex ) { // zIndex option
15468 if ( this.helper.css( "zIndex" ) ) { 15764 if ( this.helper.css( "zIndex" ) ) {
15469 this._storedZIndex = this.helper.css( "zIndex" ); 15765 this._storedZIndex = this.helper.css( "zIndex" );
@@ -15471,6 +15767,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15471,6 +15767,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15471 this.helper.css( "zIndex", o.zIndex ); 15767 this.helper.css( "zIndex", o.zIndex );
15472 } 15768 }
15473 15769
  15770 + if ( o.opacity ) { // opacity option
  15771 + if ( this.helper.css( "opacity" ) ) {
  15772 + this._storedOpacity = this.helper.css( "opacity" );
  15773 + }
  15774 + this.helper.css( "opacity", o.opacity );
  15775 + }
  15776 +
15474 //Prepare scrolling 15777 //Prepare scrolling
15475 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && 15778 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15476 this.scrollParent[ 0 ].tagName !== "HTML" ) { 15779 this.scrollParent[ 0 ].tagName !== "HTML" ) {
@@ -15505,77 +15808,82 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15505,77 +15808,82 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15505 15808
15506 this._addClass( this.helper, "ui-sortable-helper" ); 15809 this._addClass( this.helper, "ui-sortable-helper" );
15507 15810
15508 - // Execute the drag once - this causes the helper not to be visiblebefore getting its  
15509 - // correct position  
15510 - this._mouseDrag( event );  
15511 - return true; 15811 + //Move the helper, if needed
  15812 + if ( !this.helper.parent().is( this.appendTo ) ) {
  15813 + this.helper.detach().appendTo( this.appendTo );
15512 15814
15513 - }, 15815 + //Update position
  15816 + this.offset.parent = this._getParentOffset();
  15817 + }
15514 15818
15515 - _mouseDrag: function( event ) {  
15516 - var i, item, itemElement, intersection,  
15517 - o = this.options,  
15518 - scrolled = false; 15819 + //Generate the original position
  15820 + this.position = this.originalPosition = this._generatePosition( event );
  15821 + this.originalPageX = event.pageX;
  15822 + this.originalPageY = event.pageY;
  15823 + this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
15519 15824
15520 - //Compute the helpers position  
15521 - this.position = this._generatePosition( event );  
15522 - this.positionAbs = this._convertPositionTo( "absolute" ); 15825 + this._mouseDrag( event );
15523 15826
15524 - if ( !this.lastPositionAbs ) {  
15525 - this.lastPositionAbs = this.positionAbs;  
15526 - } 15827 + return true;
15527 15828
15528 - //Do scrolling  
15529 - if ( this.options.scroll ) {  
15530 - if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&  
15531 - this.scrollParent[ 0 ].tagName !== "HTML" ) { 15829 + },
15532 15830
15533 - if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -  
15534 - event.pageY < o.scrollSensitivity ) {  
15535 - this.scrollParent[ 0 ].scrollTop =  
15536 - scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;  
15537 - } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {  
15538 - this.scrollParent[ 0 ].scrollTop =  
15539 - scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;  
15540 - } 15831 + _scroll: function( event ) {
  15832 + var o = this.options,
  15833 + scrolled = false;
15541 15834
15542 - if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -  
15543 - event.pageX < o.scrollSensitivity ) {  
15544 - this.scrollParent[ 0 ].scrollLeft = scrolled =  
15545 - this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;  
15546 - } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {  
15547 - this.scrollParent[ 0 ].scrollLeft = scrolled =  
15548 - this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;  
15549 - } 15835 + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
  15836 + this.scrollParent[ 0 ].tagName !== "HTML" ) {
15550 15837
15551 - } else { 15838 + if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
  15839 + event.pageY < o.scrollSensitivity ) {
  15840 + this.scrollParent[ 0 ].scrollTop =
  15841 + scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
  15842 + } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
  15843 + this.scrollParent[ 0 ].scrollTop =
  15844 + scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
  15845 + }
15552 15846
15553 - if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {  
15554 - scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );  
15555 - } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <  
15556 - o.scrollSensitivity ) {  
15557 - scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );  
15558 - } 15847 + if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
  15848 + event.pageX < o.scrollSensitivity ) {
  15849 + this.scrollParent[ 0 ].scrollLeft = scrolled =
  15850 + this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
  15851 + } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
  15852 + this.scrollParent[ 0 ].scrollLeft = scrolled =
  15853 + this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
  15854 + }
15559 15855
15560 - if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {  
15561 - scrolled = this.document.scrollLeft(  
15562 - this.document.scrollLeft() - o.scrollSpeed  
15563 - );  
15564 - } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <  
15565 - o.scrollSensitivity ) {  
15566 - scrolled = this.document.scrollLeft(  
15567 - this.document.scrollLeft() + o.scrollSpeed  
15568 - );  
15569 - } 15856 + } else {
15570 15857
  15858 + if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
  15859 + scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
  15860 + } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
  15861 + o.scrollSensitivity ) {
  15862 + scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15571 } 15863 }
15572 15864
15573 - if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {  
15574 - $.ui.ddmanager.prepareOffsets( this, event ); 15865 + if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
  15866 + scrolled = this.document.scrollLeft(
  15867 + this.document.scrollLeft() - o.scrollSpeed
  15868 + );
  15869 + } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
  15870 + o.scrollSensitivity ) {
  15871 + scrolled = this.document.scrollLeft(
  15872 + this.document.scrollLeft() + o.scrollSpeed
  15873 + );
15575 } 15874 }
  15875 +
15576 } 15876 }
15577 15877
15578 - //Regenerate the absolute position used for position checks 15878 + return scrolled;
  15879 + },
  15880 +
  15881 + _mouseDrag: function( event ) {
  15882 + var i, item, itemElement, intersection,
  15883 + o = this.options;
  15884 +
  15885 + //Compute the helpers position
  15886 + this.position = this._generatePosition( event );
15579 this.positionAbs = this._convertPositionTo( "absolute" ); 15887 this.positionAbs = this._convertPositionTo( "absolute" );
15580 15888
15581 //Set the helper position 15889 //Set the helper position
@@ -15586,6 +15894,24 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15586,6 +15894,24 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15586 this.helper[ 0 ].style.top = this.position.top + "px"; 15894 this.helper[ 0 ].style.top = this.position.top + "px";
15587 } 15895 }
15588 15896
  15897 + //Do scrolling
  15898 + if ( o.scroll ) {
  15899 + if ( this._scroll( event ) !== false ) {
  15900 +
  15901 + //Update item positions used in position checks
  15902 + this._refreshItemPositions( true );
  15903 +
  15904 + if ( $.ui.ddmanager && !o.dropBehaviour ) {
  15905 + $.ui.ddmanager.prepareOffsets( this, event );
  15906 + }
  15907 + }
  15908 + }
  15909 +
  15910 + this.dragDirection = {
  15911 + vertical: this._getDragVerticalDirection(),
  15912 + horizontal: this._getDragHorizontalDirection()
  15913 + };
  15914 +
15589 //Rearrange 15915 //Rearrange
15590 for ( i = this.items.length - 1; i >= 0; i-- ) { 15916 for ( i = this.items.length - 1; i >= 0; i-- ) {
15591 15917
@@ -15612,7 +15938,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15612,7 +15938,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15612 // no useless actions that have been done before 15938 // no useless actions that have been done before
15613 // no action if the item moved is the parent of the item checked 15939 // no action if the item moved is the parent of the item checked
15614 if ( itemElement !== this.currentItem[ 0 ] && 15940 if ( itemElement !== this.currentItem[ 0 ] &&
15615 - this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement && 15941 + this.placeholder[ intersection === 1 ?
  15942 + "next" : "prev" ]()[ 0 ] !== itemElement &&
15616 !$.contains( this.placeholder[ 0 ], itemElement ) && 15943 !$.contains( this.placeholder[ 0 ], itemElement ) &&
15617 ( this.options.type === "semi-dynamic" ? 15944 ( this.options.type === "semi-dynamic" ?
15618 !$.contains( this.element[ 0 ], itemElement ) : 15945 !$.contains( this.element[ 0 ], itemElement ) :
@@ -15622,7 +15949,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15622,7 +15949,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15622 15949
15623 this.direction = intersection === 1 ? "down" : "up"; 15950 this.direction = intersection === 1 ? "down" : "up";
15624 15951
15625 - if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) { 15952 + if ( this.options.tolerance === "pointer" ||
  15953 + this._intersectsWithSides( item ) ) {
15626 this._rearrange( event, item ); 15954 this._rearrange( event, item );
15627 } else { 15955 } else {
15628 break; 15956 break;
@@ -15838,12 +16166,12 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15838,12 +16166,12 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15838 return false; 16166 return false;
15839 } 16167 }
15840 16168
15841 - verticalDirection = this._getDragVerticalDirection();  
15842 - horizontalDirection = this._getDragHorizontalDirection(); 16169 + verticalDirection = this.dragDirection.vertical;
  16170 + horizontalDirection = this.dragDirection.horizontal;
15843 16171
15844 return this.floating ? 16172 return this.floating ?
15845 - ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )  
15846 - : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) ); 16173 + ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
  16174 + ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
15847 16175
15848 }, 16176 },
15849 16177
@@ -15853,8 +16181,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15853,8 +16181,8 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15853 this.offset.click.top, item.top + ( item.height / 2 ), item.height ), 16181 this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
15854 isOverRightHalf = this._isOverAxis( this.positionAbs.left + 16182 isOverRightHalf = this._isOverAxis( this.positionAbs.left +
15855 this.offset.click.left, item.left + ( item.width / 2 ), item.width ), 16183 this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
15856 - verticalDirection = this._getDragVerticalDirection(),  
15857 - horizontalDirection = this._getDragHorizontalDirection(); 16184 + verticalDirection = this.dragDirection.vertical,
  16185 + horizontalDirection = this.dragDirection.horizontal;
15858 16186
15859 if ( this.floating && horizontalDirection ) { 16187 if ( this.floating && horizontalDirection ) {
15860 return ( ( horizontalDirection === "right" && isOverRightHalf ) || 16188 return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
@@ -15903,7 +16231,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15903,7 +16231,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15903 for ( j = cur.length - 1; j >= 0; j-- ) { 16231 for ( j = cur.length - 1; j >= 0; j-- ) {
15904 inst = $.data( cur[ j ], this.widgetFullName ); 16232 inst = $.data( cur[ j ], this.widgetFullName );
15905 if ( inst && inst !== this && !inst.options.disabled ) { 16233 if ( inst && inst !== this && !inst.options.disabled ) {
15906 - queries.push( [ $.isFunction( inst.options.items ) ? 16234 + queries.push( [ typeof inst.options.items === "function" ?
15907 inst.options.items.call( inst.element ) : 16235 inst.options.items.call( inst.element ) :
15908 $( inst.options.items, inst.element ) 16236 $( inst.options.items, inst.element )
15909 .not( ".ui-sortable-helper" ) 16237 .not( ".ui-sortable-helper" )
@@ -15913,7 +16241,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15913,7 +16241,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15913 } 16241 }
15914 } 16242 }
15915 16243
15916 - queries.push( [ $.isFunction( this.options.items ) ? 16244 + queries.push( [ typeof this.options.items === "function" ?
15917 this.options.items 16245 this.options.items
15918 .call( this.element, null, { options: this.options, item: this.currentItem } ) : 16246 .call( this.element, null, { options: this.options, item: this.currentItem } ) :
15919 $( this.options.items, this.element ) 16247 $( this.options.items, this.element )
@@ -15953,7 +16281,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15953,7 +16281,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15953 16281
15954 var i, j, cur, inst, targetData, _queries, item, queriesLength, 16282 var i, j, cur, inst, targetData, _queries, item, queriesLength,
15955 items = this.items, 16283 items = this.items,
15956 - queries = [ [ $.isFunction( this.options.items ) ? 16284 + queries = [ [ typeof this.options.items === "function" ?
15957 this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) : 16285 this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
15958 $( this.options.items, this.element ), this ] ], 16286 $( this.options.items, this.element ), this ] ],
15959 connectWith = this._connectWith(); 16287 connectWith = this._connectWith();
@@ -15965,7 +16293,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15965,7 +16293,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15965 for ( j = cur.length - 1; j >= 0; j-- ) { 16293 for ( j = cur.length - 1; j >= 0; j-- ) {
15966 inst = $.data( cur[ j ], this.widgetFullName ); 16294 inst = $.data( cur[ j ], this.widgetFullName );
15967 if ( inst && inst !== this && !inst.options.disabled ) { 16295 if ( inst && inst !== this && !inst.options.disabled ) {
15968 - queries.push( [ $.isFunction( inst.options.items ) ? 16296 + queries.push( [ typeof inst.options.items === "function" ?
15969 inst.options.items 16297 inst.options.items
15970 .call( inst.element[ 0 ], event, { item: this.currentItem } ) : 16298 .call( inst.element[ 0 ], event, { item: this.currentItem } ) :
15971 $( inst.options.items, inst.element ), inst ] ); 16299 $( inst.options.items, inst.element ), inst ] );
@@ -15996,26 +16324,14 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -15996,26 +16324,14 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
15996 16324
15997 }, 16325 },
15998 16326
15999 - refreshPositions: function( fast ) {  
16000 -  
16001 - // Determine whether items are being displayed horizontally  
16002 - this.floating = this.items.length ?  
16003 - this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :  
16004 - false;  
16005 -  
16006 - //This has to be redone because due to the item being moved out/into the offsetParent,  
16007 - // the offsetParent's position will change  
16008 - if ( this.offsetParent && this.helper ) {  
16009 - this.offset.parent = this._getParentOffset();  
16010 - }  
16011 - 16327 + _refreshItemPositions: function( fast ) {
16012 var i, item, t, p; 16328 var i, item, t, p;
16013 16329
16014 for ( i = this.items.length - 1; i >= 0; i-- ) { 16330 for ( i = this.items.length - 1; i >= 0; i-- ) {
16015 item = this.items[ i ]; 16331 item = this.items[ i ];
16016 16332
16017 //We ignore calculating positions of all connected containers when we're not over them 16333 //We ignore calculating positions of all connected containers when we're not over them
16018 - if ( item.instance !== this.currentContainer && this.currentContainer && 16334 + if ( this.currentContainer && item.instance !== this.currentContainer &&
16019 item.item[ 0 ] !== this.currentItem[ 0 ] ) { 16335 item.item[ 0 ] !== this.currentItem[ 0 ] ) {
16020 continue; 16336 continue;
16021 } 16337 }
@@ -16033,6 +16349,24 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16033,6 +16349,24 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16033 item.left = p.left; 16349 item.left = p.left;
16034 item.top = p.top; 16350 item.top = p.top;
16035 } 16351 }
  16352 + },
  16353 +
  16354 + refreshPositions: function( fast ) {
  16355 +
  16356 + // Determine whether items are being displayed horizontally
  16357 + this.floating = this.items.length ?
  16358 + this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
  16359 + false;
  16360 +
  16361 + // This has to be redone because due to the item being moved out/into the offsetParent,
  16362 + // the offsetParent's position will change
  16363 + if ( this.offsetParent && this.helper ) {
  16364 + this.offset.parent = this._getParentOffset();
  16365 + }
  16366 +
  16367 + this._refreshItemPositions( fast );
  16368 +
  16369 + var i, p;
16036 16370
16037 if ( this.options.custom && this.options.custom.refreshContainers ) { 16371 if ( this.options.custom && this.options.custom.refreshContainers ) {
16038 this.options.custom.refreshContainers.call( this ); 16372 this.options.custom.refreshContainers.call( this );
@@ -16053,20 +16387,20 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16053,20 +16387,20 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16053 16387
16054 _createPlaceholder: function( that ) { 16388 _createPlaceholder: function( that ) {
16055 that = that || this; 16389 that = that || this;
16056 - var className, 16390 + var className, nodeName,
16057 o = that.options; 16391 o = that.options;
16058 16392
16059 if ( !o.placeholder || o.placeholder.constructor === String ) { 16393 if ( !o.placeholder || o.placeholder.constructor === String ) {
16060 className = o.placeholder; 16394 className = o.placeholder;
  16395 + nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
16061 o.placeholder = { 16396 o.placeholder = {
16062 element: function() { 16397 element: function() {
16063 16398
16064 - var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),  
16065 - element = $( "<" + nodeName + ">", that.document[ 0 ] ); 16399 + var element = $( "<" + nodeName + ">", that.document[ 0 ] );
16066 16400
16067 - that._addClass( element, "ui-sortable-placeholder",  
16068 - className || that.currentItem[ 0 ].className )  
16069 - ._removeClass( element, "ui-sortable-helper" ); 16401 + that._addClass( element, "ui-sortable-placeholder",
  16402 + className || that.currentItem[ 0 ].className )
  16403 + ._removeClass( element, "ui-sortable-helper" );
16070 16404
16071 if ( nodeName === "tbody" ) { 16405 if ( nodeName === "tbody" ) {
16072 that._createTrPlaceholder( 16406 that._createTrPlaceholder(
@@ -16095,9 +16429,15 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16095,9 +16429,15 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16095 return; 16429 return;
16096 } 16430 }
16097 16431
16098 - //If the element doesn't have a actual height by itself (without styles coming  
16099 - // from a stylesheet), it receives the inline height from the dragged item  
16100 - if ( !p.height() ) { 16432 + // If the element doesn't have a actual height or width by itself (without
  16433 + // styles coming from a stylesheet), it receives the inline height and width
  16434 + // from the dragged item. Or, if it's a tbody or tr, it's going to have a height
  16435 + // anyway since we're populating them with <td>s above, but they're unlikely to
  16436 + // be the correct height on their own if the row heights are dynamic, so we'll
  16437 + // always assign the height of the dragged item given forcePlaceholderSize
  16438 + // is true.
  16439 + if ( !p.height() || ( o.forcePlaceholderSize &&
  16440 + ( nodeName === "tbody" || nodeName === "tr" ) ) ) {
16101 p.height( 16441 p.height(
16102 that.currentItem.innerHeight() - 16442 that.currentItem.innerHeight() -
16103 parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) - 16443 parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
@@ -16230,9 +16570,11 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16230,9 +16570,11 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16230 return; 16570 return;
16231 } 16571 }
16232 16572
16233 - itemWithLeastDistance ?  
16234 - this._rearrange( event, itemWithLeastDistance, null, true ) : 16573 + if ( itemWithLeastDistance ) {
  16574 + this._rearrange( event, itemWithLeastDistance, null, true );
  16575 + } else {
16235 this._rearrange( event, null, this.containers[ innermostIndex ].element, true ); 16576 this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
  16577 + }
16236 this._trigger( "change", event, this._uiHash() ); 16578 this._trigger( "change", event, this._uiHash() );
16237 this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) ); 16579 this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
16238 this.currentContainer = this.containers[ innermostIndex ]; 16580 this.currentContainer = this.containers[ innermostIndex ];
@@ -16240,6 +16582,15 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16240,6 +16582,15 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16240 //Update the placeholder 16582 //Update the placeholder
16241 this.options.placeholder.update( this.currentContainer, this.placeholder ); 16583 this.options.placeholder.update( this.currentContainer, this.placeholder );
16242 16584
  16585 + //Update scrollParent
  16586 + this.scrollParent = this.placeholder.scrollParent();
  16587 +
  16588 + //Update overflowOffset
  16589 + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
  16590 + this.scrollParent[ 0 ].tagName !== "HTML" ) {
  16591 + this.overflowOffset = this.scrollParent.offset();
  16592 + }
  16593 +
16243 this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); 16594 this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
16244 this.containers[ innermostIndex ].containerCache.over = 1; 16595 this.containers[ innermostIndex ].containerCache.over = 1;
16245 } 16596 }
@@ -16249,15 +16600,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16249,15 +16600,13 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16249 _createHelper: function( event ) { 16600 _createHelper: function( event ) {
16250 16601
16251 var o = this.options, 16602 var o = this.options,
16252 - helper = $.isFunction( o.helper ) ? 16603 + helper = typeof o.helper === "function" ?
16253 $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) : 16604 $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
16254 ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem ); 16605 ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
16255 16606
16256 //Add the helper to the DOM if that didn't happen already 16607 //Add the helper to the DOM if that didn't happen already
16257 if ( !helper.parents( "body" ).length ) { 16608 if ( !helper.parents( "body" ).length ) {
16258 - $( o.appendTo !== "parent" ?  
16259 - o.appendTo :  
16260 - this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] ); 16609 + this.appendTo[ 0 ].appendChild( helper[ 0 ] );
16261 } 16610 }
16262 16611
16263 if ( helper[ 0 ] === this.currentItem[ 0 ] ) { 16612 if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
@@ -16285,7 +16634,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16285,7 +16634,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16285 if ( typeof obj === "string" ) { 16634 if ( typeof obj === "string" ) {
16286 obj = obj.split( " " ); 16635 obj = obj.split( " " );
16287 } 16636 }
16288 - if ( $.isArray( obj ) ) { 16637 + if ( Array.isArray( obj ) ) {
16289 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; 16638 obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
16290 } 16639 }
16291 if ( "left" in obj ) { 16640 if ( "left" in obj ) {
@@ -16565,9 +16914,12 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16565,9 +16914,12 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16565 16914
16566 _rearrange: function( event, i, a, hardRefresh ) { 16915 _rearrange: function( event, i, a, hardRefresh ) {
16567 16916
16568 - a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) : 16917 + if ( a ) {
  16918 + a[ 0 ].appendChild( this.placeholder[ 0 ] );
  16919 + } else {
16569 i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ], 16920 i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
16570 ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) ); 16921 ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
  16922 + }
16571 16923
16572 //Various things done here to improve the performance: 16924 //Various things done here to improve the performance:
16573 // 1. we create a setTimeout, that calls refreshPositions 16925 // 1. we create a setTimeout, that calls refreshPositions
@@ -16735,7 +17087,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16735,7 +17087,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16735 17087
16736 17088
16737 /*! 17089 /*!
16738 - * jQuery UI Spinner 1.12.1 17090 + * jQuery UI Spinner 1.13.2
16739 * http://jqueryui.com 17091 * http://jqueryui.com
16740 * 17092 *
16741 * Copyright jQuery Foundation and other contributors 17093 * Copyright jQuery Foundation and other contributors
@@ -16753,8 +17105,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, { @@ -16753,8 +17105,7 @@ var widgetsSortable = $.widget( &quot;ui.sortable&quot;, $.ui.mouse, {
16753 //>>css.theme: ../../themes/base/theme.css 17105 //>>css.theme: ../../themes/base/theme.css
16754 17106
16755 17107
16756 -  
16757 -function spinnerModifer( fn ) { 17108 +function spinnerModifier( fn ) {
16758 return function() { 17109 return function() {
16759 var previous = this.element.val(); 17110 var previous = this.element.val();
16760 fn.apply( this, arguments ); 17111 fn.apply( this, arguments );
@@ -16766,7 +17117,7 @@ function spinnerModifer( fn ) { @@ -16766,7 +17117,7 @@ function spinnerModifer( fn ) {
16766 } 17117 }
16767 17118
16768 $.widget( "ui.spinner", { 17119 $.widget( "ui.spinner", {
16769 - version: "1.12.1", 17120 + version: "1.13.2",
16770 defaultElement: "<input>", 17121 defaultElement: "<input>",
16771 widgetEventPrefix: "spin", 17122 widgetEventPrefix: "spin",
16772 options: { 17123 options: {
@@ -16859,9 +17210,13 @@ $.widget( &quot;ui.spinner&quot;, { @@ -16859,9 +17210,13 @@ $.widget( &quot;ui.spinner&quot;, {
16859 } 17210 }
16860 }, 17211 },
16861 mousewheel: function( event, delta ) { 17212 mousewheel: function( event, delta ) {
16862 - if ( !delta ) { 17213 + var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
  17214 + var isActive = this.element[ 0 ] === activeElement;
  17215 +
  17216 + if ( !isActive || !delta ) {
16863 return; 17217 return;
16864 } 17218 }
  17219 +
16865 if ( !this.spinning && !this._start( event ) ) { 17220 if ( !this.spinning && !this._start( event ) ) {
16866 return false; 17221 return false;
16867 } 17222 }
@@ -17059,7 +17414,7 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17059,7 +17414,7 @@ $.widget( &quot;ui.spinner&quot;, {
17059 var incremental = this.options.incremental; 17414 var incremental = this.options.incremental;
17060 17415
17061 if ( incremental ) { 17416 if ( incremental ) {
17062 - return $.isFunction( incremental ) ? 17417 + return typeof incremental === "function" ?
17063 incremental( i ) : 17418 incremental( i ) :
17064 Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 ); 17419 Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
17065 } 17420 }
@@ -17157,7 +17512,7 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17157,7 +17512,7 @@ $.widget( &quot;ui.spinner&quot;, {
17157 this.buttons.button( value ? "disable" : "enable" ); 17512 this.buttons.button( value ? "disable" : "enable" );
17158 }, 17513 },
17159 17514
17160 - _setOptions: spinnerModifer( function( options ) { 17515 + _setOptions: spinnerModifier( function( options ) {
17161 this._super( options ); 17516 this._super( options );
17162 } ), 17517 } ),
17163 17518
@@ -17224,7 +17579,7 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17224,7 +17579,7 @@ $.widget( &quot;ui.spinner&quot;, {
17224 this.uiSpinner.replaceWith( this.element ); 17579 this.uiSpinner.replaceWith( this.element );
17225 }, 17580 },
17226 17581
17227 - stepUp: spinnerModifer( function( steps ) { 17582 + stepUp: spinnerModifier( function( steps ) {
17228 this._stepUp( steps ); 17583 this._stepUp( steps );
17229 } ), 17584 } ),
17230 _stepUp: function( steps ) { 17585 _stepUp: function( steps ) {
@@ -17234,7 +17589,7 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17234,7 +17589,7 @@ $.widget( &quot;ui.spinner&quot;, {
17234 } 17589 }
17235 }, 17590 },
17236 17591
17237 - stepDown: spinnerModifer( function( steps ) { 17592 + stepDown: spinnerModifier( function( steps ) {
17238 this._stepDown( steps ); 17593 this._stepDown( steps );
17239 } ), 17594 } ),
17240 _stepDown: function( steps ) { 17595 _stepDown: function( steps ) {
@@ -17244,11 +17599,11 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17244,11 +17599,11 @@ $.widget( &quot;ui.spinner&quot;, {
17244 } 17599 }
17245 }, 17600 },
17246 17601
17247 - pageUp: spinnerModifer( function( pages ) { 17602 + pageUp: spinnerModifier( function( pages ) {
17248 this._stepUp( ( pages || 1 ) * this.options.page ); 17603 this._stepUp( ( pages || 1 ) * this.options.page );
17249 } ), 17604 } ),
17250 17605
17251 - pageDown: spinnerModifer( function( pages ) { 17606 + pageDown: spinnerModifier( function( pages ) {
17252 this._stepDown( ( pages || 1 ) * this.options.page ); 17607 this._stepDown( ( pages || 1 ) * this.options.page );
17253 } ), 17608 } ),
17254 17609
@@ -17256,7 +17611,7 @@ $.widget( &quot;ui.spinner&quot;, { @@ -17256,7 +17611,7 @@ $.widget( &quot;ui.spinner&quot;, {
17256 if ( !arguments.length ) { 17611 if ( !arguments.length ) {
17257 return this._parse( this.element.val() ); 17612 return this._parse( this.element.val() );
17258 } 17613 }
17259 - spinnerModifer( this._value ).call( this, newVal ); 17614 + spinnerModifier( this._value ).call( this, newVal );
17260 }, 17615 },
17261 17616
17262 widget: function() { 17617 widget: function() {
@@ -17293,7 +17648,7 @@ var widgetsSpinner = $.ui.spinner; @@ -17293,7 +17648,7 @@ var widgetsSpinner = $.ui.spinner;
17293 17648
17294 17649
17295 /*! 17650 /*!
17296 - * jQuery UI Tabs 1.12.1 17651 + * jQuery UI Tabs 1.13.2
17297 * http://jqueryui.com 17652 * http://jqueryui.com
17298 * 17653 *
17299 * Copyright jQuery Foundation and other contributors 17654 * Copyright jQuery Foundation and other contributors
@@ -17311,9 +17666,8 @@ var widgetsSpinner = $.ui.spinner; @@ -17311,9 +17666,8 @@ var widgetsSpinner = $.ui.spinner;
17311 //>>css.theme: ../../themes/base/theme.css 17666 //>>css.theme: ../../themes/base/theme.css
17312 17667
17313 17668
17314 -  
17315 $.widget( "ui.tabs", { 17669 $.widget( "ui.tabs", {
17316 - version: "1.12.1", 17670 + version: "1.13.2",
17317 delay: 300, 17671 delay: 300,
17318 options: { 17672 options: {
17319 active: null, 17673 active: null,
@@ -17371,8 +17725,8 @@ $.widget( &quot;ui.tabs&quot;, { @@ -17371,8 +17725,8 @@ $.widget( &quot;ui.tabs&quot;, {
17371 17725
17372 // Take disabling tabs via class attribute from HTML 17726 // Take disabling tabs via class attribute from HTML
17373 // into account and update option properly. 17727 // into account and update option properly.
17374 - if ( $.isArray( options.disabled ) ) {  
17375 - options.disabled = $.unique( options.disabled.concat( 17728 + if ( Array.isArray( options.disabled ) ) {
  17729 + options.disabled = $.uniqueSort( options.disabled.concat(
17376 $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { 17730 $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
17377 return that.tabs.index( li ); 17731 return that.tabs.index( li );
17378 } ) 17732 } )
@@ -17707,7 +18061,6 @@ $.widget( &quot;ui.tabs&quot;, { @@ -17707,7 +18061,6 @@ $.widget( &quot;ui.tabs&quot;, {
17707 return $( "a", this )[ 0 ]; 18061 return $( "a", this )[ 0 ];
17708 } ) 18062 } )
17709 .attr( { 18063 .attr( {
17710 - role: "presentation",  
17711 tabIndex: -1 18064 tabIndex: -1
17712 } ); 18065 } );
17713 this._addClass( this.anchors, "ui-tabs-anchor" ); 18066 this._addClass( this.anchors, "ui-tabs-anchor" );
@@ -17779,7 +18132,7 @@ $.widget( &quot;ui.tabs&quot;, { @@ -17779,7 +18132,7 @@ $.widget( &quot;ui.tabs&quot;, {
17779 _setOptionDisabled: function( disabled ) { 18132 _setOptionDisabled: function( disabled ) {
17780 var currentItem, li, i; 18133 var currentItem, li, i;
17781 18134
17782 - if ( $.isArray( disabled ) ) { 18135 + if ( Array.isArray( disabled ) ) {
17783 if ( !disabled.length ) { 18136 if ( !disabled.length ) {
17784 disabled = false; 18137 disabled = false;
17785 } else if ( disabled.length === this.anchors.length ) { 18138 } else if ( disabled.length === this.anchors.length ) {
@@ -18010,7 +18363,7 @@ $.widget( &quot;ui.tabs&quot;, { @@ -18010,7 +18363,7 @@ $.widget( &quot;ui.tabs&quot;, {
18010 // meta-function to give users option to provide a href string instead of a numerical index. 18363 // meta-function to give users option to provide a href string instead of a numerical index.
18011 if ( typeof index === "string" ) { 18364 if ( typeof index === "string" ) {
18012 index = this.anchors.index( this.anchors.filter( "[href$='" + 18365 index = this.anchors.index( this.anchors.filter( "[href$='" +
18013 - $.ui.escapeSelector( index ) + "']" ) ); 18366 + $.escapeSelector( index ) + "']" ) );
18014 } 18367 }
18015 18368
18016 return index; 18369 return index;
@@ -18067,7 +18420,7 @@ $.widget( &quot;ui.tabs&quot;, { @@ -18067,7 +18420,7 @@ $.widget( &quot;ui.tabs&quot;, {
18067 disabled = false; 18420 disabled = false;
18068 } else { 18421 } else {
18069 index = this._getIndex( index ); 18422 index = this._getIndex( index );
18070 - if ( $.isArray( disabled ) ) { 18423 + if ( Array.isArray( disabled ) ) {
18071 disabled = $.map( disabled, function( num ) { 18424 disabled = $.map( disabled, function( num ) {
18072 return num !== index ? num : null; 18425 return num !== index ? num : null;
18073 } ); 18426 } );
@@ -18093,7 +18446,7 @@ $.widget( &quot;ui.tabs&quot;, { @@ -18093,7 +18446,7 @@ $.widget( &quot;ui.tabs&quot;, {
18093 if ( $.inArray( index, disabled ) !== -1 ) { 18446 if ( $.inArray( index, disabled ) !== -1 ) {
18094 return; 18447 return;
18095 } 18448 }
18096 - if ( $.isArray( disabled ) ) { 18449 + if ( Array.isArray( disabled ) ) {
18097 disabled = $.merge( [ index ], disabled ).sort(); 18450 disabled = $.merge( [ index ], disabled ).sort();
18098 } else { 18451 } else {
18099 disabled = [ index ]; 18452 disabled = [ index ];
@@ -18199,7 +18552,7 @@ var widgetsTabs = $.ui.tabs; @@ -18199,7 +18552,7 @@ var widgetsTabs = $.ui.tabs;
18199 18552
18200 18553
18201 /*! 18554 /*!
18202 - * jQuery UI Tooltip 1.12.1 18555 + * jQuery UI Tooltip 1.13.2
18203 * http://jqueryui.com 18556 * http://jqueryui.com
18204 * 18557 *
18205 * Copyright jQuery Foundation and other contributors 18558 * Copyright jQuery Foundation and other contributors
@@ -18217,18 +18570,14 @@ var widgetsTabs = $.ui.tabs; @@ -18217,18 +18570,14 @@ var widgetsTabs = $.ui.tabs;
18217 //>>css.theme: ../../themes/base/theme.css 18570 //>>css.theme: ../../themes/base/theme.css
18218 18571
18219 18572
18220 -  
18221 $.widget( "ui.tooltip", { 18573 $.widget( "ui.tooltip", {
18222 - version: "1.12.1", 18574 + version: "1.13.2",
18223 options: { 18575 options: {
18224 classes: { 18576 classes: {
18225 "ui-tooltip": "ui-corner-all ui-widget-shadow" 18577 "ui-tooltip": "ui-corner-all ui-widget-shadow"
18226 }, 18578 },
18227 content: function() { 18579 content: function() {
18228 -  
18229 - // support: IE<9, Opera in jQuery <1.7  
18230 - // .text() can't accept undefined, so coerce to a string  
18231 - var title = $( this ).attr( "title" ) || ""; 18580 + var title = $( this ).attr( "title" );
18232 18581
18233 // Escape title, since we're going from an attribute to raw HTML 18582 // Escape title, since we're going from an attribute to raw HTML
18234 return $( "<a>" ).text( title ).html(); 18583 return $( "<a>" ).text( title ).html();
@@ -18255,7 +18604,7 @@ $.widget( &quot;ui.tooltip&quot;, { @@ -18255,7 +18604,7 @@ $.widget( &quot;ui.tooltip&quot;, {
18255 describedby.push( id ); 18604 describedby.push( id );
18256 elem 18605 elem
18257 .data( "ui-tooltip-id", id ) 18606 .data( "ui-tooltip-id", id )
18258 - .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); 18607 + .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
18259 }, 18608 },
18260 18609
18261 _removeDescribedBy: function( elem ) { 18610 _removeDescribedBy: function( elem ) {
@@ -18268,7 +18617,7 @@ $.widget( &quot;ui.tooltip&quot;, { @@ -18268,7 +18617,7 @@ $.widget( &quot;ui.tooltip&quot;, {
18268 } 18617 }
18269 18618
18270 elem.removeData( "ui-tooltip-id" ); 18619 elem.removeData( "ui-tooltip-id" );
18271 - describedby = $.trim( describedby.join( " " ) ); 18620 + describedby = String.prototype.trim.call( describedby.join( " " ) );
18272 if ( describedby ) { 18621 if ( describedby ) {
18273 elem.attr( "aria-describedby", describedby ); 18622 elem.attr( "aria-describedby", describedby );
18274 } else { 18623 } else {
@@ -18514,7 +18863,7 @@ $.widget( &quot;ui.tooltip&quot;, { @@ -18514,7 +18863,7 @@ $.widget( &quot;ui.tooltip&quot;, {
18514 position( positionOption.of ); 18863 position( positionOption.of );
18515 clearInterval( delayedShow ); 18864 clearInterval( delayedShow );
18516 } 18865 }
18517 - }, $.fx.interval ); 18866 + }, 13 );
18518 } 18867 }
18519 18868
18520 this._trigger( "open", event, { tooltip: tooltip } ); 18869 this._trigger( "open", event, { tooltip: tooltip } );
@@ -18535,7 +18884,10 @@ $.widget( &quot;ui.tooltip&quot;, { @@ -18535,7 +18884,10 @@ $.widget( &quot;ui.tooltip&quot;, {
18535 // tooltips will handle this in destroy. 18884 // tooltips will handle this in destroy.
18536 if ( target[ 0 ] !== this.element[ 0 ] ) { 18885 if ( target[ 0 ] !== this.element[ 0 ] ) {
18537 events.remove = function() { 18886 events.remove = function() {
18538 - this._removeTooltip( this._find( target ).tooltip ); 18887 + var targetElement = this._find( target );
  18888 + if ( targetElement ) {
  18889 + this._removeTooltip( targetElement.tooltip );
  18890 + }
18539 }; 18891 };
18540 } 18892 }
18541 18893
@@ -18635,6 +18987,10 @@ $.widget( &quot;ui.tooltip&quot;, { @@ -18635,6 +18987,10 @@ $.widget( &quot;ui.tooltip&quot;, {
18635 }, 18987 },
18636 18988
18637 _removeTooltip: function( tooltip ) { 18989 _removeTooltip: function( tooltip ) {
  18990 +
  18991 + // Clear the interval for delayed tracking tooltips
  18992 + clearInterval( this.delayedShow );
  18993 +
18638 tooltip.remove(); 18994 tooltip.remove();
18639 delete this.tooltips[ tooltip.attr( "id" ) ]; 18995 delete this.tooltips[ tooltip.attr( "id" ) ];
18640 }, 18996 },
@@ -18703,4 +19059,4 @@ var widgetsTooltip = $.ui.tooltip; @@ -18703,4 +19059,4 @@ var widgetsTooltip = $.ui.tooltip;
18703 19059
18704 19060
18705 19061
18706 -}));  
18707 \ No newline at end of file 19062 \ No newline at end of file
  19063 +} );
18708 \ No newline at end of file 19064 \ No newline at end of file
Vrh.Web.Reporting/Scripts/jquery-ui-1.13.2.min.js 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +/*! jQuery UI - v1.13.2 - 2022-07-14
  2 +* http://jqueryui.com
  3 +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
  4 +* Copyright jQuery Foundation and other contributors; Licensed MIT */
  5 +
  6 +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.2";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],a.call(s[n],e)&&void 0!==i&&(V.isPlainObject(i)?t[e]=V.isPlainObject(t[e])?V.widget.extend({},t[e],i):V.widget.extend({},i):t[e]=i);return t},V.widget.bridge=function(o,e){var a=e.prototype.widgetFullName||o;V.fn[o]=function(i){var t="string"==typeof i,s=r.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=V.data(this,a);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V.data(this,a);t?(t.option(i||{}),t._init&&t._init()):V.data(this,a,new e(i,this))})),n}},V.Widget=function(){},V.Widget._childConstructors=[],V.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=V(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],a=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=a.classesElementLookup[t[s]]||V(),i=n.add?(function(){var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})}(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+r.eventNamespace,s=s[2];s?a.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}});var s,x,k,o,l,h,c,u,C;V.widget;function D(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function I(t,e){return parseInt(V.css(t,e),10)||0}function T(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,C=V.fn.position,V.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=V("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?V.position.scrollbarWidth():0,height:e?V.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=V(t||window),i=T(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?V(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},V.fn.position=function(u){if(!u||!u.of)return C.apply(this,arguments);var d,p,f,g,m,t,_="string"==typeof(u=V.extend({},u)).of?V(document).find(u.of):V(u.of),v=V.position.getWithinInfo(u.within),b=V.position.getScrollInfo(v),y=(u.collision||"flip").split(" "),w={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:T(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(u.at="left top"),p=e.width,f=e.height,m=V.extend({},g=e.offset),V.each(["my","at"],function(){var t,e,i=(u[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):l.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=l.test(i[1])?i[1]:"center",t=h.exec(i[0]),e=h.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],u[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===y.length&&(y[1]=y[0]),"right"===u.at[0]?m.left+=p:"center"===u.at[0]&&(m.left+=p/2),"bottom"===u.at[1]?m.top+=f:"center"===u.at[1]&&(m.top+=f/2),d=D(w.at,p,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,a=V(this),r=a.outerWidth(),l=a.outerHeight(),e=I(this,"marginLeft"),s=I(this,"marginTop"),n=r+e+I(this,"marginRight")+b.width,o=l+s+I(this,"marginBottom")+b.height,h=V.extend({},m),c=D(w.my,a.outerWidth(),a.outerHeight());"right"===u.my[0]?h.left-=r:"center"===u.my[0]&&(h.left-=r/2),"bottom"===u.my[1]?h.top-=l:"center"===u.my[1]&&(h.top-=l/2),h.left+=c[0],h.top+=c[1],i={marginLeft:e,marginTop:s},V.each(["left","top"],function(t,e){V.ui.position[y[t]]&&V.ui.position[y[t]][e](h,{targetWidth:p,targetHeight:f,elemWidth:r,elemHeight:l,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+c[0],d[1]+c[1]],my:u.my,at:u.at,within:v,elem:a})}),u.using&&(t=function(t){var e=g.left-h.left,i=e+p-r,s=g.top-h.top,n=s+f-l,o={target:{element:_,left:g.left,top:g.top,width:p,height:f},element:{element:a,left:h.left,top:h.top,width:r,height:l},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};p<r&&k(e+i)<p&&(o.horizontal="center"),f<l&&k(s+n)<f&&(o.vertical="middle"),x(k(e),k(i))>x(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0<a&&r<=0?(i=t.left+a+e.collisionWidth-n-s,t.left+=a-i):t.left=!(0<r&&a<=0)&&r<a?s+n-e.collisionWidth:s:0<a?t.left+=a:0<r?t.left-=r:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,a=s-o,r=o+e.collisionHeight-n-s;e.collisionHeight>n?0<a&&r<=0?(i=t.top+a+e.collisionHeight-n-s,t.top+=a-i):t.top=!(0<r&&a<=0)&&r<a?s+n-e.collisionHeight:s:0<a?t.top+=a:0<r?t.top-=r:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,a=t.left-e.collisionPosition.marginLeft,r=a-o,l=a+e.collisionWidth-n-o,h="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,a=-2*e.offset[0];r<0?((s=t.left+h+i+a+e.collisionWidth-n-s)<0||s<k(r))&&(t.left+=h+i+a):0<l&&(0<(o=t.left-e.collisionPosition.marginLeft+h+i+a-o)||k(o)<l)&&(t.left+=h+i+a)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,a=t.top-e.collisionPosition.marginTop,r=a-o,l=a+e.collisionHeight-n-o,h="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,a=-2*e.offset[1];r<0?((s=t.top+h+i+a+e.collisionHeight-n-s)<0||s<k(r))&&(t.top+=h+i+a):0<l&&(0<(o=t.top-e.collisionPosition.marginTop+h+i+a-o)||k(o)<l)&&(t.top+=h+i+a)}},flipfit:{left:function(){V.ui.position.flip.left.apply(this,arguments),V.ui.position.fit.left.apply(this,arguments)},top:function(){V.ui.position.flip.top.apply(this,arguments),V.ui.position.fit.top.apply(this,arguments)}}};V.ui.position,V.extend(V.expr.pseudos,{data:V.expr.createPseudo?V.expr.createPseudo(function(e){return function(t){return!!V.data(t,e)}}):function(t,e,i){return!!V.data(t,i[3])}}),V.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t,d=V,p={},e=p.toString,f=/^([\-+])=\s*(\d+\.?\d*)/,g=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],m=d.Color=function(t,e,i,s){return new d.Color.fn.parse(t,e,i,s)},_={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},v={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=m.support={},y=d("<p>")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1<y.style.backgroundColor.indexOf("rgba"),w(_,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),d.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){p["[object "+e+"]"]=e.toLowerCase()}),(m.fn=d.extend(m.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=d(n).css(t),t=void 0);var o=this,s=P(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse(S(n)||B._default):"array"===s?(w(_.rgba.props,function(t,e){a[e.idx]=M(n[e.idx],e)}),this):"object"===s?(w(_,n instanceof m?function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}:function(t,i){var s=i.cache;w(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=M(n[t],e,!0)}),o[s]&&d.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from&&(o._rgba=i.from(o[s])))}),this):void 0},is:function(t){var n=m(t),o=!0,a=this;return w(_,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],w(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return w(_,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var e=(h=m(t))._space(),i=_[e],t=0===this.alpha()?m("transparent"):this,r=t[i.cache]||i.to(t._rgba),l=r.slice(),h=h[i.cache];return w(i.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=v[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2<e?1:0});return 1===e[3]&&(e.pop(),t="rgb("),t+e.join()+")"},toHslaString:function(){var t="hsla(",e=d.map(this.hsla(),function(t,e){return null==t&&(t=2<e?1:0),t=e&&e<3?Math.round(100*t)+"%":t});return 1===e[3]&&(e.pop(),t="hsl("),t+e.join()+")"},toHexString:function(t){var e=this._rgba.slice(),i=e.pop();return t&&e.push(~~(255*i)),"#"+d.map(e,function(t){return 1===(t=(t||0).toString(16)).length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}})).parse.prototype=m.fn,_.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/255,i=t[1]/255,s=t[2]/255,n=t[3],o=Math.max(e,i,s),a=Math.min(e,i,s),r=o-a,l=o+a,t=.5*l,i=a===o?0:e===o?60*(i-s)/r+360:i===o?60*(s-e)/r+120:60*(e-i)/r+240,l=0==r?0:t<=.5?r/l:r/(2-l);return[Math.round(i)%360,l,t,null==n?1:n]},_.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],t=t[3],i=s<=.5?s*(1+i):s+i-s*i,s=2*s-i;return[Math.round(255*H(s,i,e+1/3)),Math.round(255*H(s,i,e)),Math.round(255*H(s,i,e-1/3)),t]},w(_,function(l,t){var e=t.props,o=t.cache,a=t.to,r=t.from;m.fn[l]=function(t){if(a&&!this[o]&&(this[o]=a(this._rgba)),void 0===t)return this[o].slice();var i=P(t),s="array"===i||"object"===i?t:arguments,n=this[o].slice();return w(e,function(t,e){t=s["object"===i?t:e.idx];null==t&&(t=n[e.idx]),n[e.idx]=M(t,e)}),r?((t=m(r(n)))[o]=n,t):m(n)},w(e,function(a,r){m.fn[a]||(m.fn[a]=function(t){var e,i=P(t),s="alpha"===a?this._hsla?"hsla":"rgba":l,n=this[s](),o=n[r.idx];return"undefined"===i?o:("function"===i&&(i=P(t=t.call(this,o))),null==t&&r.empty?this:("string"===i&&(e=f.exec(t))&&(t=o+parseFloat(e[2])*("+"===e[1]?1:-1)),n[r.idx]=t,this[s](n)))})})}),(m.hook=function(t){t=t.split(" ");w(t,function(t,o){d.cssHooks[o]={set:function(t,e){var i,s,n="";if("transparent"!==e&&("string"!==P(e)||(i=S(e)))){if(e=m(i||e),!b.rgba&&1!==e._rgba[3]){for(s="backgroundColor"===o?t.parentNode:t;(""===n||"transparent"===n)&&s&&s.style;)try{n=d.css(s,"backgroundColor"),s=s.parentNode}catch(t){}e=e.blend(n&&"transparent"!==n?n:"_default")}e=e.toRgbaString()}try{t.style[o]=e}catch(t){}}},d.fx.step[o]=function(t){t.colorInit||(t.start=m(t.elem,o),t.end=m(t.end),t.colorInit=!0),d.cssHooks[o].set(t.elem,t.start.transition(t.end,t.pos))}})})("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),d.cssHooks.borderColor={expand:function(i){var s={};return w(["Top","Right","Bottom","Left"],function(t,e){s["border"+e+"Color"]=i}),s}};var z,A,O,N,E,W,F,L,R,Y,B=d.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"},j="ui-effects-",q="ui-effects-style",K="ui-effects-animated";function U(t){var e,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[e=s[i]]&&(n[e.replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()})]=s[e]);else for(e in s)"string"==typeof s[e]&&(n[e]=s[e]);return n}function X(t,e,i,s){return t={effect:t=V.isPlainObject(t)?(e=t).effect:t},"function"==typeof(e=null==e?{}:e)&&(s=e,i=null,e={}),"number"!=typeof e&&!V.fx.speeds[e]||(s=i,i=e,e={}),"function"==typeof i&&(s=i,i=null),e&&V.extend(t,e),i=i||e.duration,t.duration=V.fx.off?0:"number"==typeof i?i:i in V.fx.speeds?V.fx.speeds[i]:V.fx.speeds._default,t.complete=s||e.complete,t}function $(t){return!t||"number"==typeof t||V.fx.speeds[t]||("string"==typeof t&&!V.effects.effect[t]||("function"==typeof t||"object"==typeof t&&!t.effect))}function G(t,e){var i=e.outerWidth(),e=e.outerHeight(),t=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(t)||["",0,i,e,0];return{top:parseFloat(t[1])||0,right:"auto"===t[2]?i:parseFloat(t[2]),bottom:"auto"===t[3]?e:parseFloat(t[3]),left:parseFloat(t[4])||0}}V.effects={effect:{}},N=["add","remove","toggle"],E={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1},V.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,e){V.fx.step[e]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(d.style(t.elem,e,t.end),t.setAttr=!0)}}),V.fn.addBack||(V.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),V.effects.animateClass=function(n,t,e,i){var o=V.speed(t,e,i);return this.queue(function(){var i=V(this),t=i.attr("class")||"",e=(e=o.children?i.find("*").addBack():i).map(function(){return{el:V(this),start:U(this)}}),s=function(){V.each(N,function(t,e){n[e]&&i[e+"Class"](n[e])})};s(),e=e.map(function(){return this.end=U(this.el[0]),this.diff=function(t,e){var i,s,n={};for(i in e)s=e[i],t[i]!==s&&(E[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s));return n}(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(O=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):O.apply(this,arguments)}),removeClass:(A=V.fn.removeClass,function(t,e,i,s){return 1<arguments.length?V.effects.animateClass.call(this,{remove:t},e,i,s):A.apply(this,arguments)}),toggleClass:(z=V.fn.toggleClass,function(t,e,i,s,n){return"boolean"==typeof e||void 0===e?i?V.effects.animateClass.call(this,e?{add:t}:{remove:t},i,s,n):z.apply(this,arguments):V.effects.animateClass.call(this,{toggle:t},e,i,s)}),switchClass:function(t,e,i,s,n){return V.effects.animateClass.call(this,{add:e,remove:t},i,s,n)}}),V.expr&&V.expr.pseudos&&V.expr.pseudos.animated&&(V.expr.pseudos.animated=(W=V.expr.pseudos.animated,function(t){return!!V(t).data(K)||W(t)})),!1!==V.uiBackCompat&&V.extend(V.effects,{save:function(t,e){for(var i=0,s=e.length;i<s;i++)null!==e[i]&&t.data(j+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;s<n;s++)null!==e[s]&&(i=t.data(j+e[s]),t.css(e[s],i))},setMode:function(t,e){return e="toggle"===e?t.is(":hidden")?"show":"hide":e},createWrapper:function(i){if(i.parent().is(".ui-effects-wrapper"))return i.parent();var s={width:i.outerWidth(!0),height:i.outerHeight(!0),float:i.css("float")},t=V("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.2",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1<e&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(q,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(q)||"",t.removeData(q)},mode:function(t,e){t=t.is(":hidden");return"toggle"===e&&(e=t?"show":"hide"),e=(t?"hide"===e:"show"===e)?"none":e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(t){var e,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",e=V("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0<i[0]&&(o[e]=i[0]*n+i[1])}),o}}),V.fn.extend({effect:function(){function t(t){var e=V(this),i=V.effects.mode(e,r)||o;e.data(K,!0),l.push(i),o&&("show"===i||i===o&&"hide"===i)&&e.show(),o&&"none"===i||V.effects.saveStyle(e),"function"==typeof t&&t()}var s=X.apply(this,arguments),n=V.effects.effect[s.effect],o=n.mode,e=s.queue,i=e||"fx",a=s.complete,r=s.mode,l=[];return V.fx.off||!n?r?this[r](s.duration,a):this.each(function(){a&&a.call(this)}):!1===e?this.each(t).each(h):this.queue(i,t).queue(i,h);function h(t){var e=V(this);function i(){"function"==typeof a&&a.call(e[0]),"function"==typeof t&&t()}s.mode=l.shift(),!1===V.uiBackCompat||o?"none"===s.mode?(e[r](),i()):n.call(e[0],s,function(){e.removeData(K),V.effects.cleanUp(e),"hide"===s.mode&&e.hide(),i()}):(e.is(":hidden")?"hide"===r:"show"===r)?(e[r](),i()):n.call(e[0],s,i)}},show:(R=V.fn.show,function(t){if($(t))return R.apply(this,arguments);t=X.apply(this,arguments);return t.mode="show",this.effect.call(this,t)}),hide:(L=V.fn.hide,function(t){if($(t))return L.apply(this,arguments);t=X.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)}),toggle:(F=V.fn.toggle,function(t){if($(t)||"boolean"==typeof t)return F.apply(this,arguments);t=X.apply(this,arguments);return t.mode="toggle",this.effect.call(this,t)}),cssUnit:function(t){var i=this.css(t),s=[];return V.each(["em","px","%","pt"],function(t,e){0<i.indexOf(e)&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):G(this.css("clip"),this)},transfer:function(t,e){var i=V(this),s=V(t.to),n="fixed"===s.css("position"),o=V("body"),a=n?o.scrollTop():0,r=n?o.scrollLeft():0,o=s.offset(),o={top:o.top-a,left:o.left-r,height:s.innerHeight(),width:s.innerWidth()},s=i.offset(),l=V("<div class='ui-effects-transfer'></div>");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g<c;g++)(i={})[p]=(f?"-=":"+=")+h,n.animate(i,u,d).animate(s,u,d),h=a?2*h:h/2;a&&((i={opacity:0})[p]=(f?"-=":"+=")+h,n.animate(i,u,d)),n.queue(e),V.effects.unshift(n,t,1+o)}),V.effects.define("clip","hide",function(t,e){var i={},s=V(this),n=t.direction||"vertical",o="both"===n,a=o||"horizontal"===n,o=o||"vertical"===n,n=s.cssClip();i.clip={top:o?(n.bottom-n.top)/2:n.top,right:a?(n.right-n.left)/2:n.right,bottom:o?(n.bottom-n.top)/2:n.bottom,left:a?(n.right-n.left)/2:n.left},V.effects.createPlaceholder(s),"show"===t.mode&&(s.cssClip(i.clip),i.clip=n),s.animate(i,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("drop","hide",function(t,e){var i=V(this),s="show"===t.mode,n=t.direction||"left",o="up"===n||"down"===n?"top":"left",a="up"===n||"left"===n?"-=":"+=",r="+="==a?"-=":"+=",l={opacity:0};V.effects.createPlaceholder(i),n=t.distance||i["top"==o?"outerHeight":"outerWidth"](!0)/2,l[o]=a+n,s&&(i.css(l),l[o]=r+n,l.opacity=1),i.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("explode","hide",function(t,e){var i,s,n,o,a,r,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,h=l,c=V(this),u="show"===t.mode,d=c.show().css("visibility","hidden").offset(),p=Math.ceil(c.outerWidth()/h),f=Math.ceil(c.outerHeight()/l),g=[];function m(){g.push(this),g.length===l*h&&(c.css({visibility:"visible"}),V(g).remove(),e())}for(i=0;i<l;i++)for(o=d.top+i*f,r=i-(l-1)/2,s=0;s<h;s++)n=d.left+s*p,a=s-(h-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l<o;l++)i.animate({opacity:r},a,t.easing),r=1-r;i.animate({opacity:r},a,t.easing),i.queue(e),V.effects.unshift(i,s,1+o)}),V.effects.define("shake",function(t,e){var i=1,s=V(this),n=t.direction||"left",o=t.distance||20,a=t.times||3,r=2*a+1,l=Math.round(t.duration/r),h="up"===n||"down"===n?"top":"left",c="up"===n||"left"===n,u={},d={},p={},n=s.queue().length;for(V.effects.createPlaceholder(s),u[h]=(c?"-=":"+=")+o,d[h]=(c?"+=":"-=")+2*o,p[h]=(c?"-=":"+=")+2*o,s.animate(u,l,t.easing);i<a;i++)s.animate(d,l,t.easing).animate(p,l,t.easing);s.animate(d,l,t.easing).animate(u,l/2,t.easing).queue(e),V.effects.unshift(s,n,1+r)}),V.effects.define("slide","show",function(t,e){var i,s,n=V(this),o={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},a=t.mode,r=t.direction||"left",l="up"===r||"down"===r?"top":"left",h="up"===r||"left"===r,c=t.distance||n["top"==l?"outerHeight":"outerWidth"](!0),u={};V.effects.createPlaceholder(n),i=n.cssClip(),s=n.position()[l],u[l]=(h?-1:1)*c+s,u.clip=n.cssClip(),u.clip[o[r][1]]=u.clip[o[r][0]],"show"===a&&(n.cssClip(u.clip),n.css(l,u[l]),u.clip=i,u[l]=s),n.animate(u,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),y=!1!==V.uiBackCompat?V.effects.define("transfer",function(t,e){V(this).transfer(t,e)}):y;V.ui.focusable=function(t,e){var i,s,n,o,a=t.nodeName.toLowerCase();return"area"===a?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=V("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(a)?(n=!t.disabled)&&(o=V(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===a&&t.href||e,n&&V(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(V(t)))},V.extend(V.expr.pseudos,{focusable:function(t){return V.ui.focusable(t,null!=V.attr(t,"tabindex"))}});var Q,J;V.ui.focusable,V.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):V(this[0].form)},V.ui.formResetMixin={_formResetHandler:function(){var e=V(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");V.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(V.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};V.expr.pseudos||(V.expr.pseudos=V.expr[":"]),V.uniqueSort||(V.uniqueSort=V.unique),V.escapeSelector||(Q=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,J=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},V.escapeSelector=function(t){return(t+"").replace(Q,J)}),V.fn.even&&V.fn.odd||V.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});var Z;V.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},V.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+V.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},V.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=V(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:V(this[0].ownerDocument||document)},V.extend(V.expr.pseudos,{tabbable:function(t){var e=V.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&V.ui.focusable(t,i)}}),V.fn.extend({uniqueId:(Z=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++Z)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&V(this).removeAttr("id")})}}),V.widget("ui.accordion",{version:"1.13.2",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()<i.index()),c=this.options.animate||{},u=h&&c.down||c,h=function(){a._toggleComplete(e)};return n=(n="string"==typeof u?u:n)||u.easing||c.easing,o=(o="number"==typeof u?u:o)||u.duration||c.duration,i.length?t.length?(s=t.show().outerHeight(),i.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:n,complete:h,step:function(t,e){e.now=Math.round(t),"height"!==e.prop?"content-box"===l&&(r+=e.now):"content"!==a.options.heightStyle&&(e.now=Math.round(s-i.outerHeight()-r),r=0)}})):i.animate(this.hideProps,o,n,h):t.animate(this.showProps,o,n,h)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),V.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},V.widget("ui.menu",{version:"1.13.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=V.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:V(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!V(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=V(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===V.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=V(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||V(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(V(this).children(".ui-menu-item-wrapper").text()))})}});V.widget("ui.autocomplete",{version:"1.13.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:V.map(t,function(t){return"string"==typeof t?{label:t,value:t}:V.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(V.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;V.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return V("<li>").append(V("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("<div>").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.2",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.2",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("<div></div>").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V("<span>"),this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.2",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===V.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,e){var i="iconPosition"!==t,s=i?this.options.iconPosition:e,t="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=V("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,e),this._attachIcon(s),t?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=V("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==V.uiBackCompat&&(V.widget("ui.button",V.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),V.fn.button=(et=V.fn.button,function(i){var t="string"==typeof i,s=Array.prototype.slice.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t=V(this).attr("type"),e=V.data(this,"ui-"+("checkbox"!==t&&"radio"!==t?"button":"checkboxradio"));return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?V.error("no such method '"+i+"' for button widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:V.error("cannot call methods on button prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=V.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=V(this).attr("type"),e="checkbox"!==t&&"radio"!==t?"button":"checkboxradio",t=V.data(this,"ui-"+e);t?(t.option(i||{}),t._init&&t._init()):"button"!=e?V(this).checkboxradio(V.extend({icon:!1},i)):et.call(V(this),i)})),n}),V.fn.buttonset=function(){return V.ui.controlgroup||V.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))});var it;V.ui.button;function st(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=nt(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function nt(t){var e="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",e,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",e,ot)}function ot(){V.datepicker._isDisabledDatepicker((it.inline?it.dpDiv.parent():it.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function at(t,e){for(var i in V.extend(t,e),e)null==e[i]&&(t[i]=e[i]);return t}V.extend(V.ui,{datepicker:{version:"1.13.2"}}),V.extend(st.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return at(this._defaults,t||{}),this},_attachDatepicker:function(t,e){var i,s=t.nodeName.toLowerCase(),n="div"===s||"span"===s;t.id||(this.uuid+=1,t.id="dp"+this.uuid),(i=this._newInst(V(t),n)).settings=V.extend({},e||{}),"input"===s?this._connectDatepicker(t,i):n&&this._inlineDatepicker(t,i)},_newInst:function(t,e){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:e,dpDiv:e?nt(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,e){var i=V(t);e.append=V([]),e.trigger=V([]),i.hasClass(this.markerClassName)||(this._attachments(i,e),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(e),V.data(t,"datepicker",e),e.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,e){var i,s=this._get(e,"appendText"),n=this._get(e,"isRTL");e.append&&e.append.remove(),s&&(e.append=V("<span>").addClass(this._appendClass).text(s),t[n?"before":"after"](e.append)),t.off("focus",this._showDatepicker),e.trigger&&e.trigger.remove(),"focus"!==(i=this._get(e,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(e,"buttonText"),i=this._get(e,"buttonImage"),this._get(e,"buttonImageOnly")?e.trigger=V("<img>").addClass(this._triggerClass).attr({src:i,alt:s,title:s}):(e.trigger=V("<button type='button'>").addClass(this._triggerClass),i?e.trigger.html(V("<img>").attr({src:i,alt:s,title:s})):e.trigger.text(s)),t[n?"before":"after"](e.trigger),e.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===t[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==t[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){var e,i,s,n,o,a;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(a=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(n=s=i=0;n<t.length;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(t,e){var i=V(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),V.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a=this._dialogInst;return a||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",a)),at(a.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(a,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(o=document.documentElement.clientWidth,s=document.documentElement.clientHeight,e=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+e,s/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(t){var e,i=V(t),s=V.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),V.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),it===s&&(it=null,this._curInst=null))},_enableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i=V(e),s=V.data(e,"datepicker");i.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=i.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(t){try{return V.data(t,"datepicker")}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,e,i){var s,n,o=this._getInst(t);if(2===arguments.length&&"string"==typeof e)return"defaults"===e?V.extend({},V.datepicker._defaults):o?"all"===e?V.extend({},o.settings):this._get(o,e):null;s=e||{},"string"==typeof e&&((s={})[e]=i),o&&(this._curInst===o&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),e=this._getMinMaxDate(o,"min"),i=this._getMinMaxDate(o,"max"),at(o.settings,s),null!==e&&void 0!==s.dateFormat&&void 0===s.minDate&&(o.settings.minDate=this._formatDate(o,e)),null!==i&&void 0!==s.dateFormat&&void 0===s.maxDate&&(o.settings.maxDate=this._formatDate(o,i)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(V(t),o),this._autoSize(o),this._setDate(o,n),this._updateAlternate(o),this._updateDatepicker(o))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){t=this._getInst(t);t&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){t=this._getInst(t);t&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){t=this._getInst(t);return t&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(t){var e,i,s=V.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,V.datepicker._datepickerShowing)switch(t.keyCode){case 9:V.datepicker._hideDatepicker(),n=!1;break;case 13:return(i=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",s.dpDiv))[0]&&V.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),(e=V.datepicker._get(s,"onSelect"))?(i=V.datepicker._formatDate(s),e.apply(s.input?s.input[0]:null,[i,s])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&V.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&V.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?-V.datepicker._get(s,"stepBigMonths"):-V.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&V.datepicker._adjustDate(t.target,t.ctrlKey?+V.datepicker._get(s,"stepBigMonths"):+V.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&V.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?V.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var e,i=V.datepicker._getInst(t.target);if(V.datepicker._get(i,"constrainInput"))return e=V.datepicker._possibleChars(V.datepicker._get(i,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!e||-1<e.indexOf(i)},_doKeyUp:function(t){t=V.datepicker._getInst(t.target);if(t.input.val()!==t.lastVal)try{V.datepicker.parseDate(V.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,V.datepicker._getFormatConfig(t))&&(V.datepicker._setDateFromField(t),V.datepicker._updateAlternate(t),V.datepicker._updateDatepicker(t))}catch(t){}return!0},_showDatepicker:function(t){var e,i,s,n;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=V("input",t.parentNode)[0]),V.datepicker._isDisabledDatepicker(t)||V.datepicker._lastInput===t||(n=V.datepicker._getInst(t),V.datepicker._curInst&&V.datepicker._curInst!==n&&(V.datepicker._curInst.dpDiv.stop(!0,!0),n&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0])),!1!==(i=(s=V.datepicker._get(n,"beforeShow"))?s.apply(t,[t,n]):{})&&(at(n.settings,i),n.lastVal=null,V.datepicker._lastInput=t,V.datepicker._setDateFromField(n),V.datepicker._inDialog&&(t.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(t),V.datepicker._pos[1]+=t.offsetHeight),e=!1,V(t).parents().each(function(){return!(e|="fixed"===V(this).css("position"))}),s={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(n),s=V.datepicker._checkOffset(n,s,e),n.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":e?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),n.inline||(i=V.datepicker._get(n,"showAnim"),s=V.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(V(t))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[i]?n.dpDiv.show(i,V.datepicker._get(n,"showOptions"),s):n.dpDiv[i||"show"](i?s:null),V.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),V.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,(it=t).dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var e,i=this._getNumberOfMonths(t),s=i[1],n=t.dpDiv.find("."+this._dayOverClass+" a"),o=V.datepicker._get(t,"onUpdateDatepicker");0<n.length&&ot.apply(n.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(e=t.yearshtml,setTimeout(function(){e===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year").first().replaceWith(t.yearshtml),e=t.yearshtml=null},0)),o&&o.apply(t.input?t.input[0]:null,[t])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(t,e,i){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,a=t.input?t.input.outerHeight():0,r=document.documentElement.clientWidth+(i?0:V(document).scrollLeft()),l=document.documentElement.clientHeight+(i?0:V(document).scrollTop());return e.left-=this._get(t,"isRTL")?s-o:0,e.left-=i&&e.left===t.input.offset().left?V(document).scrollLeft():0,e.top-=i&&e.top===t.input.offset().top+a?V(document).scrollTop():0,e.left-=Math.min(e.left,e.left+s>r&&s<r?Math.abs(e.left+s-r):0),e.top-=Math.min(e.top,e.top+n>l&&n<l?Math.abs(n+a):0),e},_findPos:function(t){for(var e=this._getInst(t),i=this._get(e,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||V.expr.pseudos.hidden(t));)t=t[i?"previousSibling":"nextSibling"];return[(e=V(t).offset()).left,e.top]},_hideDatepicker:function(t){var e,i,s=this._curInst;!s||t&&s!==V.data(t,"datepicker")||this._datepickerShowing&&(e=this._get(s,"showAnim"),i=this._get(s,"duration"),t=function(){V.datepicker._tidyDialog(s)},V.effects&&(V.effects.effect[e]||V.effects[e])?s.dpDiv.hide(e,V.datepicker._get(s,"showOptions"),i,t):s.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?i:null,t),e||t(),this._datepickerShowing=!1,(t=this._get(s,"onClose"))&&t.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI&&(V.unblockUI(),V("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){var e;V.datepicker._curInst&&(e=V(t.target),t=V.datepicker._getInst(e[0]),(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)&&(!e.hasClass(V.datepicker.markerClassName)||V.datepicker._curInst===t)||V.datepicker._hideDatepicker())},_adjustDate:function(t,e,i){var s=V(t),t=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(t,e,i),this._updateDatepicker(t))},_gotoToday:function(t){var e=V(t),i=this._getInst(e[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(t=new Date,i.selectedDay=t.getDate(),i.drawMonth=i.selectedMonth=t.getMonth(),i.drawYear=i.selectedYear=t.getFullYear()),this._notifyChange(i),this._adjustDate(e)},_selectMonthYear:function(t,e,i){var s=V(t),t=this._getInst(s[0]);t["selected"+("M"===i?"Month":"Year")]=t["draw"+("M"===i?"Month":"Year")]=parseInt(e.options[e.selectedIndex].value,10),this._notifyChange(t),this._adjustDate(s)},_selectDay:function(t,e,i,s){var n=V(t);V(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=parseInt(V("a",s).attr("data-date")),n.selectedMonth=n.currentMonth=e,n.selectedYear=n.currentYear=i,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){t=V(t);this._selectDate(t,"")},_selectDate:function(t,e){var i=V(t),t=this._getInst(i[0]);e=null!=e?e:this._formatDate(t),t.input&&t.input.val(e),this._updateAlternate(t),(i=this._get(t,"onSelect"))?i.apply(t.input?t.input[0]:null,[e,t]):t.input&&t.input.trigger("change"),t.inline?this._updateDatepicker(t):(this._hideDatepicker(),this._lastInput=t.input[0],"object"!=typeof t.input[0]&&t.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var e,i,s=this._get(t,"altField");s&&(e=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),t=this.formatDate(e,i,this._getFormatConfig(t)),V(document).find(s).val(t))},noWeekends:function(t){t=t.getDay();return[0<t&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,n,t){if(null==e||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;for(var i,s,o,a=0,r=(t?t.shortYearCutoff:null)||this._defaults.shortYearCutoff,r="string"!=typeof r?r:(new Date).getFullYear()%100+parseInt(r,10),l=(t?t.dayNamesShort:null)||this._defaults.dayNamesShort,h=(t?t.dayNames:null)||this._defaults.dayNames,c=(t?t.monthNamesShort:null)||this._defaults.monthNamesShort,u=(t?t.monthNames:null)||this._defaults.monthNames,d=-1,p=-1,f=-1,g=-1,m=!1,_=function(t){t=w+1<e.length&&e.charAt(w+1)===t;return t&&w++,t},v=function(t){var e=_(t),e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}"),e=n.substring(a).match(e);if(!e)throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(t,e,i){var s=-1,e=V.map(_(t)?i:e,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(V.each(e,function(t,e){var i=e[1];if(n.substr(a,i.length).toLowerCase()===i.toLowerCase())return s=e[0],a+=i.length,!1}),-1!==s)return s+1;throw"Unknown name at position "+a},y=function(){if(n.charAt(a)!==e.charAt(w))throw"Unexpected literal at position "+a;a++},w=0;w<e.length;w++)if(m)"'"!==e.charAt(w)||_("'")?y():m=!1;else switch(e.charAt(w)){case"d":f=v("d");break;case"D":b("D",l,h);break;case"o":g=v("o");break;case"m":p=v("m");break;case"M":p=b("M",c,u);break;case"y":d=v("y");break;case"@":d=(o=new Date(v("@"))).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"!":d=(o=new Date((v("!")-this._ticksTo1970)/1e4)).getFullYear(),p=o.getMonth()+1,f=o.getDate();break;case"'":_("'")?y():m=!0;break;default:y()}if(a<n.length&&(s=n.substr(a),!/^\s+/.test(s)))throw"Extra/unparsed characters found in date: "+s;if(-1===d?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=r?0:-100)),-1<g)for(p=1,f=g;;){if(f<=(i=this._getDaysInMonth(d,p-1)))break;p++,f-=i}if((o=this._daylightSavingAdjust(new Date(d,p-1,f))).getFullYear()!==d||o.getMonth()+1!==p||o.getDate()!==f)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,i){if(!t)return"";function s(t,e,i){var s=""+e;if(c(t))for(;s.length<i;)s="0"+s;return s}function n(t,e,i,s){return(c(t)?s:i)[e]}var o,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,r=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,h=(i?i.monthNames:null)||this._defaults.monthNames,c=function(t){t=o+1<e.length&&e.charAt(o+1)===t;return t&&o++,t},u="",d=!1;if(t)for(o=0;o<e.length;o++)if(d)"'"!==e.charAt(o)||c("'")?u+=e.charAt(o):d=!1;else switch(e.charAt(o)){case"d":u+=s("d",t.getDate(),2);break;case"D":u+=n("D",t.getDay(),a,r);break;case"o":u+=s("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=s("m",t.getMonth()+1,2);break;case"M":u+=n("M",t.getMonth(),l,h);break;case"y":u+=c("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":c("'")?u+="'":d=!0;break;default:u+=e.charAt(o)}return u},_possibleChars:function(e){for(var t="",i=!1,s=function(t){t=n+1<e.length&&e.charAt(n+1)===t;return t&&n++,t},n=0;n<e.length;n++)if(i)"'"!==e.charAt(n)||s("'")?t+=e.charAt(n):i=!1;else switch(e.charAt(n)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":s("'")?t+="'":i=!0;break;default:t+=e.charAt(n)}return t},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(t){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(r,t,e){var i,s,t=null==t||""===t?e:"string"==typeof t?function(t){try{return V.datepicker.parseDate(V.datepicker._get(r,"dateFormat"),t,V.datepicker._getFormatConfig(r))}catch(t){}for(var e=(t.toLowerCase().match(/^c/)?V.datepicker._getDate(r):null)||new Date,i=e.getFullYear(),s=e.getMonth(),n=e.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=o.exec(t);a;){switch(a[2]||"d"){case"d":case"D":n+=parseInt(a[1],10);break;case"w":case"W":n+=7*parseInt(a[1],10);break;case"m":case"M":s+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),n=Math.min(n,V.datepicker._getDaysInMonth(i,s))}a=o.exec(t)}return new Date(i,s,n)}(t):"number"==typeof t?isNaN(t)?e:(i=t,(s=new Date).setDate(s.getDate()+i),s):new Date(t.getTime());return(t=t&&"Invalid Date"===t.toString()?e:t)&&(t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0)),this._daylightSavingAdjust(t)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(t){var e=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){V.datepicker._adjustDate(i,-e,"M")},next:function(){V.datepicker._adjustDate(i,+e,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(i)},selectDay:function(){return V.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(i,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,l,h,c,u,d,p,f,g,m,_,v,b,y,w,x,k,C,D,I,T,P,M,S,H,z,A=new Date,O=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth(),A.getDate())),N=this._get(t,"isRTL"),E=this._get(t,"showButtonPanel"),W=this._get(t,"hideIfNoPrevNext"),F=this._get(t,"navigationAsDateFormat"),L=this._getNumberOfMonths(t),R=this._get(t,"showCurrentAtPos"),A=this._get(t,"stepMonths"),Y=1!==L[0]||1!==L[1],B=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),j=this._getMinMaxDate(t,"min"),q=this._getMinMaxDate(t,"max"),K=t.drawMonth-R,U=t.drawYear;if(K<0&&(K+=12,U--),q)for(e=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth()-L[0]*L[1]+1,q.getDate())),e=j&&e<j?j:e;this._daylightSavingAdjust(new Date(U,K,1))>e;)--K<0&&(K=11,U--);for(t.drawMonth=K,t.drawYear=U,R=this._get(t,"prevText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K-A,1)),this._getFormatConfig(t)):R,i=this._canAdjustMonth(t,-1,U,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"e":"w")).text(R))[0].outerHTML,R=this._get(t,"nextText"),R=F?this.formatDate(R,this._daylightSavingAdjust(new Date(U,K+A,1)),this._getFormatConfig(t)):R,s=this._canAdjustMonth(t,1,U,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:R}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML:W?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:R}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(N?"w":"e")).text(R))[0].outerHTML,A=this._get(t,"currentText"),W=this._get(t,"gotoCurrent")&&t.currentDay?B:O,A=F?this.formatDate(A,W,this._getFormatConfig(t)):A,R="",t.inline||(R=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(t,"closeText"))[0].outerHTML),F="",E&&(F=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(N?R:"").append(this._isInRange(t,W)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(A):"").append(N?"":R)[0].outerHTML),n=parseInt(this._get(t,"firstDay"),10),n=isNaN(n)?0:n,o=this._get(t,"showWeek"),a=this._get(t,"dayNames"),r=this._get(t,"dayNamesMin"),l=this._get(t,"monthNames"),h=this._get(t,"monthNamesShort"),c=this._get(t,"beforeShowDay"),u=this._get(t,"showOtherMonths"),d=this._get(t,"selectOtherMonths"),p=this._getDefaultDate(t),f="",m=0;m<L[0];m++){for(_="",this.maxRows=4,v=0;v<L[1];v++){if(b=this._daylightSavingAdjust(new Date(U,K,t.selectedDay)),y=" ui-corner-all",w="",Y){if(w+="<div class='ui-datepicker-group",1<L[1])switch(v){case 0:w+=" ui-datepicker-group-first",y=" ui-corner-"+(N?"right":"left");break;case L[1]-1:w+=" ui-datepicker-group-last",y=" ui-corner-"+(N?"left":"right");break;default:w+=" ui-datepicker-group-middle",y=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+y+"'>"+(/all|left/.test(y)&&0===m?N?s:i:"")+(/all|right/.test(y)&&0===m?N?i:s:"")+this._generateMonthYearHeader(t,K,U,j,q,0<m||0<v,l,h)+"</div><table class='ui-datepicker-calendar'><thead><tr>",x=o?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",g=0;g<7;g++)x+="<th scope='col'"+(5<=(g+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[k=(g+n)%7]+"'>"+r[k]+"</span></th>";for(w+=x+"</tr></thead><tbody>",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P<I;P++){for(w+="<tr>",M=o?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(T)+"</td>":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T<j||q&&q<T,M+="<td class='"+(5<=(g+n+6)%7?" ui-datepicker-week-end":"")+(H?" ui-datepicker-other-month":"")+(T.getTime()===b.getTime()&&K===t.selectedMonth&&t._keyEvent||p.getTime()===T.getTime()&&p.getTime()===b.getTime()?" "+this._dayOverClass:"")+(z?" "+this._unselectableClass+" ui-state-disabled":"")+(H&&!u?"":" "+S[1]+(T.getTime()===B.getTime()?" "+this._currentClass:"")+(T.getTime()===O.getTime()?" ui-datepicker-today":""))+"'"+(H&&!u||!S[2]?"":" title='"+S[2].replace(/'/g,"&#39;")+"'")+(z?"":" data-handler='selectDay' data-event='click' data-month='"+T.getMonth()+"' data-year='"+T.getFullYear()+"'")+">"+(H&&!u?"&#xa0;":z?"<span class='ui-state-default'>"+T.getDate()+"</span>":"<a class='ui-state-default"+(T.getTime()===O.getTime()?" ui-state-highlight":"")+(T.getTime()===B.getTime()?" ui-state-active":"")+(H?" ui-priority-secondary":"")+"' href='#' aria-current='"+(T.getTime()===B.getTime()?"true":"false")+"' data-date='"+T.getDate()+"'>"+T.getDate()+"</a>")+"</td>",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+"</tr>"}11<++K&&(K=0,U++),_+=w+="</tbody></table>"+(Y?"</div>"+(0<L[0]&&v===L[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="<div class='ui-datepicker-title'>",y="";if(o||!f)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' aria-label='"+_+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=s.getMonth())&&(!h||c<=n.getMonth())&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(m||(b+=y+(!o&&f&&g?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!g)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+v+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e<i?i:e;return t&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){t=this._get(t,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),n=this._daylightSavingAdjust(new Date(i,s+(e<0?e:n[0]*n[1]),1));return e<0&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(t,n)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=null,o=null,a=this._get(t,"yearRange");return a&&(t=a.split(":"),a=(new Date).getFullYear(),n=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(n+=a),t[1].match(/[+\-].*/)&&(o+=a)),(!i||e.getTime()>=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.2";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},V.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&V(t).trigger("blur")};V.widget("ui.draggable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var e=this.options;return!(this.helper||e.disabled||0<V(t.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(t),!!this.handle&&(this._blurActiveElement(t),this._blockFrames(!0===e.iframeFix?"iframe":e.iframeFix),!0))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=V(this);return V("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===V(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),V.ui.ddmanager&&!e.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),V.ui.ddmanager&&V.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(t,e){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!e){e=this._uiHash();if(!1===this._trigger("drag",t,e))return this._mouseUp(new V.Event("mouseup",t)),!1;this.position=e.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var e=this,i=!1;return V.ui.ddmanager&&!this.options.dropBehaviour&&(i=V.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,i)?V(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==e._trigger("stop",t)&&e._clear()}):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),V.ui.ddmanager&&V.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),V.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new V.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!V(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var e=this.options,i="function"==typeof e.helper,t=i?V(e.helper.apply(this.element[0],[t])):"clone"===e.helper?this.element.clone().removeAttr("id"):this.element;return t.parents("body").length||t.appendTo("parent"===e.appendTo?this.element[0].parentNode:e.appendTo),i&&t[0]===this.element[0]&&this._setPositionRelative(),t[0]===this.element[0]||/(fixed|absolute)/.test(t.css("position"))||t.css("position","absolute"),t},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),e=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==e&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i,s=this.options,n=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(e=V(s.containment))[0])&&(t=/(scroll|auto)/.test(e.css("overflow")),this.containment=[(parseInt(e.css("borderLeftWidth"),10)||0)+(parseInt(e.css("paddingLeft"),10)||0),(parseInt(e.css("borderTopWidth"),10)||0)+(parseInt(e.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e.css("borderRightWidth"),10)||0)-(parseInt(e.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e.css("borderBottomWidth"),10)||0)-(parseInt(e.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=e)):this.containment=s.containment:this.containment=[0,0,V(n).width()-this.helperProportions.width-this.margins.left,(V(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[V(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,V(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,V(window).scrollLeft()+V(window).width()-this.helperProportions.width-this.margins.left,V(window).scrollTop()+(V(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s=this.options,n=this._isRootNode(this.scrollParent[0]),o=t.pageX,a=t.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(a=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY<s.scrollSensitivity?o.scrollTop=n=o.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+o.offsetWidth-t.pageX<s.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-V(a).scrollTop()<s.scrollSensitivity?n=V(a).scrollTop(V(a).scrollTop()-s.scrollSpeed):V(window).height()-(t.pageY-V(a).scrollTop())<s.scrollSensitivity&&(n=V(a).scrollTop(V(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-V(a).scrollLeft()<s.scrollSensitivity?n=V(a).scrollLeft(V(a).scrollLeft()-s.scrollSpeed):V(window).width()-(t.pageX-V(a).scrollLeft())<s.scrollSensitivity&&(n=V(a).scrollLeft(V(a).scrollLeft()+s.scrollSpeed)))),!1!==n&&V.ui.ddmanager&&!s.dropBehaviour&&V.ui.ddmanager.prepareOffsets(i,t)}}),V.ui.plugin.add("draggable","snap",{start:function(t,e,i){var s=i.options;i.snapElements=[],V(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var t=V(this),e=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:e.top,left:e.left})})},drag:function(t,e,i){for(var s,n,o,a,r,l,h,c,u,d=i.options,p=d.snapTolerance,f=e.offset.left,g=f+i.helperProportions.width,m=e.offset.top,_=m+i.helperProportions.height,v=i.snapElements.length-1;0<=v;v--)l=(r=i.snapElements[v].left-i.margins.left)+i.snapElements[v].width,c=(h=i.snapElements[v].top-i.margins.top)+i.snapElements[v].height,g<r-p||l+p<f||_<h-p||c+p<m||!V.contains(i.snapElements[v].item.ownerDocument,i.snapElements[v].item)?(i.snapElements[v].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=!1):("inner"!==d.snapMode&&(s=Math.abs(h-_)<=p,n=Math.abs(c-m)<=p,o=Math.abs(r-g)<=p,a=Math.abs(l-f)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r-i.helperProportions.width}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l}).left)),u=s||n||o||a,"outer"!==d.snapMode&&(s=Math.abs(h-m)<=p,n=Math.abs(c-_)<=p,o=Math.abs(r-f)<=p,a=Math.abs(l-g)<=p,s&&(e.position.top=i._convertPositionTo("relative",{top:h,left:0}).top),n&&(e.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),o&&(e.position.left=i._convertPositionTo("relative",{top:0,left:r}).left),a&&(e.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left)),!i.snapElements[v].snapping&&(s||n||o||a||u)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,V.extend(i._uiHash(),{snapItem:i.snapElements[v].item})),i.snapElements[v].snapping=s||n||o||a||u)}}),V.ui.plugin.add("draggable","stack",{start:function(t,e,i){var s,i=i.options,i=V.makeArray(V(i.stack)).sort(function(t,e){return(parseInt(V(t).css("zIndex"),10)||0)-(parseInt(V(e).css("zIndex"),10)||0)});i.length&&(s=parseInt(V(i[0]).css("zIndex"),10)||0,V(i).each(function(t){V(this).css("zIndex",s+t)}),this.css("zIndex",s+i.length))}}),V.ui.plugin.add("draggable","zIndex",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("zIndex")&&(i._zIndex=e.css("zIndex")),e.css("zIndex",i.zIndex)},stop:function(t,e,i){i=i.options;i._zIndex&&V(e.helper).css("zIndex",i._zIndex)}});V.ui.draggable;V.widget("ui.resizable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===V(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),V.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(V("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=V("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||V("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<p,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<p-h?(e.size.height=p,e.position.top=o.top-u):(p=h-t.height,e.size.height=p,e.position.top=o.top+n.height-p),0<d-l?(e.size.width=d,e.position.left=o.left-c):(d=l-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});V.ui.resizable;V.widget("ui.dialog",{version:"1.13.2",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V.ui.safeBlur(V.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("<button type='button'></button>").button({label:V("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=V("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("<button></button>",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t<e+i}V.widget("ui.droppable",{version:"1.13.2",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){V.ui.ddmanager.droppables[t]=V.ui.ddmanager.droppables[t]||[],V.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var t=V.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,e){var i;"accept"===t?this.accept="function"==typeof e?e:function(t){return t.is(e)}:"scope"===t&&(i=V.ui.ddmanager.droppables[this.options.scope],this._splice(i),this._addToManager(e)),this._super(t,e)},_activate:function(t){var e=V.ui.ddmanager.current;this._addActiveClass(),e&&this._trigger("activate",t,this.ui(e))},_deactivate:function(t){var e=V.ui.ddmanager.current;this._removeActiveClass(),e&&this._trigger("deactivate",t,this.ui(e))},_over:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(e)))},_out:function(t){var e=V.ui.ddmanager.current;e&&(e.currentItem||e.element)[0]!==this.element[0]&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(e)))},_drop:function(e,t){var i=t||V.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=V(this).droppable("instance");if(t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&V.ui.intersect(i,V.extend(t,{offset:t.element.offset()}),t.options.tolerance,e))return!(s=!0)}),!s&&(!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(i)),this.element)))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),V.ui.intersect=function(t,e,i,s){if(!e.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,a=n+t.helperProportions.width,r=o+t.helperProportions.height,l=e.offset.left,h=e.offset.top,c=l+e.proportions().width,u=h+e.proportions().height;switch(i){case"fit":return l<=n&&a<=c&&h<=o&&r<=u;case"intersect":return l<n+t.helperProportions.width/2&&a-t.helperProportions.width/2<c&&h<o+t.helperProportions.height/2&&r-t.helperProportions.height/2<u;case"pointer":return lt(s.pageY,h,e.proportions().height)&&lt(s.pageX,l,e.proportions().width);case"touch":return(h<=o&&o<=u||h<=r&&r<=u||o<h&&u<r)&&(l<=n&&n<=c||l<=a&&a<=c||n<l&&c<a);default:return!1}},!(V.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,e){var i,s,n=V.ui.ddmanager.droppables[t.options.scope]||[],o=e?e.type:null,a=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();t:for(i=0;i<n.length;i++)if(!(n[i].options.disabled||t&&!n[i].accept.call(n[i].element[0],t.currentItem||t.element))){for(s=0;s<a.length;s++)if(a[s]===n[i].element[0]){n[i].proportions().height=0;continue t}n[i].visible="none"!==n[i].element.css("display"),n[i].visible&&("mousedown"===o&&n[i]._activate.call(n[i],e),n[i].offset=n[i].element.offset(),n[i].proportions({width:n[i].element[0].offsetWidth,height:n[i].element[0].offsetHeight}))}},drop:function(t,e){var i=!1;return V.each((V.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&V.ui.intersect(t,this,this.options.tolerance,e)&&(i=this._drop.call(this,e)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,e)))}),i},dragStart:function(t,e){t.element.parentsUntil("body").on("scroll.droppable",function(){t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)})},drag:function(n,o){n.options.refreshPositions&&V.ui.ddmanager.prepareOffsets(n,o),V.each(V.ui.ddmanager.droppables[n.options.scope]||[],function(){var t,e,i,s;this.options.disabled||this.greedyChild||!this.visible||(s=!(i=V.ui.intersect(n,this,this.options.tolerance,o))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(e=this.options.scope,(i=this.element.parents(":data(ui-droppable)").filter(function(){return V(this).droppable("instance").options.scope===e})).length&&((t=V(i[0]).droppable("instance")).greedyChild="isover"===s)),t&&"isover"===s&&(t.isover=!1,t.isout=!0,t._out.call(t,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),t&&"isout"===s&&(t.isout=!1,t.isover=!0,t._over.call(t,o)))})},dragStop:function(t,e){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||V.ui.ddmanager.prepareOffsets(t,e)}})!==V.uiBackCompat&&V.widget("ui.droppable",V.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}});V.ui.droppable,V.widget("ui.progressbar",{version:"1.13.2",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return l<a&&(t=l,l=a,a=t),h<r&&(t=h,h=r,r=t),this.helper.css({left:a,top:r,width:l-a,height:h-r}),this.selectees.each(function(){var t=V.data(this,"selectable-item"),e=!1,i={};t&&t.element!==n.element[0]&&(i.left=t.left+n.elementPos.left,i.right=t.right+n.elementPos.left,i.top=t.top+n.elementPos.top,i.bottom=t.bottom+n.elementPos.top,"touch"===o.tolerance?e=!(i.left>l||i.right<a||i.top>h||i.bottom<r):"fit"===o.tolerance&&(e=i.left>a&&i.right<l&&i.top>r&&i.bottom<h),e?(t.selected&&(n._removeClass(t.$element,"ui-selected"),t.selected=!1),t.unselecting&&(n._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1),t.selecting||(n._addClass(t.$element,"ui-selecting"),t.selecting=!0,n._trigger("selecting",s,{selecting:t.element}))):(t.selecting&&((s.metaKey||s.ctrlKey)&&t.startselected?(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,n._addClass(t.$element,"ui-selected"),t.selected=!0):(n._removeClass(t.$element,"ui-selecting"),t.selecting=!1,t.startselected&&(n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0),n._trigger("unselecting",s,{unselecting:t.element}))),t.selected&&(s.metaKey||s.ctrlKey||t.startselected||(n._removeClass(t.$element,"ui-selected"),t.selected=!1,n._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,n._trigger("unselecting",s,{unselecting:t.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,V(".ui-unselecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-unselecting"),t.unselecting=!1,t.startselected=!1,i._trigger("unselected",e,{unselected:t.element})}),V(".ui-selecting",this.element[0]).each(function(){var t=V.data(this,"selectable-item");i._removeClass(t.$element,"ui-selecting")._addClass(t.$element,"ui-selected"),t.selecting=!1,t.selected=!0,t.startselected=!0,i._trigger("selected",e,{selected:t.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.13.2",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("<span>");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("<li>",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("<li>"),s=V("<div>",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t<n;t++)s.push("<span tabindex='0'></span>");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e<s||s===e&&(t===r._lastChangedValue||r.values(t)===l.min))&&(s=e,n=V(this),o=t)}),!1!==this._start(t,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),e=n.offset(),a=!V(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:t.pageX-e.left-n.width()/2,top:t.pageY-e.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),t=t/e;return(t=1<t?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n=this.value(),o=this.values();this._hasMultipleValues()&&(s=this.values(e?0:1),n=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(s,i):Math.max(s,i)),o[e]=i),i!==n&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,s,n;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=t,n=0;n<i.length;n+=1)i[n]=this._trimAlignValue(s[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,e){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],t=this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e,t=t-i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),V.each(this.items,function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,e){var i=null,s=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(t),V(t.target).parents().each(function(){if(V.data(this,n.widgetName+"-item")===n)return i=V(this),!1}),!!(i=V.data(t.target,n.widgetName+"-item")===n?V(t.target):i)&&(!(this.options.handle&&!e&&(V(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(s=!0)}),!s))&&(this.currentItem=i,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(t,e,i){var s,n,o=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=V("parent"!==o.appendTo?o.appendTo:this.currentItem.parent()),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},V.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),V.extend(this.offset,{parent:this._getParentOffset()}),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=V("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(t){var e,i,s,n,o=this.options;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o.scroll&&!1!==this._scroll(t)&&(this._refreshItemPositions(!0),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},e=this.items.length-1;0<=e;e--)if(s=(i=this.items[e]).item[0],(n=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===n?"next":"prev"]()[0]===s||V.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&V.contains(this.element[0],s))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),V.ui.ddmanager&&V.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,e){var i,s,n,o;if(t)return V.ui.ddmanager&&!this.options.dropBehaviour&&V.ui.ddmanager.drop(this,t),this.options.revert?(s=(i=this).placeholder.offset(),o={},(n=this.options.axis)&&"x"!==n||(o.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,V(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){i._clear(t)})):this._clear(t,e),!1},cancel:function(){if(this.dragging){this._mouseUp(new V.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;0<=t;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),V.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?V(this.domPosition.prev).after(this.currentItem):V(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var t=this._getItemsAsjQuery(e&&e.connected),i=[];return e=e||{},V(t).each(function(){var t=(V(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);t&&i.push((e.key||t[1]+"[]")+"="+(e.key&&e.expression?t[1]:t[2]))}),!i.length&&e.key&&i.push(e.key+"="),i.join("&")},toArray:function(t){var e=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e.each(function(){i.push(V(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,h="x"===this.options.axis||r<s+h&&s+h<l,c="y"===this.options.axis||o<e+c&&e+c<a;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?h&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<a&&r<s+this.helperProportions.height/2&&n-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this.dragDirection.vertical,t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(t){var e,i,s,n,o=[],a=[],r=this._connectWith();if(r&&t)for(e=r.length-1;0<=e;e--)for(i=(s=V(r[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&a.push(["function"==typeof n.options.items?n.options.items.call(n.element):V(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);function l(){o.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):V(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),e=a.length-1;0<=e;e--)a[e][0].each(l);return V(o)},_removeCurrentsFromItems:function(){var i=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=V.grep(this.items,function(t){for(var e=0;e<i.length;e++)if(i[e]===t.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var e,i,s,n,o,a,r,l,h=this.items,c=[["function"==typeof this.options.items?this.options.items.call(this.element[0],t,{item:this.currentItem}):V(this.options.items,this.element),this]],u=this._connectWith();if(u&&this.ready)for(e=u.length-1;0<=e;e--)for(i=(s=V(u[e],this.document[0])).length-1;0<=i;i--)(n=V.data(s[i],this.widgetFullName))&&n!==this&&!n.options.disabled&&(c.push(["function"==typeof n.options.items?n.options.items.call(n.element[0],t,{item:this.currentItem}):V(n.options.items,n.element),n]),this.containers.push(n));for(e=c.length-1;0<=e;e--)for(o=c[e][1],l=(a=c[e][i=0]).length;i<l;i++)(r=V(a[i])).data(this.widgetName+"-item",o),h.push({item:r,instance:o,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(t){for(var e,i,s=this.items.length-1;0<=s;s--)e=this.items[s],this.currentContainer&&e.instance!==this.currentContainer&&e.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?V(this.options.toleranceElement,e.item):e.item,t||(e.width=i.outerWidth(),e.height=i.outerHeight()),i=i.offset(),e.left=i.left,e.top=i.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(i){var s,n,o=(i=i||this).options;o.placeholder&&o.placeholder.constructor!==String||(s=o.placeholder,n=i.currentItem[0].nodeName.toLowerCase(),o.placeholder={element:function(){var t=V("<"+n+">",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("<tr>",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("<td>&#160;</td>",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)<i&&(i=Math.abs(t[h]-a),s=this.items[e],this.direction=r?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[u]?(s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[u].element,!0),this._trigger("change",t,this._uiHash()),this.containers[u]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[u],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(t){var e=this.options,t="function"==typeof e.helper?V(e.helper.apply(this.element[0],[t,this.currentItem])):"clone"===e.helper?this.currentItem.clone():this.currentItem;return t.parents("body").length||this.appendTo[0].appendChild(t[0]),t[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),t[0].style.width&&!e.forceHelperSize||t.width(this.currentItem.width()),t[0].style.height&&!e.forceHelperSize||t.height(this.currentItem.height()),t},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),{top:(t=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&V.ui.ie?{top:0,left:0}:t).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,e,i=this.options;"parent"===i.containment&&(i.containment=this.helper[0].parentNode),"document"!==i.containment&&"window"!==i.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===i.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===i.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(i.containment)||(t=V(i.containment)[0],e=V(i.containment).offset(),i="hidden"!==V(t).css("overflow"),this.containment=[e.left+(parseInt(V(t).css("borderLeftWidth"),10)||0)+(parseInt(V(t).css("paddingLeft"),10)||0)-this.margins.left,e.top+(parseInt(V(t).css("borderTopWidth"),10)||0)+(parseInt(V(t).css("paddingTop"),10)||0)-this.margins.top,e.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(V(t).css("borderLeftWidth"),10)||0)-(parseInt(V(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,e.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(V(t).css("borderTopWidth"),10)||0)-(parseInt(V(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,t=/(html|body)/i.test(s[0].tagName);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():t?0:s.scrollTop())*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():t?0:s.scrollLeft())*i}},_generatePosition:function(t){var e=this.options,i=t.pageX,s=t.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&V.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(i=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<s.length;i++)s[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===V.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var e=t||this;return{helper:e.helper,placeholder:e.placeholder||V([]),position:e.position,originalPosition:e.originalPosition,offset:e.positionAbs,item:e.currentItem,sender:t?t.element:null}}});function ht(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}V.widget("ui.spinner",{version:"1.13.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0<e?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(t){var e;function i(){this.element[0]===V.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=e,this._delay(function(){this.previous=e}))}e=this.element[0]===V.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),!1!==this._start(t)&&this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(V(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,V(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var e=this.options,i=V.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,e.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-e.page,t),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,s=t-i;return t=i+Math.round(s/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:ht(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:ht(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:ht(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:ht(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:ht(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());ht(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==V.uiBackCompat&&V.widget("ui.spinner",V.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.2",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,t=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,t.collapsible),this._processTabs(),t.active=this._initialActive(),Array.isArray(t.disabled)&&(t.disabled=V.uniqueSort(t.disabled.concat(V.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(t.active):this.active=V(),this._refresh(),this.active.length&&this.load(t.active)},_initialActive:function(){var i=this.options.active,t=this.options.collapsible,s=location.hash.substring(1);return null===i&&(s&&this.tabs.each(function(t,e){if(V(e).attr("aria-controls")===s)return i=t,!1}),null!==(i=null===i?this.tabs.index(this.tabs.filter(".ui-tabs-active")):i)&&-1!==i||(i=!!this.tabs.length&&0)),!1!==i&&-1===(i=this.tabs.index(this.tabs.eq(i)))&&(i=!t&&0),i=!t&&!1===i&&this.anchors.length?0:i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):V()}},_tabKeydown:function(t){var e=V(V.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(e),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:i++;break;case V.ui.keyCode.UP:case V.ui.keyCode.LEFT:s=!1,i--;break;case V.ui.keyCode.END:i=this.anchors.length-1;break;case V.ui.keyCode.HOME:i=0;break;case V.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case V.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(e.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===V.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===V.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===V.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,e){var i=this.tabs.length-1;for(;-1!==V.inArray(t=(t=i<t?0:t)<0?i:t,this.options.disabled);)t=e?t+1:t-1;return t},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.2",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("<div>").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("<div>").attr("role","tooltip"),i=V("<div>").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip});
0 \ No newline at end of file 7 \ No newline at end of file
Vrh.Web.Reporting/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.Web.Reporting/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.Web.Reporting/Views/Shared/ErrorNoUserLoggedIn.cshtml 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +@model object
  2 +@{string detailedmessage = string.IsNullOrWhiteSpace((string)Model) ? "" : (string)Model; }
  3 +<hgroup class="title">
  4 + <h1 class="error" style="background-color: black; color: white; Line-height: 2">Error!</h1>
  5 + <h2 class="error" style="background-color: lightgrey; color: black;">No user logged in, or user not authorized!</h2>
  6 +</hgroup>
  7 +<hr style="color: white;">
  8 +<hgroup class="title">
  9 + <h6 class="error" style="background-color: lightgrey; color: black;">@detailedmessage</h6>
  10 +</hgroup>
Vrh.Web.Reporting/Vrh.NugetModuls.Documentations/Vrh.Web.Common.Lib/ReadMe.md
@@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true) @@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true)
469 469
470 *** 470 ***
471 ### Version History: 471 ### Version History:
  472 +#### 2.20.1 (2023.09.19) Patches:
  473 +- WebCommon.ErrorListBuilder mostantól saját kódot használ, nem a VRH.Common.ErrorListBuilder-ét. A VRH.Common.EF.ErrorListBuilder kód tartalmát használja, ami meg valamiért nem elérhető.
  474 +
  475 +#### 2.20.0 (2023.09.07) Compatible changes:
  476 +- DataTablesIn.DTColumn osztály kibővült egy OrderField nevű tulajdonsággal.
  477 +- DataTables.Order metódus módosítása, hogy ha ki van töltve az OrderField, akkor a rendezés arra történik.
  478 +
  479 +#### 2.19.5 (2023.08.10) Patches:
  480 +- DataTables.Filter metódus módosítása. Nullozható enumokra is helyesen működik.
  481 +
  482 +#### 2.19.4 (2023.07.18) Patches:
  483 +- DataTables.Filter metódus módosítása. Most már Guid típusú mező szűrésekor is helyesen működik.
  484 +
472 #### 2.19.3 (2023.06.05) Patches: 485 #### 2.19.3 (2023.06.05) Patches:
473 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus. 486 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus.
474 487
Vrh.Web.Reporting/Vrh.NugetModuls.Documentations/Vrh.Web.Membership/ReadMe.md
@@ -395,6 +395,16 @@ IsTemporary|```bool```|Annak jelzése, hogy a felhasználó ideiglenesen létreh @@ -395,6 +395,16 @@ IsTemporary|```bool```|Annak jelzése, hogy a felhasználó ideiglenesen létreh
395 395
396 *** 396 ***
397 ### Version History of Vrh.Web.Membership: 397 ### Version History of Vrh.Web.Membership:
  398 +#### 4.8.4 (2023.08.18) Patch:
  399 +- A jquery-ui frissítésekor a hivatkozásokat is át kell írni a megfelelő helyeken. Ez elmaradt, és emiatt nem működtek bizonyos funkciók (pl. szerep és szerepkörök összerendelése). Ennek a javítása történ.
  400 +#### 4.8.3 Patch (2023.08.01, nuget):
  401 +#### 4.8.2 Patch (2023.05.24, nuget):
  402 +- AutoLogout.js-ben javítás
  403 +#### 4.8.1 Patch (2022.12.19, nuget):
  404 +- áttérés a VRH.Common 3.0-ra
  405 +#### 4.8.0 Compatible change (2022.12.19, nuget):
  406 +#### 4.7.0 Compatible change (2022.12.19, nuget):
  407 +- automatikus kijelentkezéshez szükséges egyes dolgok igazítása
398 #### 4.6.1 (2022.10.29) Patch: 408 #### 4.6.1 (2022.10.29) Patch:
399 - Frissítés a Vrh.Web.Common.Lib 2.18.1 változatára 409 - Frissítés a Vrh.Web.Common.Lib 2.18.1 változatára
400 #### 4.6.0 (2022.10.21) Compatible change: 410 #### 4.6.0 (2022.10.21) Compatible change:
Vrh.Web.Reporting/Vrh.Web.Reporting.csproj
@@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
104 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 104 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
105 </Reference> 105 </Reference>
106 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 106 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
107 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 107 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
108 </Reference> 108 </Reference>
109 <Reference Include="Microsoft.Web.Administration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 109 <Reference Include="Microsoft.Web.Administration, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
110 <HintPath>..\packages\Microsoft.Web.Administration.11.1.0\lib\netstandard1.5\Microsoft.Web.Administration.dll</HintPath> 110 <HintPath>..\packages\Microsoft.Web.Administration.11.1.0\lib\netstandard1.5\Microsoft.Web.Administration.dll</HintPath>
@@ -290,23 +290,23 @@ @@ -290,23 +290,23 @@
290 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 290 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
291 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 291 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
292 </Reference> 292 </Reference>
293 - <Reference Include="VRH.Log4Pro.WebTools, Version=1.11.1.0, Culture=neutral, processorArchitecture=MSIL">  
294 - <HintPath>..\packages\VRH.Log4Pro.WebTools.1.11.1\lib\net451\VRH.Log4Pro.WebTools.dll</HintPath> 293 + <Reference Include="VRH.Log4Pro.WebTools, Version=1.12.5.0, Culture=neutral, processorArchitecture=MSIL">
  294 + <HintPath>..\packages\VRH.Log4Pro.WebTools.1.12.5\lib\net451\VRH.Log4Pro.WebTools.dll</HintPath>
295 </Reference> 295 </Reference>
296 - <Reference Include="Vrh.Logger, Version=2.10.0.0, Culture=neutral, processorArchitecture=MSIL">  
297 - <HintPath>..\packages\Vrh.Logger.2.10.0\lib\net451\Vrh.Logger.dll</HintPath> 296 + <Reference Include="Vrh.Logger, Version=2.11.1.0, Culture=neutral, processorArchitecture=MSIL">
  297 + <HintPath>..\packages\Vrh.Logger.2.11.1\lib\net451\Vrh.Logger.dll</HintPath>
298 </Reference> 298 </Reference>
299 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
300 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 299 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  300 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
301 </Reference> 301 </Reference>
302 - <Reference Include="Vrh.Web.Common.Lib, Version=2.19.3.0, Culture=neutral, processorArchitecture=MSIL">  
303 - <HintPath>..\packages\Vrh.Web.Common.Lib.2.19.3\lib\net451\Vrh.Web.Common.Lib.dll</HintPath> 302 + <Reference Include="Vrh.Web.Common.Lib, Version=2.20.1.0, Culture=neutral, processorArchitecture=MSIL">
  303 + <HintPath>..\packages\Vrh.Web.Common.Lib.2.20.1\lib\net451\Vrh.Web.Common.Lib.dll</HintPath>
304 </Reference> 304 </Reference>
305 <Reference Include="Vrh.Web.FileManager.Lib, Version=1.5.1.0, Culture=neutral, processorArchitecture=MSIL"> 305 <Reference Include="Vrh.Web.FileManager.Lib, Version=1.5.1.0, Culture=neutral, processorArchitecture=MSIL">
306 <HintPath>..\packages\Vrh.Web.FileManager.1.5.1\lib\net462\Vrh.Web.FileManager.Lib.dll</HintPath> 306 <HintPath>..\packages\Vrh.Web.FileManager.1.5.1\lib\net462\Vrh.Web.FileManager.Lib.dll</HintPath>
307 </Reference> 307 </Reference>
308 - <Reference Include="Vrh.Web.Membership.Lib, Version=4.8.2.0, Culture=neutral, processorArchitecture=MSIL">  
309 - <HintPath>..\packages\Vrh.Web.Membership.4.8.2\lib\net451\Vrh.Web.Membership.Lib.dll</HintPath> 308 + <Reference Include="Vrh.Web.Membership.Lib, Version=4.10.0.0, Culture=neutral, processorArchitecture=MSIL">
  309 + <HintPath>..\packages\Vrh.Web.Membership.4.10.0\lib\net451\Vrh.Web.Membership.Lib.dll</HintPath>
310 </Reference> 310 </Reference>
311 <Reference Include="Vrh.Web.Menu.Lib, Version=1.28.5.0, Culture=neutral, processorArchitecture=MSIL"> 311 <Reference Include="Vrh.Web.Menu.Lib, Version=1.28.5.0, Culture=neutral, processorArchitecture=MSIL">
312 <HintPath>..\packages\Vrh.Web.Menu.1.28.5\lib\net451\Vrh.Web.Menu.Lib.dll</HintPath> 312 <HintPath>..\packages\Vrh.Web.Menu.1.28.5\lib\net451\Vrh.Web.Menu.Lib.dll</HintPath>
@@ -344,10 +344,27 @@ @@ -344,10 +344,27 @@
344 <Compile Include="Global.asax.cs"> 344 <Compile Include="Global.asax.cs">
345 <DependentUpon>Global.asax</DependentUpon> 345 <DependentUpon>Global.asax</DependentUpon>
346 </Compile> 346 </Compile>
  347 + <Compile Include="SqlServerTypes\Loader.cs" />
347 <Compile Include="WebServerHostedServiceStarter.cs" /> 348 <Compile Include="WebServerHostedServiceStarter.cs" />
348 <Compile Include="Properties\AssemblyInfo.cs" /> 349 <Compile Include="Properties\AssemblyInfo.cs" />
349 </ItemGroup> 350 </ItemGroup>
350 <ItemGroup> 351 <ItemGroup>
  352 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  353 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  354 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  355 + </Content>
  356 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\SqlServerSpatial110.dll">
  357 + <Link>SqlServerTypes\x64\SqlServerSpatial110.dll</Link>
  358 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  359 + </Content>
  360 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  361 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  362 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  363 + </Content>
  364 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\SqlServerSpatial110.dll">
  365 + <Link>SqlServerTypes\x86\SqlServerSpatial110.dll</Link>
  366 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  367 + </Content>
351 <Content Include="App_Data\ConnectionStringStore.xml" /> 368 <Content Include="App_Data\ConnectionStringStore.xml" />
352 <Content Include="App_Data\ConnectionStringStoreAnti.xml" /> 369 <Content Include="App_Data\ConnectionStringStoreAnti.xml" />
353 <Content Include="App_Data\iSchedulerReport.xml" /> 370 <Content Include="App_Data\iSchedulerReport.xml" />
@@ -668,6 +685,10 @@ @@ -668,6 +685,10 @@
668 <Content Include="Images\ajax-loader_black.gif" /> 685 <Content Include="Images\ajax-loader_black.gif" />
669 <Content Include="Images\log4pro_cube.png" /> 686 <Content Include="Images\log4pro_cube.png" />
670 <Content Include="Images\userlogo.jpg" /> 687 <Content Include="Images\userlogo.jpg" />
  688 + <Content Include="Areas\WebTools\Views\_ViewStart.cshtml" />
  689 + <Content Include="Areas\WebTools\Views\_LayoutNoMenu.cshtml" />
  690 + <Content Include="Areas\WebTools\Views\web.config" />
  691 + <Content Include="Areas\WebTools\Views\UserIsNotAuthenticated.cshtml" />
671 <Content Include="Areas\UserAdministration\Views\_ViewStart.cshtml" /> 692 <Content Include="Areas\UserAdministration\Views\_ViewStart.cshtml" />
672 <Content Include="Areas\UserAdministration\Views\web.config" /> 693 <Content Include="Areas\UserAdministration\Views\web.config" />
673 <Content Include="Areas\UserAdministration\Views\User\Roles.cshtml" /> 694 <Content Include="Areas\UserAdministration\Views\User\Roles.cshtml" />
@@ -692,6 +713,8 @@ @@ -692,6 +713,8 @@
692 <Content Include="Areas\UserAdministration\Views\SecondaryUser\SecondaryFunction.cshtml" /> 713 <Content Include="Areas\UserAdministration\Views\SecondaryUser\SecondaryFunction.cshtml" />
693 <Content Include="Areas\UserAdministration\Views\SecondaryUser\Manager.cshtml" /> 714 <Content Include="Areas\UserAdministration\Views\SecondaryUser\Manager.cshtml" />
694 <Content Include="Areas\UserAdministration\Views\SecondaryUser\Editor.cshtml" /> 715 <Content Include="Areas\UserAdministration\Views\SecondaryUser\Editor.cshtml" />
  716 + <Content Include="Areas\UserAdministration\Views\RolesToUsers\_RolesToUsers.cshtml" />
  717 + <Content Include="Areas\UserAdministration\Views\RolesToUsers\Index.cshtml" />
695 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_RolesToUserRoleGroups.cshtml" /> 718 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_RolesToUserRoleGroups.cshtml" />
696 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_NewUserRoleGroupForm.cshtml" /> 719 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_NewUserRoleGroupForm.cshtml" />
697 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_EditUserRoleGroupForm.cshtml" /> 720 <Content Include="Areas\UserAdministration\Views\RolesToUserRoleGroups\_EditUserRoleGroupForm.cshtml" />
@@ -845,10 +868,6 @@ @@ -845,10 +868,6 @@
845 <Content Include="Content\bootstrap-reboot.css.map" /> 868 <Content Include="Content\bootstrap-reboot.css.map" />
846 <Content Include="Content\bootstrap-grid.min.css.map" /> 869 <Content Include="Content\bootstrap-grid.min.css.map" />
847 <Content Include="Content\bootstrap-grid.css.map" /> 870 <Content Include="Content\bootstrap-grid.css.map" />
848 - <Content Include="Scripts\vrh.bootstrap-datetimepicker.js" />  
849 - <Content Include="Scripts\vrh.bootstrap-datetimepicker.min.js" />  
850 - <Content Include="Scripts\vrh.commontools.js" />  
851 - <Content Include="Scripts\vrh.commontools.min.js" />  
852 <Content Include="Areas\WebForm\Views\WebForm\WebForm.cshtml" /> 871 <Content Include="Areas\WebForm\Views\WebForm\WebForm.cshtml" />
853 <Content Include="Areas\WebForm\Views\WebForm\Inputs.cshtml" /> 872 <Content Include="Areas\WebForm\Views\WebForm\Inputs.cshtml" />
854 <Content Include="Areas\WebForm\Views\WebForm\Index.cshtml" /> 873 <Content Include="Areas\WebForm\Views\WebForm\Index.cshtml" />
@@ -871,7 +890,6 @@ @@ -871,7 +890,6 @@
871 <Content Include="Areas\OneReport\Views\Shared\ErrorList.cshtml" /> 890 <Content Include="Areas\OneReport\Views\Shared\ErrorList.cshtml" />
872 <Content Include="Areas\OneReport\Views\web.config" /> 891 <Content Include="Areas\OneReport\Views\web.config" />
873 <Content Include="Areas\OneReport\Views\_ViewStart.cshtml" /> 892 <Content Include="Areas\OneReport\Views\_ViewStart.cshtml" />
874 - <Content Include="Areas\WebTools\Views\_ViewStart.cshtml" />  
875 <Content Include="App_Data\OneReport\AndonLog - en-US.rdl" /> 893 <Content Include="App_Data\OneReport\AndonLog - en-US.rdl" />
876 <Content Include="App_Data\OneReport\AndonLog - hu-HU.rdl" /> 894 <Content Include="App_Data\OneReport\AndonLog - hu-HU.rdl" />
877 <Content Include="App_Data\OneReport\Downtime1 - en-US.rdl" /> 895 <Content Include="App_Data\OneReport\Downtime1 - en-US.rdl" />
@@ -912,17 +930,24 @@ @@ -912,17 +930,24 @@
912 <Content Include="App_Data\OneReport\Production3 - en-US.rdl" /> 930 <Content Include="App_Data\OneReport\Production3 - en-US.rdl" />
913 <Content Include="App_Data\OneReport\Production3 - hu-HU.rdl" /> 931 <Content Include="App_Data\OneReport\Production3 - hu-HU.rdl" />
914 <Content Include="App_Data\OneScripter\Test.ps" /> 932 <Content Include="App_Data\OneScripter\Test.ps" />
  933 + <Content Include="Scripts\bootstrap4-toggle.min.js.map" />
915 <None Include="system.web.authentication.config" /> 934 <None Include="system.web.authentication.config" />
916 <None Include="system.web.membership.config" /> 935 <None Include="system.web.membership.config" />
917 <None Include="system.web.rolemanager.config" /> 936 <None Include="system.web.rolemanager.config" />
918 <None Include="Vrh.NugetModuls.Documentations\VRH.Common\ReadMe.md" /> 937 <None Include="Vrh.NugetModuls.Documentations\VRH.Common\ReadMe.md" />
919 - <None Include="Vrh.NugetModuls.Documentations\VRH.Log4Pro.WebTools\ReadMe.md" />  
920 - <Content Include="Scripts\bootstrap4-toggle.min.js.map" /> 938 + <Content Include="Scripts\vrh.bootstrap-datetimepicker.js" />
  939 + <Content Include="Scripts\vrh.bootstrap-datetimepicker.min.js" />
  940 + <Content Include="Scripts\vrh.commontools.js" />
  941 + <Content Include="Scripts\vrh.commontools.min.js" />
  942 + <Content Include="SqlServerTypes\readme.htm" />
921 <Content Include="Vrh.NugetModuls.Documentations\Vrh.Logger\ReadMe.md" /> 943 <Content Include="Vrh.NugetModuls.Documentations\Vrh.Logger\ReadMe.md" />
  944 + <None Include="Vrh.NugetModuls.Documentations\VRH.Log4Pro.WebTools\ReadMe.md" />
922 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.Common.Lib\ReadMe.md" /> 945 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.Common.Lib\ReadMe.md" />
923 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.FileManager\ReadMe.md" /> 946 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.FileManager\ReadMe.md" />
924 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.Membership\ReadMe.md" /> 947 <None Include="Vrh.NugetModuls.Documentations\Vrh.Web.Membership\ReadMe.md" />
925 <None Include="Vrh.NugetModuls.Documentations\Vrh.WebForm\ReadMe.md" /> 948 <None Include="Vrh.NugetModuls.Documentations\Vrh.WebForm\ReadMe.md" />
  949 + <Content Include="Scripts\jquery-ui-1.13.2.js" />
  950 + <Content Include="Scripts\jquery-ui-1.13.2.min.js" />
926 <Content Include="WCFBehaviors.config" /> 951 <Content Include="WCFBehaviors.config" />
927 <Content Include="WCFBindings.config" /> 952 <Content Include="WCFBindings.config" />
928 <Content Include="WCFClients.config" /> 953 <Content Include="WCFClients.config" />
@@ -967,8 +992,6 @@ @@ -967,8 +992,6 @@
967 <Content Include="Scripts\moment.min.js" /> 992 <Content Include="Scripts\moment.min.js" />
968 <Content Include="Scripts\moment.min.js.map" /> 993 <Content Include="Scripts\moment.min.js.map" />
969 <Content Include="Scripts\moment-with-locales.min.js.map" /> 994 <Content Include="Scripts\moment-with-locales.min.js.map" />
970 - <Content Include="Scripts\jquery-ui-1.12.1.js" />  
971 - <Content Include="Scripts\jquery-ui-1.12.1.min.js" />  
972 <Content Include="Scripts\jquery.unobtrusive-ajax.js" /> 995 <Content Include="Scripts\jquery.unobtrusive-ajax.js" />
973 <Content Include="Scripts\jquery.unobtrusive-ajax.min.js" /> 996 <Content Include="Scripts\jquery.unobtrusive-ajax.min.js" />
974 <Content Include="Scripts\lib\cupertino\images\ui-bg_diagonals-thick_90_eeeeee_40x40.png" /> 997 <Content Include="Scripts\lib\cupertino\images\ui-bg_diagonals-thick_90_eeeeee_40x40.png" />
Vrh.Web.Reporting/Web.config
@@ -18,11 +18,11 @@ @@ -18,11 +18,11 @@
18 <add key="webpages:Enabled" value="false" /> 18 <add key="webpages:Enabled" value="false" />
19 <add key="ClientValidationEnabled" value="true" /> 19 <add key="ClientValidationEnabled" value="true" />
20 <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 20 <add key="UnobtrusiveJavaScriptEnabled" value="true" />
21 - <add key="enableSimpleMembership" value="false" />  
22 - <add key="autoFormsAuthentication" value="false" /> 21 +
  22 +
23 <add key="HangfireBootstrapper:disableautostart" value="false" /> 23 <add key="HangfireBootstrapper:disableautostart" value="false" />
24 <add key="HangfireBootstrapper:dbconnectionstring" value="MAINDBLOG4PRO" /> 24 <add key="HangfireBootstrapper:dbconnectionstring" value="MAINDBLOG4PRO" />
25 - </appSettings> 25 + <add key="enableSimpleMembership" value="false" /><add key="autoFormsAuthentication" value="false" /></appSettings>
26 <system.serviceModel> 26 <system.serviceModel>
27 <client configSource="WCFClients.config" /> 27 <client configSource="WCFClients.config" />
28 <services configSource="WCFServices.config" /> 28 <services configSource="WCFServices.config" />
@@ -41,10 +41,10 @@ @@ -41,10 +41,10 @@
41 <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> 41 <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
42 </providers> 42 </providers>
43 </sessionState> 43 </sessionState>
44 - <membership configSource="system.web.membership.config" />  
45 - <roleManager configSource="system.web.roleManager.config" /> 44 + <membership configSource="system.web.membership.config"></membership>
  45 + <roleManager configSource="system.web.roleManager.config"></roleManager>
46 <identity configSource="WebIdentity.config" /> 46 <identity configSource="WebIdentity.config" />
47 - <authentication configSource="system.web.authentication.config" /> 47 + <authentication configSource="system.web.authentication.config"></authentication>
48 </system.web> 48 </system.web>
49 <runtime> 49 <runtime>
50 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 50 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
Vrh.Web.Reporting/_CreateNewNuGetPackage/Config.ps1 0 → 100644
@@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
  1 +#==========================================================
  2 +# Edit the variable values below to configure how your .nupkg file is packed (i.e. created) and pushed (i.e. uploaded) to the NuGet gallery.
  3 +#
  4 +# If you have modified this script:
  5 +# - if you uninstall the "Create New NuGet Package From Project After Each Build" package, this file may not be removed automatically; you may need to manually delete it.
  6 +# - if you update the "Create New NuGet Package From Project After Each Build" package, this file may not be updated unless you specify it to be overwritten, either by
  7 +# confirming the overwrite if prompted, or by providing the "-FileConflictAction Overwrite" parameter when installing from the command line.
  8 +# If you overwrite this file then your custom changes will be lost, and you will need to manually reapply your changes.
  9 +# If you are not using source control, I recommend backing up this file before updating the package so you can see what changes you had made to it.
  10 +#==========================================================
  11 +
  12 +#------------------------------------------------
  13 +# Pack parameters used to create the .nupkg file.
  14 +#------------------------------------------------
  15 +
  16 +# Specify the Version Number to use for the NuGet package. If not specified, the version number of the assembly being packed will be used.
  17 +# NuGet version number guidance: https://docs.nuget.org/docs/reference/versioning and the Semantic Versioning spec: http://semver.org/
  18 +# e.g. "" (use assembly's version), "1.2.3" (stable version), "1.2.3-alpha" (prerelease version).
  19 +$versionNumber = ""
  20 +
  21 +# Specify any Release Notes for this package.
  22 +# These will only be included in the package if you have a .nuspec file for the project in the same directory as the project file.
  23 +$releaseNotes = ""
  24 +
  25 +# Specify a specific Configuration and/or Platform to only create a NuGet package when building the project with this Configuration and/or Platform.
  26 +# e.g. $configuration = "Release"
  27 +# $platform = "AnyCPU"
  28 +$configuration = ""
  29 +$platform = ""
  30 +
  31 +# Specify any NuGet Pack Properties to pass to MsBuild.
  32 +# e.g. $packProperties = "TargetFrameworkVersion=v3.5;Optimize=true"
  33 +# Do not specify the "Configuration" or "Platform" here; use the $configuration and $platform variables above.
  34 +# MsBuild Properties that can be specified: http://msdn.microsoft.com/en-us/library/vstudio/bb629394.aspx
  35 +$packProperties = ""
  36 +
  37 +# Specify any NuGet Pack options to pass to nuget.exe.
  38 +# e.g. $packOptions = "-Symbols"
  39 +# e.g. $packOptions = "-IncludeReferencedProjects -Symbols"
  40 +# Do not specify a "-Version" (use $versionNumber above), "-OutputDirectory", or "-NonInteractive", as these are already provided.
  41 +# Do not specify any "-Properties" here; instead use the $packProperties variable above.
  42 +# Do not specify "-Build", as this may result in an infinite build loop.
  43 +# NuGet Pack options that can be specified: http://docs.nuget.org/docs/reference/command-line-reference#Pack_Command_Options
  44 +# Use "-Symbols" to also create a symbols package. When pushing your package, the symbols package will automatically be detected and pushed as well: https://www.symbolsource.org/Public/Wiki/Publishing
  45 +$packOptions = ""
  46 +
  47 +# Specify $true if the generated .nupkg file should be renamed to include the Configuration and Platform that was used to build the project, $false if not.
  48 +# e.g. If $true, MyProject.1.1.5.6.nupkg might be renamed to MyProject.1.1.5.6.Debug.AnyCPU.nupkg
  49 +# e.g. If $true, MyProject.1.1.5.6-beta1.nupkg might re renamed to MyProject.1.1.5.6-beta1.Release.x86.nupkg
  50 +$appendConfigurationAndPlatformToNuGetPackageFileName = $false
  51 +
  52 +
  53 +#------------------------------------------------
  54 +# Push parameters used to upload the .nupkg file to the NuGet gallery.
  55 +#------------------------------------------------
  56 +
  57 +# The NuGet gallery to upload to. If not provided, the DefaultPushSource in your NuGet.config file is used (typically nuget.org).
  58 +$sourceToUploadTo = ""
  59 +
  60 +# The API Key to use to upload the package to the gallery. If not provided and a system-level one does not exist for the specified Source, you will be prompted for it.
  61 +$apiKey = ""
  62 +
  63 +# Specify any NuGet Push options to pass to nuget.exe.
  64 +# e.g. $pushOptions = "-Timeout 120"
  65 +# Do not specify the "-Source" or "-ApiKey" here; use the variables above.
  66 +# NuGet Push options that can be specified: http://docs.nuget.org/docs/reference/command-line-reference#Push_Command_Options
  67 +$pushOptions = ""
Vrh.Web.Reporting/_CreateNewNuGetPackage/DoNotModify/CreateNuGetPackage.ps1 0 → 100644
@@ -0,0 +1,295 @@ @@ -0,0 +1,295 @@
  1 +#==========================================================
  2 +# DO NOT EDIT THIS FILE.
  3 +# If you want to configure how your package is created, modify the Config.ps1 file.
  4 +#
  5 +# This script is ran automatically after every successful build.
  6 +# This script creates a NuGet package for the current project, and places the .nupkg file in the project's output directory (beside the .dll/.exe file).
  7 +#==========================================================
  8 +param ([string]$ProjectFilePath, [string]$OutputDirectory, [string]$BuildConfiguration, [string]$BuildPlatform)
  9 +
  10 +# Turn on Strict Mode to help catch syntax-related errors.
  11 +# This must come after a script's/function's param section.
  12 +# Forces a function to be the first non-comment code to appear in a PowerShell Module.
  13 +Set-StrictMode -Version Latest
  14 +
  15 +# PowerShell v2.0 compatible version of [string]::IsNullOrWhitespace.
  16 +function Test-StringIsNullOrWhitespace([string]$string)
  17 +{
  18 + if ($string -ne $null) { $string = $string.Trim() }
  19 + return [string]::IsNullOrEmpty($string)
  20 +}
  21 +
  22 +# Display the parameter values passed to this script.
  23 +Write-Output "ProjectFilePath parameter value passed to script is '$ProjectFilePath'."
  24 +Write-Output "OutputDirectory parameter value passed to script is '$OutputDirectory'."
  25 +Write-Output "BuildConfiguration parameter value passed to script is '$BuildConfiguration'."
  26 +Write-Output "BuildPlatform parameter value passed to script is '$BuildPlatform'."
  27 +
  28 +# Get the directory that this script is in.
  29 +$THIS_SCRIPTS_DIRECTORY_PATH = Split-Path $script:MyInvocation.MyCommand.Path
  30 +
  31 +# Make sure the OutputDirectory does not end in a trailing backslash, as it will mess up nuget.exe's parameter parsing.
  32 +$OutputDirectory = $OutputDirectory.TrimEnd('\')
  33 +
  34 +# Get the path to the Config file and dot source it into this script.
  35 +# The variables below should be defined in the Config file, but if they aren't we initialize them with default values.
  36 +$CONFIG_FILE_PATH = Join-Path -Path (Split-Path -Path $THIS_SCRIPTS_DIRECTORY_PATH -Parent) -ChildPath 'Config.ps1'
  37 +if (Test-Path -Path $CONFIG_FILE_PATH) { . $CONFIG_FILE_PATH }
  38 +else { Write-Warning "Could not find Config file at '$CONFIG_FILE_PATH'. Default values will be used instead." }
  39 +
  40 +# Specify the version number to use for the NuGet package. If not specified, the version number of the assembly being packed will be used.
  41 +# NuGet version number guidance: https://docs.nuget.org/docs/reference/versioning and the Semantic Versioning spec: http://semver.org/
  42 +# e.g. "" (use assembly's version), "1.2.3" (stable version), "1.2.3-alpha" (prerelease version).
  43 +if (!(Test-Path Variable:Private:versionNumber) -or (Test-StringIsNullOrWhitespace $versionNumber)) { $versionNumber = ""; Write-Output "Using default Version Number value." }
  44 +else { Write-Output "Using user-specified Version Number value '$versionNumber'." }
  45 +
  46 +# Specify any release notes for this package.
  47 +# These will only be included in the package if you have a .nuspec file for the project in the same directory as the project file.
  48 +if (!(Test-Path Variable:Private:releaseNotes) -or (Test-StringIsNullOrWhitespace $releaseNotes)) { $releaseNotes = ""; Write-Output "Using default Release Notes value." }
  49 +else { Write-Output "Using user-specified Release Notes value '$releaseNotes'." }
  50 +
  51 +# Make sure we pack the assemblies of the currently selected Configuration (e.g. Debug, Release) and Platform (e.g. x86, x64, Any CPU).
  52 +if (!(Test-Path Variable:Private:configuration) -or (Test-StringIsNullOrWhitespace $configuration)) { $configuration = $BuildConfiguration; Write-Output "Using default Configuration value." }
  53 +else { Write-Output "Using user-specified Configuration value '$configuration'." }
  54 +if (!(Test-Path Variable:Private:platform) -or (Test-StringIsNullOrWhitespace $platform)) { $platform = $BuildPlatform; Write-Output "Using default Platform value." }
  55 +else { Write-Output "Using user-specified Platform value '$platform'." }
  56 +$packPropertiesConfigurationAndPlatform = "Configuration=""$BuildConfiguration"";Platform=""$BuildPlatform"";"
  57 +
  58 +# Specify any NuGet Pack Properties to pass to MsBuild.
  59 +# e.g. $packProperties = "TargetFrameworkVersion=v3.5;Optimize=true"
  60 +# Do not specify the "Configuration" or "Platform" here (the $BuildConfiguration and $BuildPlatform values will be used).
  61 +# MsBuild Properties that can be specified: http://msdn.microsoft.com/en-us/library/vstudio/bb629394.aspx
  62 +if (!(Test-Path Variable:Private:packProperties) -or (Test-StringIsNullOrWhitespace $packProperties)) { $packProperties = ""; Write-Output "Using default Pack Properties value." }
  63 +else { Write-Output "Using user-specified Pack Properties value '$packProperties'." }
  64 +
  65 +# Specify any NuGet Pack options to pass to nuget.exe.
  66 +# e.g. $packOptions = "-IncludeReferencedProjects"
  67 +# Do not specify a "-Version" (use $versionNumber above), "-OutputDirectory", or "-NonInteractive", as these are already provided.
  68 +# Do not specify any "-Properties" here; instead use the $packProperties variable above.
  69 +# Do not specify "-Build", as this may result in an infinite build loop.
  70 +# NuGet Pack options that can be specified: http://docs.nuget.org/docs/reference/command-line-reference#Pack_Command_Options
  71 +if (!(Test-Path Variable:Private:packOptions) -or (Test-StringIsNullOrWhitespace $packOptions)) { $packOptions = ""; Write-Output "Using default Pack Options value." }
  72 +else { Write-Output "Using user-specified Pack Options value '$packOptions'." }
  73 +
  74 +# Join the Configuration and Platform into the rest of the pack Properties.
  75 +$packProperties = ($packPropertiesConfigurationAndPlatform + $packProperties).TrimEnd(';')
  76 +
  77 +# If the user-specified Configuration and Platform do not match the Configuration and Platform the project was just built with.
  78 +if ($BuildConfiguration -ne $configuration -or $BuildPlatform -ne $platform)
  79 +{
  80 + # Display that the Configuration or Platform does not match and exit this function before creating the NuGet package.
  81 + Write-Output "Project was not built with the Configuration or Platform that the user has specified should be used to create NuGet packages, so exiting without creating a NuGet package."
  82 + Write-Output "Configuration and Platform used by build was '$BuildConfiguration','$BuildPlatform'."
  83 + Write-Output "Configuration and Platform specified by user is '$configuration','$platform'."
  84 + break
  85 +}
  86 +
  87 +#-----
  88 +# Make sure the assembly still exists in the folder specified by the project file, since if an Output Directory different than the one specified in
  89 +# the project file was used (e.g. passed in using msbuild.exe's outdir property parameter, NuGet.exe won't be able to find the assembly file and pack it.
  90 +
  91 +# Define helper functions.
  92 +function Get-XmlNamespaceManager([xml]$XmlDocument, [string]$NamespaceURI = "")
  93 +{
  94 + # If a Namespace URI was not given, use the Xml document's default namespace.
  95 + if ([string]::IsNullOrEmpty($NamespaceURI)) { $NamespaceURI = $XmlDocument.DocumentElement.NamespaceURI }
  96 +
  97 + # In order for SelectSingleNode() to actually work, we need to use the fully qualified node path along with an Xml Namespace Manager, so set them up.
  98 + [System.Xml.XmlNamespaceManager]$xmlNsManager = New-Object System.Xml.XmlNamespaceManager($XmlDocument.NameTable)
  99 + $xmlNsManager.AddNamespace("ns", $NamespaceURI)
  100 + return ,$xmlNsManager # Need to put the comma before the variable name so that PowerShell doesn't convert it into an Object[].
  101 +}
  102 +
  103 +function Get-FullyQualifiedXmlNodePath([string]$NodePath, [string]$NodeSeparatorCharacter = '.')
  104 +{
  105 + return "/ns:$($NodePath.Replace($($NodeSeparatorCharacter), '/ns:'))"
  106 +}
  107 +
  108 +function Get-XmlNode([xml]$XmlDocument, [string]$NodePath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  109 +{
  110 + $xmlNsManager = Get-XmlNamespaceManager -XmlDocument $XmlDocument -NamespaceURI $NamespaceURI
  111 + [string]$fullyQualifiedNodePath = Get-FullyQualifiedXmlNodePath -NodePath $NodePath -NodeSeparatorCharacter $NodeSeparatorCharacter
  112 +
  113 + # Try and get the node, then return it. Returns $null if the node was not found.
  114 + $node = $XmlDocument.SelectSingleNode($fullyQualifiedNodePath, $xmlNsManager)
  115 + return $node
  116 +}
  117 +
  118 +function Get-XmlNodes([xml]$XmlDocument, [string]$NodePath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  119 +{
  120 + $xmlNsManager = Get-XmlNamespaceManager -XmlDocument $XmlDocument -NamespaceURI $NamespaceURI
  121 + [string]$fullyQualifiedNodePath = Get-FullyQualifiedXmlNodePath -NodePath $NodePath -NodeSeparatorCharacter $NodeSeparatorCharacter
  122 +
  123 + # Try and get the nodes, then return them. Returns $null if no nodes were found.
  124 + $nodes = $XmlDocument.SelectNodes($fullyQualifiedNodePath, $xmlNsManager)
  125 + return $nodes
  126 +}
  127 +
  128 +function Get-XmlElementsTextValue([xml]$XmlDocument, [string]$ElementPath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  129 +{
  130 + # Try and get the node.
  131 + $node = Get-XmlNode -XmlDocument $XmlDocument -NodePath $ElementPath -NamespaceURI $NamespaceURI -NodeSeparatorCharacter $NodeSeparatorCharacter
  132 +
  133 + # If the node already exists, return its value, otherwise return null.
  134 + if ($node) { return $node.InnerText } else { return $null }
  135 +}
  136 +
  137 +# Makes sure the assembly exists in the directory defined by the Project File (this is where NuGet.exe will expect it to be in order to pack it).
  138 +# This is required in case the user is building with MsBuild and has provided an alternative output directory (e.g. /p:OutDir="Some\Other\Path").
  139 +function Ensure-AssemblyFileExistsWhereNuGetExpectsItToBe([string]$ProjectFilePath, [string]$OutputDirectory, [string]$Configuration, [string]$Platform)
  140 +{
  141 + # Display the time that the pre-processing started running.
  142 + $scriptStartTime = Get-Date
  143 + Write-Output "Pre-processing the project file to make sure the assembly exists where NuGet.exe will expect it to be, started at $($scriptStartTime.TimeOfDay.ToString())."
  144 +
  145 + # If the Project File Path does not exist, display an error message and return.
  146 + if (!(Test-Path $ProjectFilePath)) { Write-Output "Project file does not exist at '$ProjectFilePath', so cannot pre-process it."; return }
  147 +
  148 + # Get the contents of the Project File as Xml.
  149 + $projectFileXml = New-Object System.Xml.XmlDocument
  150 + $projectFileXml.Load($ProjectFilePath)
  151 +
  152 + # Get the Property Group for the current Configuration and Platform from the Project File.
  153 + $projectFilePropertyGroups = Get-XmlNodes -XmlDocument $projectFileXml -NodePath "Project.PropertyGroup"
  154 + if (!$projectFilePropertyGroups) { "No PropertyGroup elements could be found in the project file, so cannot pre-process it."; return }
  155 + $projectFilePropertyGroupForCurrentConfigurationAndPlatform = $projectFilePropertyGroups | Where { $_.Attributes.GetNamedItem('Condition') -and $_.Attributes.GetNamedItem('Condition').Value -match ".*$Configuration\|$Platform.*" }
  156 + if (!$projectFilePropertyGroupForCurrentConfigurationAndPlatform) { "Could not find the PropertyGroup element in the project file that corresponds to Configuration '$Configuration' and Platform '$Platform', so cannot pre-process it."; return }
  157 +
  158 + # Get the Directory where NuGet.exe will expect to find the assembly to pack.
  159 + $projectFileOutputDirectory = $projectFilePropertyGroupForCurrentConfigurationAndPlatform.OutputPath
  160 +
  161 + # If we were not able to get the Output Directory where NuGet.exe will expect to find the assembly from the Project File, display an error message and return.
  162 + if ([string]::IsNullOrEmpty($projectFileOutputDirectory)) { Write-Output "Could not find the OutputPath element in the project file that corresponds to Configuration '$Configuration' and Platform '$Platform', so cannot pre-process it."; return }
  163 +
  164 + # Get the full path of the directory where NuGet.exe will expect to find the assembly.
  165 + $nuGetExpectedOutputDirectoryPath = Join-Path (Split-Path -Path $ProjectFilePath -Parent) $projectFileOutputDirectory
  166 + $nuGetExpectedOutputDirectoryPath = $nuGetExpectedOutputDirectoryPath.TrimEnd('\') # We trimmed the OutputDirectory, so trim this one too so we can compare them to see if they match.
  167 +
  168 + # If the actual Output Directory is different than the one specified in the Project File.
  169 + if (!$OutputDirectory.Equals($nuGetExpectedOutputDirectoryPath, [System.StringComparison]::OrdinalIgnoreCase))
  170 + {
  171 + # Get the name of the assembly.
  172 + $assemblyName = Get-XmlElementsTextValue -XmlDocument $projectFileXml -ElementPath "Project.PropertyGroup.AssemblyName"
  173 + if (!$assemblyName) { $assemblyName = [string]::Empty }
  174 +
  175 + # Get the type of project being built, so we can determine what file extension it should have.
  176 + $assemblyType = Get-XmlElementsTextValue -XmlDocument $projectFileXml -ElementPath "Project.PropertyGroup.OutputType"
  177 + if (!$assemblyType) { $assemblyType = [string]::Empty }
  178 +
  179 + # Attach the file extension to the assembly name based on the type of project this is. Either a Library or Executable.
  180 + if ($assemblyType.Equals("Library", [System.StringComparison]::OrdinalIgnoreCase)) { $assemblyName = "$assemblyName.dll" }
  181 + else { $assemblyName = "$assemblyName.exe" }
  182 +
  183 + # Get the full path of the assembly.
  184 + $assemblyPath = Join-Path $OutputDirectory $assemblyName
  185 + $nuGetExpectedAssemblyPath = Join-Path $nuGetExpectedOutputDirectoryPath $assemblyName
  186 +
  187 + # If the assembly is not in the Output Directory (which it should be), display an error message and return.
  188 + if (!(Test-Path $assemblyPath -PathType Leaf)) { Write-Output "Could not find the assembly at the expected path '$assemblyPath', so cannot continue pre-processing."; return }
  189 +
  190 + # Make sure the assembly exists in the Project File's Output Path, since that is where NuGet.exe expects to find it.
  191 + # If the assembly does not exist where the Project File defines it should be (i.e. where NuGet expects it to be), copy it there,
  192 + # OR the assembly exists in both places, but If the one in the Output Directory is newer, overwrite the one in the Project Output Directory.
  193 + if (!(Test-Path $nuGetExpectedAssemblyPath -PathType Leaf) -or
  194 + ((Get-Item -Path $assemblyPath).LastWriteTime -lt (Get-Item -Path $nuGetExpectedAssemblyPath).LastWriteTime))
  195 + {
  196 + # If the directory to hold the assembly file does not exist, create it.
  197 + $nuGetExpectedAssemblyDirectoryPath = Split-Path $nuGetExpectedAssemblyPath -Parent
  198 + if (!(Test-Path $nuGetExpectedAssemblyDirectoryPath)) { New-Item -Path $nuGetExpectedAssemblyDirectoryPath -ItemType Container -Force > $null }
  199 +
  200 + # Copy the assembly file.
  201 + Write-Output "Copying assembly file from '$assemblyPath' to '$nuGetExpectedAssemblyPath'."
  202 + Copy-Item -Path $assemblyPath -Destination $nuGetExpectedAssemblyPath -Force
  203 +
  204 + # Copy the Pdb file, if it exists.
  205 + $assemblyPdbPath = [System.IO.Path]::ChangeExtension($assemblyPath, "pdb")
  206 + $nuGetExpectedAssemblyPdbPath = [System.IO.Path]::ChangeExtension($nuGetExpectedAssemblyPath, "pdb")
  207 + if (Test-Path $assemblyPdbPath -PathType Leaf)
  208 + {
  209 + Write-Output "Copying symbols file from '$assemblyPdbPath' to '$nuGetExpectedAssemblyPdbPath'."
  210 + Copy-Item -Path $assemblyPdbPath -Destination $nuGetExpectedAssemblyPdbPath -Force
  211 + }
  212 + else { Write-Output "No symbols file found at '$assemblyPdbPath', so it was not copied to '$nuGetExpectedAssemblyPdbPath'." }
  213 +
  214 + # Copy the Xml file, if it exists.
  215 + # The Xml file location and name are specified in the Project File, but NuGet.exe seems to ignore that and expects it to be in the same directory as the assembly,
  216 + # with the same name as the assembly, so just put it where NuGet.exe expects it to be.
  217 + $assemblyXmlPath = [System.IO.Path]::ChangeExtension($assemblyPath, "xml")
  218 + $nuGetExpectedAssemblyXmlPath = [System.IO.Path]::ChangeExtension($nuGetExpectedAssemblyPath, "xml")
  219 + if (Test-Path $assemblyXmlPath -PathType Leaf)
  220 + {
  221 + Write-Output "Copying documentation file from '$assemblyXmlPath' to '$nuGetExpectedAssemblyXmlPath'."
  222 + Copy-Item -Path $assemblyXmlPath -Destination $nuGetExpectedAssemblyXmlPath -Force
  223 + }
  224 + else { Write-Output "No documentation file found at '$assemblyXmlPath', so it was not copied to '$nuGetExpectedAssemblyXmlPath'." }
  225 + }
  226 + else { Write-Output "The proper assembly already exists where NuGet.exe will expect it to be, so no pre-processing actions were required." }
  227 + }
  228 + else { Write-Output "The Output Directory is the same as defined in the project file, so no pre-processing actions were required." }
  229 +
  230 + # Display the time that the pre-processing finished running, and how long it took to run.
  231 + $scriptFinishTime = Get-Date
  232 + $scriptElapsedTimeInSeconds = ($scriptFinishTime - $scriptStartTime).TotalSeconds.ToString()
  233 + Write-Output "Pre-processing the project file finished running at $($scriptFinishTime.TimeOfDay.ToString()). Completed in $scriptElapsedTimeInSeconds seconds."
  234 +}
  235 +
  236 +# Process the Project File and make sure the assembly exists where NuGet.exe will expect it to be.
  237 +Ensure-AssemblyFileExistsWhereNuGetExpectsItToBe -ProjectFilePath $ProjectFilePath -OutputDirectory $OutputDirectory -Configuration $BuildConfiguration -Platform $BuildPlatform
  238 +#-----
  239 +
  240 +# Create the new NuGet package.
  241 +$nuGetPackageFilePath = & "$THIS_SCRIPTS_DIRECTORY_PATH\New-NuGetPackage.ps1" -ProjectFilePath "$ProjectFilePath" -VersionNumber $versionNumber -ReleaseNotes $releaseNotes -PackOptions "-OutputDirectory ""$OutputDirectory"" -Properties $packProperties -NonInteractive $packOptions" -DoNotUpdateNuSpecFile -NoPrompt -Verbose
  242 +
  243 +# If the NuGet package file should be renamed to include the Configuration and Platform.
  244 +if ($appendConfigurationAndPlatformToNuGetPackageFileName)
  245 +{
  246 + # Build the new desired NuGet package file path.
  247 + $nuGetPackageFileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($nuGetPackageFilePath)
  248 + $nuGetPackageFileExtension = [System.IO.Path]::GetExtension($nuGetPackageFilePath)
  249 + $desiredNuGetPackageFileName = "$nuGetPackageFileNameWithoutExtension.$BuildConfiguration.$BuildPlatform$nuGetPackageFileExtension"
  250 + $desiredNuGetPackageFilePath = Join-Path -Path (Split-Path $nuGetPackageFilePath -Parent) -ChildPath $desiredNuGetPackageFileName
  251 +
  252 + # If the NuGet package file exists, rename it.
  253 + if (Test-Path -Path $nugetPackageFilePath -PathType Leaf)
  254 + {
  255 + # If a file with the desired name already exists, we must delete that file first bfeore doing the rename.
  256 + if (Test-Path -Path $desiredNuGetPackageFilePath -PathType Leaf)
  257 + { Remove-Item -Path $desiredNuGetPackageFilePath -Force }
  258 +
  259 + # Rename the NuGet package file name to the desired file name.
  260 + Rename-Item -Path $nugetPackageFilePath -NewName $desiredNuGetPackageFilePath -Force
  261 +
  262 + # Display that the NuGet package file was renamed.
  263 + Write-Output "'$nuGetPackageFilePath' was renamed to '$desiredNuGetPackageFilePath'."
  264 + }
  265 + else
  266 + { Write-Warning "Could not find NuGet package at '$nugetPackageFilePath', so it was not renamed to '$desiredNuGetPackageFilePath'." }
  267 +
  268 + # Save the new NuGet package file path.
  269 + $nuGetPackageFilePath = $desiredNuGetPackageFilePath
  270 +
  271 + # If a Symbols NuGet package was specified to be created too, rename it as well.
  272 + if ($packOptions -like '*-Symbols*')
  273 + {
  274 + # Build the new desired Symbols NuGet package file path.
  275 + $desiredSymbolsNuGetPackageFileName = "$nuGetPackageFileNameWithoutExtension.$BuildConfiguration.$BuildPlatform.symbols$nuGetPackageFileExtension"
  276 + $desiredSymbolsNuGetPackageFilePath = Join-Path -Path (Split-Path $nuGetPackageFilePath -Parent) -ChildPath $desiredSymbolsNuGetPackageFileName
  277 +
  278 + # Construct the path of what the original Symbols NuGet package should be, and if it exists, rename it to the desired file name.
  279 + $originalSymbolsNuGetPackageFileName = "$nuGetPackageFileNameWithoutExtension.symbols$nuGetPackageFileExtension"
  280 + $originalSymbolsNuGetPackageFilePath = Join-Path -Path (Split-Path $nuGetPackageFilePath -Parent) -ChildPath $originalSymbolsNuGetPackageFileName
  281 + if (Test-Path -Path $originalSymbolsNuGetPackageFilePath -PathType Leaf)
  282 + {
  283 + # Rename the Symbols NuGet package to the desired name.
  284 + Rename-Item -Path $originalSymbolsNuGetPackageFilePath -NewName $desiredSymbolsNuGetPackageFilePath -Force
  285 +
  286 + # Display that the NuGet package file was renamed.
  287 + Write-Output "'$originalSymbolsNuGetPackageFilePath' was renamed to '$desiredSymbolsNuGetPackageFilePath'."
  288 + }
  289 + else
  290 + { Write-Warning "Could not find Symbols NuGet package at '$originalSymbolsNuGetPackageFilePath', so it was not renamed to '$desiredSymbolsNuGetPackageFilePath'." }
  291 + }
  292 +}
  293 +
  294 +# Display the path to the NuGet package file.
  295 +Write-Output $nuGetPackageFilePath
0 \ No newline at end of file 296 \ No newline at end of file
Vrh.Web.Reporting/_CreateNewNuGetPackage/DoNotModify/New-NuGetPackage.ps1 0 → 100644
@@ -0,0 +1,1482 @@ @@ -0,0 +1,1482 @@
  1 +#Requires -Version 2.0
  2 +<#
  3 + .SYNOPSIS
  4 + Creates a NuGet Package (.nupkg) file from the given Project or NuSpec file, and optionally uploads it to a NuGet Gallery.
  5 +
  6 + .DESCRIPTION
  7 + Creates a NuGet Package (.nupkg) file from the given Project or NuSpec file.
  8 + Additional parameters may be provided to also upload the new NuGet package to a NuGet Gallery.
  9 + If an "-OutputDirectory" is not provided via the PackOptions parameter, the default is to place the .nupkg file in a "New-NuGetPackages" directory in the same directory as the .nuspec or project file being packed.
  10 + If a NuGet Package file is specified (rather than a Project or NuSpec file), we will simply push that package to the NuGet Gallery.
  11 +
  12 + .PARAMETER NuSpecFilePath
  13 + The path to the .nuspec file to pack.
  14 + If you intend to pack a project file that has an accompanying .nuspec file, use the ProjectFilePath parameter instead.
  15 +
  16 + .PARAMETER ProjectFilePath
  17 + The path to the project file (e.g. .csproj, .vbproj, .fsproj) to pack.
  18 + If packing a project file that has an accompanying .nuspec file, the nuspec file will automatically be picked up by the NuGet executable.
  19 +
  20 + .PARAMETER PackageFilePath
  21 + The path to the NuGet package file (.nupkg) to push to the NuGet gallery.
  22 + If provided a new package will not be created; we will simply push to specified NuGet package to the NuGet gallery.
  23 +
  24 + .PARAMETER VersionNumber
  25 + The version number to use for the NuGet package.
  26 + The version element in the .nuspec file (if available) will be updated with the given value unless the DoNotUpdateNuSpecFile switch is provided.
  27 + If this parameter is not provided then you will be prompted for the version number to use (unless the NoPrompt or NoPromptForVersionNumber switch is provided).
  28 + If the "-Version" parameter is provided in the PackOptions, that version will be used for the NuGet package, but this version will be used to update the .nuspec file (if available).
  29 +
  30 + .PARAMETER ReleaseNotes
  31 + The release notes to use for the NuGet package.
  32 + The release notes element in the .nuspec file (if available) will be updated with the given value unless the DoNotUpdateNuSpecFile switch is provided.
  33 +
  34 + .PARAMETER PackOptions
  35 + The arguments to pass to NuGet's Pack command. These will be passed to the NuGet executable as-is, so be sure to follow the NuGet's required syntax.
  36 + By default this is set to "-Build" in order to be able to create a package from a project that has not been manually built yet.
  37 + See http://docs.nuget.org/docs/reference/command-line-reference for valid parameters.
  38 +
  39 + .PARAMETER PushPackageToNuGetGallery
  40 + If this switch is provided the NuGet package will be pushed to the NuGet gallery.
  41 + Use the PushOptions to specify a custom gallery to push to, or an API key if required.
  42 +
  43 + .PARAMETER PushOptions
  44 + The arguments to pass to NuGet's Push command. These will be passed to the NuGet executable as-is, so be sure to follow the NuGet's required syntax.
  45 + See http://docs.nuget.org/docs/reference/command-line-reference for valid parameters.
  46 +
  47 + .PARAMETER DeletePackageAfterPush
  48 + If this switch is provided and the package is successfully pushed to a NuGet gallery, the NuGet package file will then be deleted.
  49 +
  50 + .PARAMETER NoPrompt
  51 + If this switch is provided the user will not be prompted for the version number or release notes; the current ones in the .nuspec file will be used (if available).
  52 + The user will not be prompted for any other form of input either, such as if they want to push the package to a gallery, or to give input before the script exits when an error occurs.
  53 + This parameter should be provided when an automated mechanism is running this script (e.g. an automated build system).
  54 +
  55 + .PARAMETER NoPromptExceptOnError
  56 + The same as NoPrompt except if an error occurs the user will be prompted for input before the script exists, making sure they are notified that an error occurred.
  57 + If both this and the NoPrompt switch are provided, the NoPrompt switch will be used.
  58 + If both this and the NoPromptForInputOnError switch are provided, it is the same as providing the NoPrompt switch.
  59 +
  60 + .PARAMETER NoPromptForVersionNumber
  61 + If this switch is provided the user will not be prompted for the version number; the one in the .nuspec file will be used (if available).
  62 +
  63 + .PARAMETER NoPromptForReleaseNotes
  64 + If this switch is provided the user will not be prompted for the release notes; the ones in the .nuspec file will be used (if available).
  65 +
  66 + .PARAMETER NoPromptForPushPackageToNuGetGallery
  67 + If this switch is provided the user will not be asked if they want to push the new package to the NuGet Gallery when the PushPackageToNuGetGallery switch is not provided.
  68 +
  69 + .PARAMETER NoPromptForInputOnError
  70 + If this switch is provided the user will not be prompted for input before the script exits when an error occurs, so they may not notice than an error occurred.
  71 +
  72 + .PARAMETER UsePowerShellPrompts
  73 + If this switch is provided any prompts for user input will be made via the PowerShell console, rather than the regular GUI components.
  74 + This may be preferable when attempting to pipe input into the cmdlet.
  75 +
  76 + .PARAMETER DoNotUpdateNuSpecFile
  77 + If this switch is provided a backup of the .nuspec file (if available) will be made, changes will be made to the original .nuspec file in order to
  78 + properly perform the pack, and then the original file will be restored once the pack is complete.
  79 +
  80 + .PARAMETER NuGetExecutableFilePath
  81 + The full path to NuGet.exe.
  82 + If not provided it is assumed that NuGet.exe is in the same directory as this script, or that NuGet.exe has been added to your PATH and can be called directly from the command prompt.
  83 +
  84 + .PARAMETER UpdateNuGetExecutable
  85 + If this switch is provided "NuGet.exe update -self" will be performed before packing or pushing anything.
  86 + Provide this switch to ensure your NuGet executable is always up-to-date on the latest version.
  87 +
  88 + .EXAMPLE
  89 + & .\New-NuGetPackage.ps1
  90 +
  91 + Run the script without any parameters (e.g. as if it was ran directly from Windows Explorer).
  92 + This will prompt the user for a .nuspec, project, or .nupkg file if one is not found in the same directory as the script, as well as for any other input that is required.
  93 + This assumes that you are currently in the same directory as the New-NuGetPackage.ps1 script, since a relative path is supplied.
  94 +
  95 + .EXAMPLE
  96 + & "C:\Some Folder\New-NuGetPackage.ps1" -NuSpecFilePath ".\Some Folder\SomeNuSpecFile.nuspec" -Verbose
  97 +
  98 + Create a new package from the SomeNuSpecFile.nuspec file.
  99 + This can be ran from any directory since an absolute path to the New-NuGetPackage.ps1 script is supplied.
  100 + Additional information will be displayed about the operations being performed because the -Verbose switch was supplied.
  101 +
  102 + .EXAMPLE
  103 + & .\New-NuGetPackage.ps1 -ProjectFilePath "C:\Some Folder\TestProject.csproj" -VersionNumber "1.1" -ReleaseNotes "Version 1.1 contains many bug fixes."
  104 +
  105 + Create a new package from the TestProject.csproj file.
  106 + Because the VersionNumber and ReleaseNotes parameters are provided, the user will not be prompted for them.
  107 + If "C:\Some Folder\TestProject.nuspec" exists, it will automatically be picked up and used when creating the package; if it contained a version number or release notes, they will be overwritten with the ones provided.
  108 +
  109 + .EXAMPLE
  110 + & .\New-NuGetPackage.ps1 -ProjectFilePath "C:\Some Folder\TestProject.csproj" -PackOptions "-Build -OutputDirectory ""C:\Output""" -UsePowerShellPrompts
  111 +
  112 + Create a new package from the TestProject.csproj file, building the project before packing it and saving the package in "C:\Output".
  113 + Because the UsePowerShellPrompts parameter was provided, all prompts will be made via the PowerShell console instead of GUI popups.
  114 +
  115 + .EXAMPLE
  116 + & .\New-NuGetPackage.ps1 -NuSpecFilePath "C:\Some Folder\SomeNuSpecFile.nuspec" -NoPrompt
  117 +
  118 + Create a new package from SomeNuSpecFile.nuspec without prompting the user for anything, so the existing version number and release notes in the .nuspec file will be used.
  119 +
  120 + .EXAMPLE
  121 + & .\New-NuGetPackage.ps1 -NuSpecFilePath ".\Some Folder\SomeNuSpecFile.nuspec" -VersionNumber "9.9.9.9" -DoNotUpdateNuSpecFile
  122 +
  123 + Create a new package with version number "9.9.9.9" from SomeNuSpecFile.nuspec without saving the changes to the file.
  124 +
  125 + .EXAMPLE
  126 + & .\New-NuGetPackage.ps1 -NuSpecFilePath "C:\Some Folder\SomeNuSpecFile.nuspec" -PushPackageToNuGetGallery -PushOptions "-Source ""http://my.server.com/MyNuGetGallery"" -ApiKey ""EAE1E980-5ECB-4453-9623-F0A0250E3A57"""
  127 +
  128 + Create a new package from SomeNuSpecFile.nuspec and push it to a custom NuGet gallery using the user's unique Api Key.
  129 +
  130 + .EXAMPLE
  131 + & .\New-NuGetPackage.ps1 -NuSpecFilePath "C:\Some Folder\SomeNuSpecFile.nuspec" -NuGetExecutableFilePath "C:\Utils\NuGet.exe"
  132 +
  133 + Create a new package from SomeNuSpecFile.nuspec by specifying the path to the NuGet executable (required when NuGet.exe is not in the user's PATH).
  134 +
  135 + .EXAMPLE
  136 + & New-NuGetPackage.ps1 -PackageFilePath "C:\Some Folder\MyPackage.nupkg"
  137 +
  138 + Push the existing "MyPackage.nupkg" file to the NuGet gallery.
  139 + User will be prompted to confirm that they want to push the package; to avoid this prompt supply the -PushPackageToNuGetGallery switch.
  140 +
  141 + .EXAMPLE
  142 + & .\New-NuGetPackage.ps1 -NoPromptForInputOnError -UpdateNuGetExecutable
  143 +
  144 + Create a new package or push an existing package by auto-finding the .nuspec, project, or .nupkg file to use, and prompting for one if none are found.
  145 + Will not prompt the user for input before exitting the script when an error occurs.
  146 +
  147 + .OUTPUTS
  148 + Returns the full path to the NuGet package that was created.
  149 + If a NuGet package was not required to be created (e.g. you were just pushing an existing package), then nothing is returned.
  150 + Use the -Verbose switch to see more detailed information about the operations performed.
  151 +
  152 + .LINK
  153 + Project home: https://newnugetpackage.codeplex.com
  154 +
  155 + .NOTES
  156 + Author: Daniel Schroeder
  157 + Version: 1.5.9
  158 +
  159 + This script is designed to be called from PowerShell or ran directly from Windows Explorer.
  160 + If this script is ran without the $NuSpecFilePath, $ProjectFilePath, and $PackageFilePath parameters, it will automatically search for a .nuspec, project, or package file in the
  161 + same directory as the script and use it if one is found. If none or more than one are found, the user will be prompted to specify the file to use.
  162 +#>
  163 +[CmdletBinding(DefaultParameterSetName="PackUsingNuSpec")]
  164 +param
  165 +(
  166 + [parameter(Position=1,Mandatory=$false,ParameterSetName="PackUsingNuSpec")]
  167 + [ValidateScript({Test-Path $_ -PathType Leaf})]
  168 + [string] $NuSpecFilePath,
  169 +
  170 + [parameter(Position=1,Mandatory=$false,ParameterSetName="PackUsingProject")]
  171 + [ValidateScript({Test-Path $_ -PathType Leaf})]
  172 + [string] $ProjectFilePath,
  173 +
  174 + [parameter(Position=1,Mandatory=$false,ParameterSetName="PushExistingPackage")]
  175 + [ValidateScript({Test-Path $_ -PathType Leaf})]
  176 + [string] $PackageFilePath,
  177 +
  178 + [parameter(Position=2,Mandatory=$false,HelpMessage="The new version number to use for the NuGet Package.",ParameterSetName="PackUsingNuSpec")]
  179 + [parameter(Position=2,Mandatory=$false,HelpMessage="The new version number to use for the NuGet Package.",ParameterSetName="PackUsingProject")]
  180 + [ValidatePattern('(?i)(^\d+(\.\d+){1,3}(-[a-zA-Z0-9\-\.\+]+)?$)|(^(\$version\$)$)|(^$)')] # This validation is duplicated in the Update-NuSpecFile function, so update it in both places. This regex does not represent Sematic Versioning, but the versioning that NuGet.exe allows.
  181 + [Alias("Version")]
  182 + [Alias("V")]
  183 + [string] $VersionNumber,
  184 +
  185 + [parameter(ParameterSetName="PackUsingNuSpec")]
  186 + [parameter(ParameterSetName="PackUsingProject")]
  187 + [Alias("Notes")]
  188 + [string] $ReleaseNotes,
  189 +
  190 + [parameter(ParameterSetName="PackUsingNuSpec")]
  191 + [parameter(ParameterSetName="PackUsingProject")]
  192 + [Alias("PO")]
  193 + [string] $PackOptions = "-Build", # Build projects by default to make sure the files to pack exist.
  194 +
  195 + [Alias("Push")]
  196 + [switch] $PushPackageToNuGetGallery,
  197 +
  198 + [string] $PushOptions,
  199 +
  200 + [Alias("DPAP")]
  201 + [switch] $DeletePackageAfterPush,
  202 +
  203 + [Alias("NP")]
  204 + [switch] $NoPrompt,
  205 +
  206 + [Alias("NPEOE")]
  207 + [switch] $NoPromptExceptOnError,
  208 +
  209 + [parameter(ParameterSetName="PackUsingNuSpec")]
  210 + [parameter(ParameterSetName="PackUsingProject")]
  211 + [Alias("NPFVN")]
  212 + [switch] $NoPromptForVersionNumber,
  213 +
  214 + [parameter(ParameterSetName="PackUsingNuSpec")]
  215 + [parameter(ParameterSetName="PackUsingProject")]
  216 + [Alias("NPFRN")]
  217 + [switch] $NoPromptForReleaseNotes,
  218 +
  219 + [Alias("NPFPPTNG")]
  220 + [switch] $NoPromptForPushPackageToNuGetGallery,
  221 +
  222 + [Alias("NPFIOE")]
  223 + [switch] $NoPromptForInputOnError,
  224 +
  225 + [Alias("UPSP")]
  226 + [switch] $UsePowerShellPrompts,
  227 +
  228 + [parameter(ParameterSetName="PackUsingNuSpec")]
  229 + [parameter(ParameterSetName="PackUsingProject")]
  230 + [Alias("NoUpdate")]
  231 + [switch] $DoNotUpdateNuSpecFile,
  232 +
  233 + [Alias("NuGet")]
  234 + [string] $NuGetExecutableFilePath,
  235 +
  236 + [Alias("UNE")]
  237 + [switch] $UpdateNuGetExecutable
  238 +)
  239 +
  240 +# Turn on Strict Mode to help catch syntax-related errors.
  241 +# This must come after a script's/function's param section.
  242 +# Forces a function to be the first non-comment code to appear in a PowerShell Module.
  243 +Set-StrictMode -Version Latest
  244 +
  245 +# Default the ParameterSet variables that may not have been set depending on which parameter set is being used. This is required for PowerShell v2.0 compatibility.
  246 +if (!(Test-Path Variable:Private:NuSpecFilePath)) { $NuSpecFilePath = $null }
  247 +if (!(Test-Path Variable:Private:ProjectFilePath)) { $ProjectFilePath = $null }
  248 +if (!(Test-Path Variable:Private:PackageFilePath)) { $PackageFilePath = $null }
  249 +if (!(Test-Path Variable:Private:VersionNumber)) { $VersionNumber = $null }
  250 +if (!(Test-Path Variable:Private:ReleaseNotes)) { $ReleaseNotes = $null }
  251 +if (!(Test-Path Variable:Private:PackOptions)) { $PackOptions = $null }
  252 +if (!(Test-Path Variable:Private:NoPromptForVersionNumber)) { $NoPromptForVersionNumber = $false }
  253 +if (!(Test-Path Variable:Private:NoPromptForReleaseNotes)) { $NoPromptForReleaseNotes = $false }
  254 +if (!(Test-Path Variable:Private:DoNotUpdateNuSpecFile)) { $DoNotUpdateNuSpecFile = $false }
  255 +
  256 +
  257 +#==========================================================
  258 +# Define any necessary global variables, such as file paths.
  259 +#==========================================================
  260 +
  261 +# Import any necessary assemblies.
  262 +Add-Type -AssemblyName System.Windows.Forms
  263 +Add-Type -AssemblyName Microsoft.VisualBasic
  264 +
  265 +# Get the directory that this script is in.
  266 +$THIS_SCRIPTS_DIRECTORY_PATH = Split-Path $script:MyInvocation.MyCommand.Path
  267 +
  268 +# The list of project type extensions that NuGet supports packing.
  269 +$VALID_NUGET_PROJECT_TYPE_EXTENSIONS_ARRAY = @(".csproj", ".vbproj", ".fsproj")
  270 +
  271 +$VALID_NUGET_PROJECT_TYPE_EXTENSIONS_WITH_WILDCARD_ARRAY = @()
  272 +foreach ($extension in $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_ARRAY)
  273 +{
  274 + $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_WITH_WILDCARD_ARRAY += "*$extension"
  275 +}
  276 +
  277 +# The directory to put the NuGet package into if one is not supplied.
  278 +$DEFAULT_DIRECTORY_TO_PUT_NUGET_PACKAGES_IN = "New-NuGetPackages"
  279 +
  280 +# The file path where the API keys are saved.
  281 +$NUGET_CONFIG_FILE_PATH = Join-Path $env:APPDATA "NuGet\NuGet.config"
  282 +
  283 +# The default NuGet source to push to when one is not explicitly provided.
  284 +$DEFAULT_NUGET_SOURCE_TO_PUSH_TO = "https://www.nuget.org"
  285 +
  286 +#==========================================================
  287 +# Strings to look for in console app output.
  288 +# If running in a non-english language, these strings will need to be changed to the strings returned by the console apps when running in the non-english language.
  289 +#==========================================================
  290 +
  291 +# TF.exe output strings.
  292 +$TF_EXE_NO_WORKING_FOLDER_MAPPING_ERROR_MESSAGE = 'There is no working folder mapping for'
  293 +$TF_EXE_NO_PENDING_CHANGES_MESSAGE = 'There are no pending changes.'
  294 +$TF_EXE_KEYWORD_IN_PENDING_CHANGES_MESSAGE = 'change\(s\)' # Escape regular expression characters.
  295 +
  296 +# NuGet.exe output strings.
  297 +$NUGET_EXE_VERSION_NUMBER_REGEX = [regex] "(?i)(NuGet Version: (?<Version>\d+\.\d+\.\d+\.\d+).)"
  298 +$NUGET_EXE_SUCCESSFULLY_CREATED_PACKAGE_MESSAGE_REGEX = [regex] "(?i)(Successfully created package '(?<FilePath>.*?)'.)"
  299 +$NUGET_EXE_SUCCESSFULLY_PUSHED_PACKAGE_MESSAGE = 'Your package was pushed.'
  300 +$NUGET_EXE_SUCCESSFULLY_SAVED_API_KEY_MESSAGE = "The API Key '{0}' was saved for '{1}'."
  301 +$NUGET_EXE_SUCCESSFULLY_UPDATED_TO_NEW_VERSION = 'Update successful.'
  302 +
  303 +#==========================================================
  304 +# Define functions used by the script.
  305 +#==========================================================
  306 +
  307 +# Catch any exceptions thrown, display the error message, wait for input if appropriate, and then stop the script.
  308 +trap [Exception]
  309 +{
  310 + $errorMessage = $_
  311 + Write-Host "An error occurred while running New-NuGetPackage script:`n$errorMessage`n" -Foreground Red
  312 +
  313 + if (!$NoPromptForInputOnError)
  314 + {
  315 + # If we should prompt directly from PowerShell.
  316 + if ($UsePowerShellPrompts)
  317 + {
  318 + Write-Host "Press any key to continue ..."
  319 + $x = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp")
  320 + }
  321 + # Else use a nice GUI prompt.
  322 + else
  323 + {
  324 + $VersionNumber = Read-MessageBoxDialog -Message $errorMessage -WindowTitle "Error Occurred Running New-NuGetPackage Script" -Buttons OK -Icon Error
  325 + }
  326 + }
  327 + break
  328 +}
  329 +
  330 +# Function to return the path to backup the NuSpec file to if needed.
  331 +function Get-NuSpecBackupFilePath { return "$NuSpecFilePath.backup" }
  332 +
  333 +# PowerShell v2.0 compatible version of [string]::IsNullOrWhitespace.
  334 +function Test-StringIsNullOrWhitespace([string] $string)
  335 +{
  336 + if ($string -ne $null) { $string = $string.Trim() }
  337 + return [string]::IsNullOrEmpty($string)
  338 +}
  339 +
  340 +# Function to update the $NuSpecFilePath (.nuspec file) with the appropriate information before using it to create the NuGet package.
  341 +function Update-NuSpecFile
  342 +{
  343 + Write-Verbose "Starting process to update the nuspec file '$NuSpecFilePath'..."
  344 +
  345 + # If we don't have a NuSpec file to update, throw an error that something went wrong.
  346 + if (!(Test-Path $NuSpecFilePath))
  347 + {
  348 + throw "The Update-NuSpecFile function was called with an invalid NuSpecFilePath; this should not happen. There must be a bug in this script."
  349 + }
  350 +
  351 + # Validate that the NuSpec file is a valid xml file.
  352 + try
  353 + {
  354 + $nuSpecXml = New-Object System.Xml.XmlDocument
  355 + $nuSpecXml.Load($NuSpecFilePath) # Will throw an exception if it is unable to load the xml properly.
  356 + $nuSpecXml = $null # Release the memory.
  357 + }
  358 + catch
  359 + {
  360 + throw ("An error occurred loading the nuspec xml file '{0}': {1}" -f $NuSpecFilePath, $_.Exception.Message)
  361 + }
  362 +
  363 + # Get the NuSpec file contents and Last Write Time before we make any changes to it, so we can determine if we did in fact make changes to it later (and undo the checkout from TFS if we didn't).
  364 + $script:nuSpecFileContentsBeforeCheckout = [System.IO.File]::ReadAllText($NuSpecFilePath)
  365 + $script:nuSpecLastWriteTimeBeforeCheckout = [System.IO.File]::GetLastWriteTime($NuSpecFilePath)
  366 +
  367 + # Try and check the file out of TFS.
  368 + $script:nuSpecFileWasAlreadyCheckedOut = Tfs-IsItemCheckedOut -Path $NuSpecFilePath
  369 + if ($script:nuSpecFileWasAlreadyCheckedOut -eq $false) { Tfs-Checkout -Path $NuSpecFilePath }
  370 +
  371 + # If we shouldn't update to the .nuspec file permanently, create a backup that we can restore from after.
  372 + if ($DoNotUpdateNuSpecFile)
  373 + {
  374 + Copy-Item -Path $NuSpecFilePath -Destination (Get-NuSpecBackupFilePath) -Force
  375 + }
  376 +
  377 + # Get the current version number from the .nuspec file.
  378 + $currentVersionNumber = Get-NuSpecVersionNumber -NuSpecFilePath $NuSpecFilePath
  379 +
  380 + # If an explicit Version Number was not provided, prompt for it.
  381 + if (Test-StringIsNullOrWhitespace $VersionNumber)
  382 + {
  383 + # If we shouldn't prompt for a version number, just use the existing one from the NuSpec file (if it exists).
  384 + if ($NoPromptForVersionNumber)
  385 + {
  386 + $VersionNumber = $currentVersionNumber
  387 + }
  388 + # Else prompt the user for the version number to use.
  389 + else
  390 + {
  391 + $promptMessage = 'Enter the NuGet package version number to use (x.x[.x.x] or $version$ if packing a project file)'
  392 +
  393 + # If we should prompt directly from PowerShell.
  394 + if ($UsePowerShellPrompts)
  395 + {
  396 + $VersionNumber = Read-Host "$promptMessage. Current value in the .nuspec file is:`n$currentVersionNumber`n"
  397 + }
  398 + # Else use a nice GUI prompt.
  399 + else
  400 + {
  401 + $VersionNumber = Read-InputBoxDialog -Message "$promptMessage`:" -WindowTitle "NuGet Package Version Number" -DefaultText $currentVersionNumber
  402 + }
  403 + }
  404 +
  405 + # The script's parameter validation does not seem to be enforced (probably because this is inside a function), so re-enforce it here.
  406 + $rxVersionNumberValidation = [regex] '(?i)(^\d+(\.\d+){1,3}(-[a-zA-Z0-9\-\.\+]+)?$)|(^(\$version\$)$)|(^$)' # This validation is duplicated in the script's $Version parameter validation, so update it in both places. This regex does not represent Sematic Versioning, but the versioning that NuGet.exe allows.
  407 +
  408 + # If the user cancelled the prompt or did not provide a valid version number, exit the script.
  409 + if ((Test-StringIsNullOrWhitespace $VersionNumber) -or !$rxVersionNumberValidation.IsMatch($VersionNumber))
  410 + {
  411 + throw "A valid version number to use for the NuGet package was not provided, so exiting script. The version number provided was '$VersionNumber', which does not conform to the Semantic Versioning guidelines specified at http://semver.org."
  412 + }
  413 + }
  414 +
  415 + # Insert the given version number into the .nuspec file, if it is different.
  416 + if ($currentVersionNumber -ne $VersionNumber)
  417 + {
  418 + Set-NuSpecVersionNumber -NuSpecFilePath $NuSpecFilePath -NewVersionNumber $VersionNumber
  419 + }
  420 +
  421 + # Get the current release notes from the .nuspec file.
  422 + $currentReleaseNotes = Get-NuSpecReleaseNotes -NuSpecFilePath $NuSpecFilePath
  423 +
  424 + # If the Release Notes were not provided, prompt for them.
  425 + if (Test-StringIsNullOrWhitespace $ReleaseNotes)
  426 + {
  427 + # If we shouldn't prompt for the release notes, just use the existing ones from the NuSpec file (if it exists).
  428 + if ($NoPromptForReleaseNotes)
  429 + {
  430 + $ReleaseNotes = $currentReleaseNotes
  431 + }
  432 + # Else prompt the user for the Release Notes to add to the .nuspec file.
  433 + else
  434 + {
  435 + $promptMessage = "Please enter the release notes to include in the new NuGet package"
  436 +
  437 + # If we should prompt directly from PowerShell.
  438 + if ($UsePowerShellPrompts)
  439 + {
  440 + $ReleaseNotes = Read-Host "$promptMessage. Current value in the .nuspec file is:`n$currentReleaseNotes`n"
  441 + }
  442 + # Else use a nice GUI prompt.
  443 + else
  444 + {
  445 + $ReleaseNotes = Read-MultiLineInputBoxDialog -Message "$promptMessage`:" -WindowTitle "Enter Release Notes For New Package" -DefaultText $currentReleaseNotes
  446 + }
  447 +
  448 + # If the user cancelled the release notes prompt, exit the script.
  449 + if ($ReleaseNotes -eq $null)
  450 + {
  451 + throw "User cancelled the Release Notes prompt, so exiting script."
  452 + }
  453 + }
  454 + }
  455 +
  456 + # Insert the given Release Notes into the .nuspec file if some were provided, and they are different than the current ones.
  457 + if ($currentReleaseNotes -ne $ReleaseNotes)
  458 + {
  459 + Set-NuSpecReleaseNotes -NuSpecFilePath $NuSpecFilePath -NewReleaseNotes $ReleaseNotes
  460 + }
  461 +
  462 + Write-Verbose "Finished process to update the nuspec file '$NuSpecFilePath'."
  463 +}
  464 +
  465 +function Get-NuSpecVersionNumber([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string] $NuSpecFilePath)
  466 +{
  467 + # Read in the file contents and return the version element's value.
  468 + $fileContents = New-Object System.Xml.XmlDocument
  469 + $fileContents.Load($NuSpecFilePath)
  470 + return Get-XmlElementsTextValue -XmlDocument $fileContents -ElementPath "package.metadata.version"
  471 +}
  472 +
  473 +function Set-NuSpecVersionNumber([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string] $NuSpecFilePath, [parameter(Position=2,Mandatory=$true)][string] $NewVersionNumber)
  474 +{
  475 + # Read in the file contents, update the version element's value, and save the file.
  476 + $fileContents = New-Object System.Xml.XmlDocument
  477 + $fileContents.Load($NuSpecFilePath)
  478 + Set-XmlElementsTextValue -XmlDocument $fileContents -ElementPath "package.metadata.version" -TextValue $NewVersionNumber
  479 + $fileContents.Save($NuSpecFilePath)
  480 +}
  481 +
  482 +function Get-NuSpecReleaseNotes([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string] $NuSpecFilePath)
  483 +{
  484 + # Read in the file contents and return the version element's value.
  485 + $fileContents = New-Object System.Xml.XmlDocument
  486 + $fileContents.Load($NuSpecFilePath)
  487 + return Get-XmlElementsTextValue -XmlDocument $fileContents -ElementPath "package.metadata.releaseNotes"
  488 +}
  489 +
  490 +function Set-NuSpecReleaseNotes([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string] $NuSpecFilePath, [parameter(Position=2)][string] $NewReleaseNotes)
  491 +{
  492 + # Read in the file contents, update the version element's value, and save the file.
  493 + $fileContents = New-Object System.Xml.XmlDocument
  494 + $fileContents.Load($NuSpecFilePath)
  495 + Set-XmlElementsTextValue -XmlDocument $fileContents -ElementPath "package.metadata.releaseNotes" -TextValue $NewReleaseNotes
  496 + $fileContents.Save($NuSpecFilePath)
  497 +}
  498 +
  499 +function Get-XmlNamespaceManager([xml]$XmlDocument, [string]$NamespaceURI = "")
  500 +{
  501 + # If a Namespace URI was not given, use the Xml document's default namespace.
  502 + if ([string]::IsNullOrEmpty($NamespaceURI)) { $NamespaceURI = $XmlDocument.DocumentElement.NamespaceURI }
  503 +
  504 + # In order for SelectSingleNode() to actually work, we need to use the fully qualified node path along with an Xml Namespace Manager, so set them up.
  505 + [System.Xml.XmlNamespaceManager]$xmlNsManager = New-Object System.Xml.XmlNamespaceManager($XmlDocument.NameTable)
  506 + $xmlNsManager.AddNamespace("ns", $NamespaceURI)
  507 + return ,$xmlNsManager # Need to put the comma before the variable name so that PowerShell doesn't convert it into an Object[].
  508 +}
  509 +
  510 +function Get-FullyQualifiedXmlNodePath([string]$NodePath, [string]$NodeSeparatorCharacter = '.')
  511 +{
  512 + return "/ns:$($NodePath.Replace($($NodeSeparatorCharacter), '/ns:'))"
  513 +}
  514 +
  515 +function Get-XmlNode([xml]$XmlDocument, [string]$NodePath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  516 +{
  517 + $xmlNsManager = Get-XmlNamespaceManager -XmlDocument $XmlDocument -NamespaceURI $NamespaceURI
  518 + [string]$fullyQualifiedNodePath = Get-FullyQualifiedXmlNodePath -NodePath $NodePath -NodeSeparatorCharacter $NodeSeparatorCharacter
  519 +
  520 + # Try and get the node, then return it. Returns $null if the node was not found.
  521 + $node = $XmlDocument.SelectSingleNode($fullyQualifiedNodePath, $xmlNsManager)
  522 + return $node
  523 +}
  524 +
  525 +function Get-XmlNodes([xml]$XmlDocument, [string]$NodePath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  526 +{
  527 + $xmlNsManager = Get-XmlNamespaceManager -XmlDocument $XmlDocument -NamespaceURI $NamespaceURI
  528 + [string]$fullyQualifiedNodePath = Get-FullyQualifiedXmlNodePath -NodePath $NodePath -NodeSeparatorCharacter $NodeSeparatorCharacter
  529 +
  530 + # Try and get the nodes, then return them. Returns $null if no nodes were found.
  531 + $nodes = $XmlDocument.SelectNodes($fullyQualifiedNodePath, $xmlNsManager)
  532 + return $nodes
  533 +}
  534 +
  535 +function Get-XmlElementsTextValue([xml]$XmlDocument, [string]$ElementPath, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  536 +{
  537 + # Try and get the node.
  538 + $node = Get-XmlNode -XmlDocument $XmlDocument -NodePath $ElementPath -NamespaceURI $NamespaceURI -NodeSeparatorCharacter $NodeSeparatorCharacter
  539 +
  540 + # If the node already exists, return its value, otherwise return null.
  541 + if ($node) { return $node.InnerText } else { return $null }
  542 +}
  543 +
  544 +function Set-XmlElementsTextValue([xml]$XmlDocument, [string]$ElementPath, [string]$TextValue, [string]$NamespaceURI = "", [string]$NodeSeparatorCharacter = '.')
  545 +{
  546 + # Try and get the node.
  547 + $node = Get-XmlNode -XmlDocument $XmlDocument -NodePath $ElementPath -NamespaceURI $NamespaceURI -NodeSeparatorCharacter $NodeSeparatorCharacter
  548 +
  549 + # If the node already exists, update its value.
  550 + if ($node)
  551 + {
  552 + $node.InnerText = $TextValue
  553 + }
  554 + # Else the node doesn't exist yet, so create it with the given value.
  555 + else
  556 + {
  557 + # Create the new element with the given value.
  558 + $elementName = $ElementPath.Substring($ElementPath.LastIndexOf($NodeSeparatorCharacter) + 1)
  559 + $element = $XmlDocument.CreateElement($elementName, $XmlDocument.DocumentElement.NamespaceURI)
  560 + $textNode = $XmlDocument.CreateTextNode($TextValue)
  561 + $element.AppendChild($textNode) > $null
  562 +
  563 + # Try and get the parent node.
  564 + $parentNodePath = $ElementPath.Substring(0, $ElementPath.LastIndexOf($NodeSeparatorCharacter))
  565 + $parentNode = Get-XmlNode -XmlDocument $XmlDocument -NodePath $parentNodePath -NamespaceURI $NamespaceURI -NodeSeparatorCharacter $NodeSeparatorCharacter
  566 +
  567 + if ($parentNode)
  568 + {
  569 + $parentNode.AppendChild($element) > $null
  570 + }
  571 + else
  572 + {
  573 + throw "$parentNodePath does not exist in the xml."
  574 + }
  575 + }
  576 +}
  577 +
  578 +# Show an Open File Dialog and return the file selected by the user.
  579 +function Read-OpenFileDialog([string]$WindowTitle, [string]$InitialDirectory, [string]$Filter = "All files (*.*)|*.*", [switch]$AllowMultiSelect)
  580 +{
  581 + Add-Type -AssemblyName System.Windows.Forms
  582 + $openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
  583 + $openFileDialog.Title = $WindowTitle
  584 + if (!(Test-StringIsNullOrWhitespace $InitialDirectory)) { $openFileDialog.InitialDirectory = $InitialDirectory }
  585 + $openFileDialog.Filter = $Filter
  586 + if ($AllowMultiSelect) { $openFileDialog.MultiSelect = $true }
  587 + $openFileDialog.ShowHelp = $true # Without this line the ShowDialog() function may hang depending on system configuration and running from console vs. ISE.
  588 + $openFileDialog.ShowDialog() > $null
  589 + if ($AllowMultiSelect) { return $openFileDialog.Filenames } else { return $openFileDialog.Filename }
  590 +}
  591 +
  592 +# Show message box popup and return the button clicked by the user.
  593 +function Read-MessageBoxDialog([string]$Message, [string]$WindowTitle, [System.Windows.Forms.MessageBoxButtons]$Buttons = [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]$Icon = [System.Windows.Forms.MessageBoxIcon]::None)
  594 +{
  595 + Add-Type -AssemblyName System.Windows.Forms
  596 + return [System.Windows.Forms.MessageBox]::Show($Message, $WindowTitle, $Buttons, $Icon)
  597 +}
  598 +
  599 +# Show input box popup and return the value entered by the user.
  600 +function Read-InputBoxDialog([string]$Message, [string]$WindowTitle, [string]$DefaultText)
  601 +{
  602 + Add-Type -AssemblyName Microsoft.VisualBasic
  603 + return [Microsoft.VisualBasic.Interaction]::InputBox($Message, $WindowTitle, $DefaultText)
  604 +}
  605 +
  606 +function Read-MultiLineInputBoxDialog([string]$Message, [string]$WindowTitle, [string]$DefaultText)
  607 +{
  608 +<#
  609 + .SYNOPSIS
  610 + Prompts the user with a multi-line input box and returns the text they enter, or null if they cancelled the prompt.
  611 +
  612 + .DESCRIPTION
  613 + Prompts the user with a multi-line input box and returns the text they enter, or null if they cancelled the prompt.
  614 +
  615 + .PARAMETER Message
  616 + The message to display to the user explaining what text we are asking them to enter.
  617 +
  618 + .PARAMETER WindowTitle
  619 + The text to display on the prompt window's title.
  620 +
  621 + .PARAMETER DefaultText
  622 + The default text to show in the input box.
  623 +
  624 + .EXAMPLE
  625 + $userText = Read-MultiLineInputDialog "Input some text please:" "Get User's Input"
  626 +
  627 + Shows how to create a simple prompt to get mutli-line input from a user.
  628 +
  629 + .EXAMPLE
  630 + # Setup the default multi-line address to fill the input box with.
  631 + $defaultAddress = @'
  632 + John Doe
  633 + 123 St.
  634 + Some Town, SK, Canada
  635 + A1B 2C3
  636 + '@
  637 +
  638 + $address = Read-MultiLineInputDialog "Please enter your full address, including name, street, city, and postal code:" "Get User's Address" $defaultAddress
  639 + if ($address -eq $null)
  640 + {
  641 + Write-Error "You pressed the Cancel button on the multi-line input box."
  642 + }
  643 +
  644 + Prompts the user for their address and stores it in a variable, pre-filling the input box with a default multi-line address.
  645 + If the user pressed the Cancel button an error is written to the console.
  646 +
  647 + .EXAMPLE
  648 + $inputText = Read-MultiLineInputDialog -Message "If you have a really long message you can break it apart`nover two lines with the powershell newline character:" -WindowTitle "Window Title" -DefaultText "Default text for the input box."
  649 +
  650 + Shows how to break the second parameter (Message) up onto two lines using the powershell newline character (`n).
  651 + If you break the message up into more than two lines the extra lines will be hidden behind or show ontop of the TextBox.
  652 +
  653 + .NOTES
  654 + Name: Show-MultiLineInputDialog
  655 + Author: Daniel Schroeder (originally based on the code shown at http://technet.microsoft.com/en-us/library/ff730941.aspx)
  656 + Version: 1.0
  657 +#>
  658 + Add-Type -AssemblyName System.Drawing
  659 + Add-Type -AssemblyName System.Windows.Forms
  660 +
  661 + # Create the Label.
  662 + $label = New-Object System.Windows.Forms.Label
  663 + $label.Location = New-Object System.Drawing.Size(10,10)
  664 + $label.Size = New-Object System.Drawing.Size(280,20)
  665 + $label.AutoSize = $true
  666 + $label.Text = $Message
  667 +
  668 + # Create the TextBox used to capture the user's text.
  669 + $textBox = New-Object System.Windows.Forms.TextBox
  670 + $textBox.Location = New-Object System.Drawing.Size(10,40)
  671 + $textBox.Size = New-Object System.Drawing.Size(575,200)
  672 + $textBox.AcceptsReturn = $true
  673 + $textBox.AcceptsTab = $false
  674 + $textBox.Multiline = $true
  675 + $textBox.ScrollBars = 'Both'
  676 + $textBox.Text = $DefaultText
  677 +
  678 + # Create the OK button.
  679 + $okButton = New-Object System.Windows.Forms.Button
  680 + $okButton.Location = New-Object System.Drawing.Size(415,250)
  681 + $okButton.Size = New-Object System.Drawing.Size(75,25)
  682 + $okButton.Text = "OK"
  683 + $okButton.Add_Click({ $form.Tag = $textBox.Text; $form.Close() })
  684 +
  685 + # Create the Cancel button.
  686 + $cancelButton = New-Object System.Windows.Forms.Button
  687 + $cancelButton.Location = New-Object System.Drawing.Size(510,250)
  688 + $cancelButton.Size = New-Object System.Drawing.Size(75,25)
  689 + $cancelButton.Text = "Cancel"
  690 + $cancelButton.Add_Click({ $form.Tag = $null; $form.Close() })
  691 +
  692 + # Create the form.
  693 + $form = New-Object System.Windows.Forms.Form
  694 + $form.Text = $WindowTitle
  695 + $form.Size = New-Object System.Drawing.Size(610,320)
  696 + $form.FormBorderStyle = 'FixedSingle'
  697 + $form.StartPosition = "CenterScreen"
  698 + $form.AutoSizeMode = 'GrowAndShrink'
  699 + $form.Topmost = $True
  700 + $form.AcceptButton = $okButton
  701 + $form.CancelButton = $cancelButton
  702 + $form.ShowInTaskbar = $true
  703 +
  704 + # Add all of the controls to the form.
  705 + $form.Controls.Add($label)
  706 + $form.Controls.Add($textBox)
  707 + $form.Controls.Add($okButton)
  708 + $form.Controls.Add($cancelButton)
  709 +
  710 + # Initialize and show the form.
  711 + $form.Add_Shown({$form.Activate()})
  712 + $form.ShowDialog() > $null # Trash the text of the button that was clicked.
  713 +
  714 + # Return the text that the user entered.
  715 + return $form.Tag
  716 +}
  717 +
  718 +function Get-TfExecutablePath
  719 +{
  720 + # Get the latest visual studio IDE path.
  721 + $vsIdePath = ""
  722 + $vsCommonToolsPaths = @($env:VS140COMNTOOLS,$env:VS120COMNTOOLS,$env:VS110COMNTOOLS,$env:VS100COMNTOOLS)
  723 + $vsCommonToolsPaths = @($VsCommonToolsPaths | Where-Object {$_ -ne $null})
  724 +
  725 + # Loop through each version from largest to smallest.
  726 + foreach ($vsCommonToolsPath in $vsCommonToolsPaths)
  727 + {
  728 + if ($vsCommonToolsPath -ne $null)
  729 + {
  730 + $vsIdePath = "${vsCommonToolsPath}..\IDE\"
  731 + break
  732 + }
  733 + }
  734 +
  735 + # Get the path to tf.exe, and return an empty string if the file does not exist.
  736 + $tfPath = "${vsIdePath}tf.exe"
  737 + if (!(Test-Path -Path $tfPath))
  738 + {
  739 + Write-Verbose "Unable to find Visual Studio Common Tool Path, which is used to locate TF.exe."
  740 + return ""
  741 + }
  742 +
  743 + # Return the absolute path to tf.exe.
  744 + $tfPath = Resolve-Path $tfPath
  745 + return $tfPath
  746 +}
  747 +
  748 +function Tfs-Checkout
  749 +{
  750 + [CmdletBinding()]
  751 + param
  752 + (
  753 + [Parameter(Mandatory=$true, Position=0, HelpMessage="The local path to the file or folder to checkout from TFS source control.")]
  754 + [string]$Path,
  755 +
  756 + [switch]$Recursive
  757 + )
  758 +
  759 + $tfPath = Get-TfExecutablePath
  760 +
  761 + # If we couldn't find TF.exe, just return without doing anything.
  762 + if (Test-StringIsNullOrWhitespace $tfPath)
  763 + {
  764 + Write-Verbose "Unable to locate TF.exe, so will skip attempting to check '$Path' out of TFS source control."
  765 + return
  766 + }
  767 +
  768 + # Construct the checkout command to run.
  769 + $tfCheckoutCommand = "& ""$tfPath"" checkout /lock:none ""$Path"""
  770 + if ($Recursive) { $tfCheckoutCommand += " /recursive" }
  771 +
  772 + # Check the file out of TFS, eating any output and errors.
  773 + Write-Verbose "About to run command '$tfCheckoutCommand'."
  774 + Invoke-Expression -Command $tfCheckoutCommand 2>&1 > $null
  775 +}
  776 +
  777 +function Tfs-IsItemCheckedOut
  778 +{
  779 + [CmdletBinding()]
  780 + param
  781 + (
  782 + [Parameter(Mandatory=$true, Position=0, HelpMessage="The local path to the file or folder to checkout from TFS source control.")]
  783 + [string]$Path,
  784 +
  785 + [switch]$Recursive
  786 + )
  787 +
  788 + $tfPath = Get-TfExecutablePath
  789 +
  790 + # If we couldn't find TF.exe, just return without doing anything.
  791 + if (Test-StringIsNullOrWhitespace $tfPath)
  792 + {
  793 + Write-Verbose "Unable to locate TF.exe, so will skip attempting to check if '$Path' is checked out of TFS source control."
  794 + return $null
  795 + }
  796 +
  797 + # Construct the status command to run.
  798 + $tfStatusCommand = "& ""$tfPath"" status ""$Path"""
  799 + if ($Recursive) { $tfStatusCommand += " /recursive" }
  800 +
  801 + # Check the file out of TFS, capturing the output and errors.
  802 + Write-Verbose "About to run command '$tfStatusCommand'."
  803 + $status = (Invoke-Expression -Command $tfStatusCommand 2>&1)
  804 +
  805 + # Get the escaped path of the file or directory to search the status output for.
  806 + $escapedPath = $Path.Replace('\', '\\')
  807 +
  808 + # Examine the returned text to return if the given Path is checked out or not.
  809 + if ((Test-StringIsNullOrWhitespace $status) -or ($status -imatch $TF_EXE_NO_WORKING_FOLDER_MAPPING_ERROR_MESSAGE)) { return $null } # An error was returned, so likely TFS is not used for this item.
  810 + elseif ($status -imatch $TF_EXE_NO_PENDING_CHANGES_MESSAGE) { return $false } # The item was found in TFS, but is not checked out.
  811 + elseif ($status -imatch $escapedPath -and $status -imatch $TF_EXE_KEYWORD_IN_PENDING_CHANGES_MESSAGE) { return $true } # If the file path and "change(s)" are in the message then it means the path is checked out.
  812 + else { return $false } # Else we're not sure, so return that it is not checked out.
  813 +}
  814 +
  815 +function Tfs-Undo
  816 +{
  817 + [CmdletBinding()]
  818 + param
  819 + (
  820 + [Parameter(Mandatory=$true, Position=0, HelpMessage="The local path to the file or folder to undo from TFS source control.")]
  821 + [string]$Path,
  822 +
  823 + [switch]$Recursive
  824 + )
  825 +
  826 + $tfPath = Get-TfExecutablePath
  827 +
  828 + # If we couldn't find TF.exe, just return without doing anything.
  829 + if (Test-StringIsNullOrWhitespace $tfPath)
  830 + {
  831 + Write-Verbose "Unable to locate TF.exe, so will skip attempting to undo '$Path' from TFS source control."
  832 + return
  833 + }
  834 +
  835 + # Construct the undo command to run.
  836 + $tfCheckoutCommand = "& ""$tfPath"" undo ""$Path"" /noprompt"
  837 + if ($Recursive) { $tfCheckoutCommand += " /recursive" }
  838 +
  839 + # Check the file out of TFS, eating any output and errors.
  840 + Write-Verbose "About to run command '$tfCheckoutCommand'."
  841 + Invoke-Expression -Command $tfCheckoutCommand 2>&1 > $null
  842 +}
  843 +
  844 +function Get-ProjectsAssociatedNuSpecFilePath([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string]$ProjectFilePath)
  845 +{
  846 + # Construct what the project's nuspec file path would be if it has one (i.e. a [Project File Name].nupsec file in the same directory as the project file).
  847 + $projectsNuSpecFilePath = Join-Path ([System.IO.Path]::GetDirectoryName($ProjectFilePath)) ([System.IO.Path]::GetFileNameWithoutExtension($ProjectFilePath))
  848 + $projectsNuSpecFilePath += ".nuspec"
  849 +
  850 + # If this Project has a .nuspec that will be used to package with.
  851 + if (Test-Path $projectsNuSpecFilePath -PathType Leaf)
  852 + {
  853 + return $projectsNuSpecFilePath
  854 + }
  855 + return $null
  856 +}
  857 +
  858 +function Get-NuSpecsAssociatedProjectFilePath([parameter(Position=1,Mandatory=$true)][ValidateScript({Test-Path $_ -PathType Leaf})][string]$NuSpecFilePath)
  859 +{
  860 + # Construct what the nuspec's associated project file path would be if it has one (i.e. a [NuSpec File Name].[project extension] file in the same directory as the .nuspec file).
  861 + $nuSpecsProjectFilePath = Join-Path ([System.IO.Path]::GetDirectoryName($NuSpecFilePath)) ([System.IO.Path]::GetFileNameWithoutExtension($NuSpecFilePath))
  862 +
  863 + # Loop through each possible project extension type to see if it exists in the
  864 + foreach ($extension in $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_ARRAY)
  865 + {
  866 + # If this .nuspec file has an associated Project that can be used to pack with, return the project's file path.
  867 + $nuSpecsProjectFilePath += $extension
  868 + if (Test-Path $nuSpecsProjectFilePath -PathType Leaf)
  869 + {
  870 + return $nuSpecsProjectFilePath
  871 + }
  872 + }
  873 + return $null
  874 +}
  875 +
  876 +
  877 +#==========================================================
  878 +# Perform the script tasks.
  879 +#==========================================================
  880 +
  881 +# Define some variables that we need to access within both the Try and Finally blocks of the script.
  882 +$script:nuSpecFileWasAlreadyCheckedOut = $false
  883 +$script:nuSpecFileContentsBeforeCheckout = $null
  884 +$script:nuSpecLastWriteTimeBeforeCheckout = $null
  885 +
  886 +# Display the time that this script started running.
  887 +$scriptStartTime = Get-Date
  888 +Write-Verbose "New-NuGetPackage script started running at $($scriptStartTime.TimeOfDay.ToString())."
  889 +
  890 +# Display the version of PowerShell being used to run the script, as this can help solve some problems that are hard to reproduce on other machines.
  891 +Write-Verbose "Using PowerShell Version: $($PSVersionTable.PSVersion.ToString())."
  892 +
  893 +try
  894 +{
  895 + # If we should not show any prompts, disable them all.
  896 + if ($NoPrompt -or $NoPromptExceptOnError)
  897 + {
  898 + if ($NoPrompt) { $NoPromptForInputOnError = $true }
  899 + $NoPromptForPushPackageToNuGetGallery = $true
  900 + $NoPromptForReleaseNotes = $true
  901 + $NoPromptForVersionNumber = $true
  902 + }
  903 +
  904 + # If a path to a NuSpec, Project, or Package file to use was not provided, look for one in the same directory as this script or prompt for one.
  905 + if ((Test-StringIsNullOrWhitespace $NuSpecFilePath) -and (Test-StringIsNullOrWhitespace $ProjectFilePath) -and (Test-StringIsNullOrWhitespace $PackageFilePath))
  906 + {
  907 + # Get all of the .nuspec files in the script's directory.
  908 + $nuSpecFiles = Get-ChildItem "$THIS_SCRIPTS_DIRECTORY_PATH\*" -Include "*.nuspec" -Name
  909 +
  910 + # Get all of the project files in the script's directory.
  911 + $projectFiles = Get-ChildItem "$THIS_SCRIPTS_DIRECTORY_PATH\*" -Include $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_WITH_WILDCARD_ARRAY -Name
  912 +
  913 + # Get all of the NuGet package files in this script's directory.
  914 + $packageFiles = Get-ChildItem "$THIS_SCRIPTS_DIRECTORY_PATH\*" -Include "*.nupkg" -Name
  915 +
  916 + # Get the number of files found.
  917 + $numberOfNuSpecFilesFound = @($nuSpecFiles).Length
  918 + $numberOfProjectFilesFound = @($projectFiles).Length
  919 + $numberOfPackageFilesFound = @($packageFiles).Length
  920 +
  921 + # If we only found one project file and no package files, see if we should use the project file.
  922 + if (($numberOfProjectFilesFound -eq 1) -and ($numberOfPackageFilesFound -eq 0))
  923 + {
  924 + $projectPath = Join-Path $THIS_SCRIPTS_DIRECTORY_PATH ($projectFiles | Select-Object -First 1)
  925 + $projectsNuSpecFilePath = Get-ProjectsAssociatedNuSpecFilePath -ProjectFilePath $projectPath
  926 +
  927 + # If we didn't find any .nuspec files, then use this project file.
  928 + if ($numberOfNuSpecFilesFound -eq 0)
  929 + {
  930 + $ProjectFilePath = $projectPath
  931 + }
  932 + # Else if we found one .nuspec file, see if we should use this project file.
  933 + elseif ($numberOfNuSpecFilesFound -eq 1)
  934 + {
  935 + # If the .nuspec file belongs to this project file, use this project file.
  936 + $nuSpecFilePathInThisScriptsDirectory = Join-Path $THIS_SCRIPTS_DIRECTORY_PATH ($nuSpecFiles | Select-Object -First 1)
  937 + if ((!(Test-StringIsNullOrWhitespace $projectsNuSpecFilePath)) -and ($projectsNuSpecFilePath -eq $nuSpecFilePathInThisScriptsDirectory))
  938 + {
  939 + $ProjectFilePath = $projectPath
  940 + }
  941 + }
  942 + }
  943 + # Else if we only found one .nuspec file and no project or package files, use the .nuspec file.
  944 + elseif (($numberOfNuSpecFilesFound -eq 1) -and ($numberOfProjectFilesFound -eq 0) -and ($numberOfPackageFilesFound -eq 0))
  945 + {
  946 + $NuSpecFilePath = Join-Path $THIS_SCRIPTS_DIRECTORY_PATH ($nuSpecFiles | Select-Object -First 1)
  947 + }
  948 + # Else if we only found one package file and no .nuspec or project files, use the package file.
  949 + elseif (($numberOfPackageFilesFound -eq 1) -and ($numberOfNuSpecFilesFound -eq 0) -and ($numberOfProjectFilesFound -eq 0))
  950 + {
  951 + $PackageFilePath = Join-Path $THIS_SCRIPTS_DIRECTORY_PATH ($packageFiles | Select-Object -First 1)
  952 + }
  953 +
  954 + # If we didn't find a clear .nuspec, project, or package file to use, prompt for one.
  955 + if ((Test-StringIsNullOrWhitespace $NuSpecFilePath) -and (Test-StringIsNullOrWhitespace $ProjectFilePath) -and (Test-StringIsNullOrWhitespace $PackageFilePath))
  956 + {
  957 + # If we should prompt directly from PowerShell.
  958 + if ($UsePowerShellPrompts)
  959 + {
  960 + # Construct the prompt message with all of the supported project extensions.
  961 + # $promptmessage should end up looking like: "Enter the path to the .nuspec or project file (.csproj, .vbproj, .fsproj) to pack, or the package file (.nupkg) to push"
  962 + $promptMessage = "Enter the path to the .nuspec or project file ("
  963 + foreach ($extension in $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_ARRAY)
  964 + {
  965 + $promptMessage += "$extension, "
  966 + }
  967 + $promptMessage = $promptMessage.Substring(0, $promptMessage.Length - 2) # Trim off the last character, as it will be a ", ".
  968 + $promptMessage += ") to pack, or .nupkg file to push"
  969 +
  970 + $filePathToUse = Read-Host $promptMessage
  971 + $filePathToUse = $filePathToUse.Trim('"')
  972 + }
  973 + # Else use a nice GUI prompt.
  974 + else
  975 + {
  976 + # Construct the strings to use in the OpenFileDialog filter to allow all of the supported project file types.
  977 + # $filter should end up looking like: "NuSpec, package, and project files (*.nuspec, *.nupkg, *.csproj, *.vbproj, *.fsproj)|*.nuspec;*.nupkg;*.csproj;*.vbproj;*.fsproj"
  978 + $filterMessage = "NuSpec and project files (*.nuspec, "
  979 + $filterTypes = "*.nuspec;*.nupkg;"
  980 + foreach ($extension in $VALID_NUGET_PROJECT_TYPE_EXTENSIONS_ARRAY)
  981 + {
  982 + $filterMessage += "*$extension, "
  983 + $filterTypes += "*$extension;"
  984 + }
  985 + $filterMessage = $filterMessage.Substring(0, $filterMessage.Length - 2) # Trim off the last 2 characters, as they will be a ", ".
  986 + $filterMessage += ")"
  987 + $filterTypes = $filterTypes.Substring(0, $filterTypes.Length - 1) # Trim off the last character, as it will be a ";".
  988 + $filter = "$filterMessage|$filterTypes"
  989 +
  990 + $filePathToUse = Read-OpenFileDialog -WindowTitle "Select the .nuspec or project file to pack, or the package file (.nupkg) to push..." -InitialDirectory $THIS_SCRIPTS_DIRECTORY_PATH -Filter $filter
  991 + }
  992 +
  993 + # If the user cancelled the file dialog, throw an error since we don't have a .nuspec file to use.
  994 + if (Test-StringIsNullOrWhitespace $filePathToUse)
  995 + {
  996 + throw "No .nuspec, project, or package file was specified. You must specify a valid file to use."
  997 + }
  998 +
  999 + # If a .nuspec file was specified, double check that we should use it.
  1000 + if ([System.IO.Path]::GetExtension($filePathToUse) -eq ".nuspec")
  1001 + {
  1002 + # If this .nuspec file is associated with a project file, prompt to see if they want to pack the project instead (as that is preferred).
  1003 + $projectPath = Get-NuSpecsAssociatedProjectFilePath -NuSpecFilePath $filePathToUse
  1004 + if (!(Test-StringIsNullOrWhitespace $projectPath))
  1005 + {
  1006 + # If we are not allowed to prompt the user, just assume we should only use the .nuspec file.
  1007 + if ($NoPrompt)
  1008 + {
  1009 + $answer = "No"
  1010 + }
  1011 + # Else prompt the user if they want to pack the project file instead.
  1012 + else
  1013 + {
  1014 + $promptMessage = "The selected .nuspec file appears to be associated with the project file:`n`n$projectPath`n`nIt is generally preferred to pack the project file, and the .nuspec file will automatically get picked up.`nDo you want to pack the project file instead?"
  1015 +
  1016 + # If we should prompt directly from PowerShell.
  1017 + if ($UsePowerShellPrompts)
  1018 + {
  1019 + $promptMessage += " (Yes|No|Cancel)"
  1020 + $answer = Read-Host $promptMessage
  1021 + }
  1022 + # Else use a nice GUI prompt.
  1023 + else
  1024 + {
  1025 + $answer = Read-MessageBoxDialog -Message $promptMessage -WindowTitle "Pack using the Project file instead?" -Buttons YesNoCancel -Icon Question
  1026 + }
  1027 + }
  1028 +
  1029 + # If the user wants to use the Project file, use it.
  1030 + if (($answer -is [string] -and $answer.StartsWith("Y", [System.StringComparison]::InvariantCultureIgnoreCase)) -or $answer -eq [System.Windows.Forms.DialogResult]::Yes)
  1031 + {
  1032 + $ProjectFilePath = $projectPath
  1033 + }
  1034 + # Else if the user wants to use the .nuspec file, use it.
  1035 + elseif (($answer -is [string] -and $answer.StartsWith("N", [System.StringComparison]::InvariantCultureIgnoreCase)) -or $answer -eq [System.Windows.Forms.DialogResult]::No)
  1036 + {
  1037 + $NuSpecFilePath = $filePathToUse
  1038 + }
  1039 + # Else the user cancelled the prompt, so exit the script.
  1040 + else
  1041 + {
  1042 + throw "User cancelled the .nuspec or project file prompt, so exiting script."
  1043 + }
  1044 + }
  1045 + # Else this .nuspec file is not associated with a project file, so use the .nuspec file.
  1046 + else
  1047 + {
  1048 + $NuSpecFilePath = $filePathToUse
  1049 + }
  1050 + }
  1051 + # Else if a package file was specified.
  1052 + elseif ([System.IO.Path]::GetExtension($filePathToUse) -eq ".nupkg")
  1053 + {
  1054 + $PackageFilePath = $filePathToUse
  1055 + }
  1056 + # Else a .nuspec or package file was not specified, so assume it is a project file.
  1057 + else
  1058 + {
  1059 + $ProjectFilePath = $filePathToUse
  1060 + }
  1061 + }
  1062 + }
  1063 +
  1064 + # Make sure we have the absolute file paths.
  1065 + if (!(Test-StringIsNullOrWhitespace $NuSpecFilePath)) { $NuSpecFilePath = Resolve-Path $NuSpecFilePath }
  1066 + if (!(Test-StringIsNullOrWhitespace $ProjectFilePath)) { $ProjectFilePath = Resolve-Path $ProjectFilePath }
  1067 + if (!(Test-StringIsNullOrWhitespace $PackageFilePath)) { $PackageFilePath = Resolve-Path $PackageFilePath }
  1068 +
  1069 + # If a path to the NuGet executable was not provided, try and find it.
  1070 + if (Test-StringIsNullOrWhitespace $NuGetExecutableFilePath)
  1071 + {
  1072 + # If the NuGet executable is in the same directory as this script, use it.
  1073 + $nuGetExecutablePathInThisDirectory = Join-Path $THIS_SCRIPTS_DIRECTORY_PATH "NuGet.exe"
  1074 + if (Test-Path $nuGetExecutablePathInThisDirectory)
  1075 + {
  1076 + $NuGetExecutableFilePath = $nuGetExecutablePathInThisDirectory
  1077 + }
  1078 + # Else we don't know where the executable is, so assume it has been added to the PATH.
  1079 + else
  1080 + {
  1081 + $NuGetExecutableFilePath = "NuGet.exe"
  1082 + }
  1083 + }
  1084 +
  1085 + # If we should try and update the NuGet executable.
  1086 + if ($UpdateNuGetExecutable)
  1087 + {
  1088 + # If we have the path to the NuGet executable, try and check it out of TFS before having it update itself.
  1089 + if (Test-Path $NuGetExecutableFilePath)
  1090 + {
  1091 + # Try and check the NuGet executable out of TFS if needed.
  1092 + $nuGetExecutableWasAlreadyCheckedOut = Tfs-IsItemCheckedOut -Path $NuGetExecutableFilePath
  1093 + if ($nuGetExecutableWasAlreadyCheckedOut -eq $false) { Tfs-Checkout -Path $NuGetExecutableFilePath }
  1094 + }
  1095 +
  1096 + # Create the command to use to update NuGet.exe.
  1097 + $updateCommand = "& ""$NuGetExecutableFilePath"" update -self"
  1098 +
  1099 + # Have the NuGet executable try and auto-update itself.
  1100 + Write-Verbose "About to run Update command '$updateCommand'."
  1101 + $updateOutput = (Invoke-Expression -Command $updateCommand | Out-String).Trim()
  1102 +
  1103 + # Write the output of the above command to the Verbose stream.
  1104 + Write-Verbose $updateOutput
  1105 +
  1106 + # If we have the path to the NuGet executable, we checked it out of TFS, and it did not auto-update itself, then undo the changes from TFS.
  1107 + if ((Test-Path $NuGetExecutableFilePath) -and ($nuGetExecutableWasAlreadyCheckedOut -eq $false) -and !$updateOutput.EndsWith($NUGET_EXE_SUCCESSFULLY_UPDATED_TO_NEW_VERSION.Trim()))
  1108 + {
  1109 + Tfs-Undo -Path $NuGetExecutableFilePath
  1110 + }
  1111 + }
  1112 +
  1113 + # Get and display the version of NuGet.exe that will be used. If NuGet.exe is not found an exception will be thrown automatically.
  1114 + # Create the command to use to get the Nuget Help info.
  1115 + $helpCommand = "& ""$NuGetExecutableFilePath"""
  1116 +
  1117 + # Get the NuGet.exe Help output.
  1118 + Write-Verbose "About to run Help command '$helpCommand'."
  1119 + $helpOutput = (Invoke-Expression -Command $helpCommand | Out-String).Trim()
  1120 +
  1121 + # If no Help output was retrieved, the NuGet.exe likely returned an error.
  1122 + if (Test-StringIsNullOrWhitespace $helpOutput)
  1123 + {
  1124 + # Get the error information returned by NuGet.exe, and throw an error that we could not run NuGet.exe as expected.
  1125 + $helpError = (Invoke-Expression -Command $helpCommand 2>&1 | Out-String).Trim()
  1126 + throw "NuGet information could not be retrieved by running '$NuGetExecutableFilePath'.`r`n`r`nRunning '$NuGetExecutableFilePath' returns the following information:`r`n`r`n$helpError"
  1127 + }
  1128 +
  1129 + # Display the version of the NuGet.exe. This information is the first line of the NuGet Help output.
  1130 + $nuGetVersionLine = ($helpOutput -split "`r`n")[0]
  1131 + Write-Verbose "Using $($nuGetVersionLine)."
  1132 +
  1133 + # Force NuGet.exe to output English so that we can properly parse and match against it's output.
  1134 + # The -ForceEnglishOutput switch was only added in NuGet.exe v3.5, so default to using it, and remove it if the version is less than v3.5.
  1135 + $nuGetForceEnglishOutputSwitch = " -ForceEnglishOutput"
  1136 + $PackOptions += $nuGetForceEnglishOutputSwitch
  1137 + [array]$nuGetVersionParts = $null
  1138 + $nugetVersionMatch = $NUGET_EXE_VERSION_NUMBER_REGEX.Match($nuGetVersionLine)
  1139 + if ($nugetVersionMatch.Success)
  1140 + {
  1141 + # Get the version of NuGet.exe being used.
  1142 + $nuGetVersionString = $nugetVersionMatch.Groups["Version"].Value
  1143 +
  1144 + if (!(Test-StringIsNullOrWhitespace $nuGetVersionString))
  1145 + {
  1146 + # If we are using a version of NuGet.exe less than v3.5, remove the switch to force English output.
  1147 + $nuGetVersionParts = $nuGetVersionString -split "\."
  1148 + if ($nuGetVersionParts.Count -ge 2)
  1149 + {
  1150 + if ($nuGetVersionParts[0] -le 2 -or ($nuGetVersionParts[0] -eq 3 -and $nuGetVersionParts[1] -lt 5))
  1151 + {
  1152 + $PackOptions = $PackOptions.Replace($nuGetForceEnglishOutputSwitch, [string]::Empty)
  1153 + }
  1154 + }
  1155 + }
  1156 + }
  1157 +
  1158 + # If we weren't actually able to determine which version of NuGet.exe is being used, display a warning.
  1159 + if ($nuGetVersionParts -eq $null -or $nuGetVersionParts.Count -lt 2)
  1160 + {
  1161 + Write-Warning "Could not determine which version of NuGet.exe is being used."
  1162 + }
  1163 +
  1164 + # Declare the backup directory to create the NuGet Package in, as not all code paths will set it (i.e. when pushing an existing package), but we check it later.
  1165 + $defaultDirectoryPathToPutNuGetPackageIn = $null
  1166 +
  1167 + # If we were not given a package file, then we need to pack something.
  1168 + if (Test-StringIsNullOrWhitespace $PackageFilePath)
  1169 + {
  1170 + # If we were given a Project to package.
  1171 + if (!(Test-StringIsNullOrWhitespace $ProjectFilePath))
  1172 + {
  1173 + # Get the project's .nuspec file path, if it has a .nuspec file.
  1174 + $projectNuSpecFilePath = Get-ProjectsAssociatedNuSpecFilePath -ProjectFilePath $ProjectFilePath
  1175 +
  1176 + # If this Project has a .nuspec that will be used to package with.
  1177 + if (!(Test-StringIsNullOrWhitespace $projectNuSpecFilePath))
  1178 + {
  1179 + # Update .nuspec file based on user input.
  1180 + $NuSpecFilePath = $projectNuSpecFilePath
  1181 + Update-NuSpecFile
  1182 + }
  1183 + # Else we aren't using a .nuspec file, so if a Version Number was given in the script parameters but not the pack parameters, add it to the pack parameters.
  1184 + elseif (!(Test-StringIsNullOrWhitespace $VersionNumber) -and $PackOptions -notmatch '-Version')
  1185 + {
  1186 + $PackOptions += " -Version ""$VersionNumber"""
  1187 + }
  1188 +
  1189 + # Save the directory that the project file is in as the directory to create the package in.
  1190 + $defaultDirectoryPathToPutNuGetPackageIn = [System.IO.Path]::GetDirectoryName($ProjectFilePath)
  1191 +
  1192 + # Record that we want to pack using the project file, not a NuSpec file.
  1193 + $fileToPack = $ProjectFilePath
  1194 + }
  1195 + # Else we are supposed to package using just a NuSpec.
  1196 + else
  1197 + {
  1198 + # Update .nuspec file based on user input.
  1199 + Update-NuSpecFile
  1200 +
  1201 + # Save the directory that the .nuspec file is in as the directory to create the package in.
  1202 + $defaultDirectoryPathToPutNuGetPackageIn = [System.IO.Path]::GetDirectoryName($NuSpecFilePath)
  1203 +
  1204 + # Record that we want to pack using the NuSpec file, not a project file.
  1205 + $fileToPack = $NuSpecFilePath
  1206 + }
  1207 +
  1208 + # Make sure our backup Output Directory is an absolute path.
  1209 + if (![System.IO.Path]::IsPathRooted($defaultDirectoryPathToPutNuGetPackageIn))
  1210 + {
  1211 + $defaultDirectoryPathToPutNuGetPackageIn = Resolve-Path $directoryToPackFrom
  1212 + }
  1213 +
  1214 + # When an Output Directory is not explicitly provided, we want to put generated packages into their own directory.
  1215 + $defaultDirectoryPathToPutNuGetPackageIn = Join-Path $defaultDirectoryPathToPutNuGetPackageIn $DEFAULT_DIRECTORY_TO_PUT_NUGET_PACKAGES_IN
  1216 +
  1217 + # If the user did not specify an Output Directory.
  1218 + if ($PackOptions -notmatch '-OutputDirectory')
  1219 + {
  1220 + # Insert our default Output Directory into the Additional Pack Options.
  1221 + Write-Verbose "Specifying to use the default Output Directory '$defaultDirectoryPathToPutNuGetPackageIn'."
  1222 + $PackOptions += " -OutputDirectory ""$defaultDirectoryPathToPutNuGetPackageIn"""
  1223 +
  1224 + # Make sure the Output Directory we are adding exists.
  1225 + if (!(Test-Path -Path $defaultDirectoryPathToPutNuGetPackageIn))
  1226 + {
  1227 + New-Item -Path $defaultDirectoryPathToPutNuGetPackageIn -ItemType Directory > $null
  1228 + }
  1229 + }
  1230 +
  1231 + # Create the command to use to create the package.
  1232 + $packCommand = "& ""$NuGetExecutableFilePath"" pack ""$fileToPack"" $PackOptions"
  1233 + $packCommand = $packCommand -ireplace ';', '`;' # Escape any semicolons so they are not interpreted as the start of a new command.
  1234 +
  1235 + # Create the package.
  1236 + Write-Verbose "About to run Pack command '$packCommand'."
  1237 + $packOutput = (Invoke-Expression -Command $packCommand | Out-String).Trim()
  1238 +
  1239 + # Write the output of the above command to the Verbose stream.
  1240 + Write-Verbose $packOutput
  1241 +
  1242 + # Get the path the NuGet Package was created to, and write it to the output stream.
  1243 + $match = $NUGET_EXE_SUCCESSFULLY_CREATED_PACKAGE_MESSAGE_REGEX.Match($packOutput)
  1244 + if ($match.Success)
  1245 + {
  1246 + $nuGetPackageFilePath = $match.Groups["FilePath"].Value
  1247 +
  1248 + # Have this cmdlet return the path that the new NuGet Package was created to.
  1249 + # This should be the only code that uses Write-Output, as it is the only thing that should be returned by the cmdlet.
  1250 + Write-Output $nuGetPackageFilePath
  1251 + }
  1252 + else
  1253 + {
  1254 + throw "Could not determine where NuGet Package was created to. This typically means that an error occurred while NuGet.exe was packing it. Look for errors from NuGet.exe above (in the console window), or in the following NuGet.exe output. You can also try running this command with the -Verbose switch for more information:{0}{1}" -f [Environment]::NewLine, $packOutput
  1255 + }
  1256 + }
  1257 + # Else we were given a Package file to push.
  1258 + else
  1259 + {
  1260 + # Save the Package file path to push.
  1261 + $nuGetPackageFilePath = $PackageFilePath
  1262 + }
  1263 +
  1264 + # Get the Source to push the package to.
  1265 + # If the user explicitly provided the Source to push the package to, get it.
  1266 + $rxSourceToPushPackageTo = [regex] "(?i)((-Source|-src)\s+(?<Source>.*?)(\s+|$))"
  1267 + $match = $rxSourceToPushPackageTo.Match($PushOptions)
  1268 + if ($match.Success)
  1269 + {
  1270 + $sourceToPushPackageTo = $match.Groups["Source"].Value
  1271 +
  1272 + # Strip off any single or double quotes around the address.
  1273 + $sourceToPushPackageTo = $sourceToPushPackageTo.Trim([char[]]@("'", '"'))
  1274 + }
  1275 + # Else they did not provide an explicit source to push to, so set it to the default.
  1276 + else
  1277 + {
  1278 + # Assume they are pushing to the typical default source.
  1279 + $sourceToPushPackageTo = $DEFAULT_NUGET_SOURCE_TO_PUSH_TO
  1280 +
  1281 + # Update the PushOptions to include the default source (as -Source is now a required parameter as of NuGet.exe v3.4.2).
  1282 + $PushOptions = $PushOptions.Trim() + " -Source $sourceToPushPackageTo"
  1283 + }
  1284 +
  1285 + # If the switch to push the package to the gallery was not provided and we are allowed to prompt, prompt the user if they want to push the package.
  1286 + if (!$PushPackageToNuGetGallery -and !$NoPromptForPushPackageToNuGetGallery)
  1287 + {
  1288 + $promptMessage = "Do you want to push this package:`n'$nuGetPackageFilePath'`nto the NuGet Gallery '$sourceToPushPackageTo'?"
  1289 +
  1290 + # If we should prompt directly from PowerShell.
  1291 + if ($UsePowerShellPrompts)
  1292 + {
  1293 + $promptMessage += " (Yes|No)"
  1294 + $answer = Read-Host $promptMessage
  1295 + }
  1296 + # Else use a nice GUI prompt.
  1297 + else
  1298 + {
  1299 + $answer = Read-MessageBoxDialog -Message $promptMessage -WindowTitle "Push Package To Gallery?" -Buttons YesNo -Icon Question
  1300 + }
  1301 +
  1302 + # If the user wants to push the new package, record it.
  1303 + if (($answer -is [string] -and $answer.StartsWith("Y", [System.StringComparison]::InvariantCultureIgnoreCase)) -or $answer -eq [System.Windows.Forms.DialogResult]::Yes)
  1304 + {
  1305 + $PushPackageToNuGetGallery = $true
  1306 + }
  1307 + }
  1308 +
  1309 + # If we should push the Nuget package to the gallery.
  1310 + if ($PushPackageToNuGetGallery)
  1311 + {
  1312 + # If the user has not provided an API key.
  1313 + $UserProvidedApiKeyUsingPrompt = $false
  1314 + if ($PushOptions -notmatch '-ApiKey')
  1315 + {
  1316 + # Get the NuGet.config file contents as Xml.
  1317 + $nuGetConfigXml = New-Object System.Xml.XmlDocument
  1318 + $nuGetConfigXml.Load($NUGET_CONFIG_FILE_PATH)
  1319 +
  1320 + # If the user does not have an API key saved on this PC for the Source to push to, and prompts are allowed, prompt them for one.
  1321 + if (((Get-XmlNodes -XmlDocument $nuGetConfigXml -NodePath "configuration.apikeys.add" | Where-Object { $_.key -eq $sourceToPushPackageTo }) -eq $null) -and !$NoPrompt)
  1322 + {
  1323 + $promptMessage = "It appears that you do not have an API key saved on this PC for the source to push the package to '$sourceToPushPackageTo'.`n`nYou must provide an API key to push this package to the NuGet Gallery.`n`nPlease enter your API key"
  1324 +
  1325 + # If we should prompt directly from PowerShell.
  1326 + if ($UsePowerShellPrompts)
  1327 + {
  1328 + $apiKey = Read-Host $promptMessage
  1329 + }
  1330 + # Else use a nice GUI prompt.
  1331 + else
  1332 + {
  1333 + $apiKey = Read-InputBoxDialog -Message "$promptMessage`:" -WindowTitle "Enter Your API Key"
  1334 + }
  1335 +
  1336 + # If the user supplied an Api Key.
  1337 + if (!(Test-StringIsNullOrWhitespace $apiKey))
  1338 + {
  1339 + # Add the given Api Key to the Push Options.
  1340 + $PushOptions += " -ApiKey $apiKey"
  1341 +
  1342 + # Record that the user provided the Api Key via a prompt.
  1343 + $UserProvidedApiKeyUsingPrompt = $true
  1344 + }
  1345 + }
  1346 + }
  1347 +
  1348 + # Create the command to use to push the package to the gallery.
  1349 + $pushCommand = "& ""$NuGetExecutableFilePath"" push ""$nuGetPackageFilePath"" $PushOptions"
  1350 + $pushCommand = $pushCommand -ireplace ';', '`;' # Escape any semicolons so they are not interpreted as the start of a new command.
  1351 +
  1352 + # Push the package to the gallery.
  1353 + Write-Verbose "About to run Push command '$pushCommand'."
  1354 + $pushOutput = (Invoke-Expression -Command $pushCommand | Out-String).Trim()
  1355 +
  1356 + # Write the output of the above command to the Verbose stream.
  1357 + Write-Verbose $pushOutput
  1358 +
  1359 + # If an error occurred while pushing the package, throw and error. Else it was pushed successfully.
  1360 + if (!$pushOutput.EndsWith($NUGET_EXE_SUCCESSFULLY_PUSHED_PACKAGE_MESSAGE.Trim()))
  1361 + {
  1362 + throw "Could not determine if package was pushed to gallery successfully. Perhaps an error occurred while pushing it. Look for errors from NuGet.exe above (in the console window), or in the following NuGet.exe output. You can also try running this command with the -Verbose switch for more information:{0}{1}" -f [Environment]::NewLine, $pushOutput
  1363 + }
  1364 +
  1365 + # If the package should be deleted.
  1366 + if ($DeletePackageAfterPush -and (Test-Path $nuGetPackageFilePath))
  1367 + {
  1368 + # Delete the package.
  1369 + Write-Verbose "Deleting NuGet Package '$nuGetPackageFilePath'."
  1370 + Remove-Item -Path $nuGetPackageFilePath -Force
  1371 +
  1372 + # If the package was output to the default directory, and the directory is now empty, delete the default directory too since we would have created it above.
  1373 + if (!(Test-StringIsNullOrWhitespace $defaultDirectoryPathToPutNuGetPackageIn) -and (Test-Path -Path $defaultDirectoryPathToPutNuGetPackageIn))
  1374 + {
  1375 + [int]$numberOfFilesInDefaultOutputDirectory = ((Get-ChildItem -Path $defaultDirectoryPathToPutNuGetPackageIn -Force) | Measure-Object).Count
  1376 + if ((Split-Path -Path $nuGetPackageFilePath -Parent) -eq $defaultDirectoryPathToPutNuGetPackageIn -and $numberOfFilesInDefaultOutputDirectory -eq 0)
  1377 + {
  1378 + Write-Verbose "Deleting empty default NuGet package directory '$defaultDirectoryPathToPutNuGetPackageIn'."
  1379 + Remove-Item -Path $defaultDirectoryPathToPutNuGetPackageIn -Force
  1380 + }
  1381 + }
  1382 + }
  1383 +
  1384 + # If the user provided the Api Key via a prompt from this script, prompt them for if they want to save the given API key on this PC.
  1385 + if ($UserProvidedApiKeyUsingPrompt)
  1386 + {
  1387 + # If we are not allowed to prompt the user, just assume they don't want to save the key on this PC.
  1388 + if ($NoPrompt)
  1389 + {
  1390 + $answer = "No"
  1391 + }
  1392 + # Else prompt the user if they want to save the given API key on this PC.
  1393 + else
  1394 + {
  1395 + $promptMessage = "Do you want to save the API key you provided on this PC so that you don't have to enter it again next time?"
  1396 +
  1397 + # If we should prompt directly from PowerShell.
  1398 + if ($UsePowerShellPrompts)
  1399 + {
  1400 + $promptMessage += " (Yes|No)"
  1401 + $answer = Read-Host $promptMessage
  1402 + }
  1403 + # Else use a nice GUI prompt.
  1404 + else
  1405 + {
  1406 + $answer = Read-MessageBoxDialog -Message $promptMessage -WindowTitle "Save API Key On This PC?" -Buttons YesNo -Icon Question
  1407 + }
  1408 + }
  1409 +
  1410 + # If the user wants to save the API key.
  1411 + if (($answer -is [string] -and $answer.StartsWith("Y", [System.StringComparison]::InvariantCultureIgnoreCase)) -or $answer -eq [System.Windows.Forms.DialogResult]::Yes)
  1412 + {
  1413 + # Create the command to use to save the Api key on this PC.
  1414 + $setApiKeyCommand = "& ""$NuGetExecutableFilePath"" setApiKey ""$apiKey"" -Source ""$sourceToPushPackageTo"""
  1415 + $setApiKeyCommand = $setApiKeyCommand -ireplace ';', '`;' # Escape any semicolons so they are not interpreted as the start of a new command.
  1416 +
  1417 + # Save the Api key on this PC.
  1418 + Write-Verbose "About to run command '$setApiKeyCommand'."
  1419 + $setApiKeyOutput = (Invoke-Expression -Command $setApiKeyCommand | Out-String).Trim()
  1420 +
  1421 + # Write the output of the above command to the Verbose stream.
  1422 + Write-Verbose $setApiKeyOutput
  1423 +
  1424 + # Determine if the API Key was saved successfully, and throw an error if it wasn't.
  1425 + $expectedSuccessfulNuGetSetApiKeyOutput = ($NUGET_EXE_SUCCESSFULLY_SAVED_API_KEY_MESSAGE -f $apiKey, $sourceToPushPackageTo) # "The API Key '$apiKey' was saved for '$sourceToPushPackageTo'."
  1426 + if ($setApiKeyOutput -ne $expectedSuccessfulNuGetSetApiKeyOutput.Trim())
  1427 + {
  1428 + throw "Could not determine if the API key was saved successfully. Perhaps an error occurred while saving it. Look for errors from NuGet.exe above (in the console window), or in the following NuGet.exe output. You can also try running this command with the -Verbose switch for more information:{0}{1}" -f [Environment]::NewLine, $packOutput
  1429 + }
  1430 + }
  1431 + }
  1432 + }
  1433 +}
  1434 +finally
  1435 +{
  1436 + Write-Verbose "Performing any required New-NuGetPackage script cleanup..."
  1437 +
  1438 + # If we have a NuSpec file path.
  1439 + if (!(Test-StringIsNullOrWhitespace $NuSpecFilePath))
  1440 + {
  1441 + # If we should revert any changes we made to the NuSpec file.
  1442 + if ($DoNotUpdateNuSpecFile)
  1443 + {
  1444 + # If we created a backup of the NuSpec file before updating it, restore the backed up version.
  1445 + $backupNuSpecFilePath = Get-NuSpecBackupFilePath
  1446 + if (Test-Path $backupNuSpecFilePath -PathType Leaf)
  1447 + {
  1448 + Copy-Item -Path $backupNuSpecFilePath -Destination $NuSpecFilePath -Force
  1449 + Remove-Item -Path $backupNuSpecFilePath -Force
  1450 + }
  1451 + }
  1452 +
  1453 + # If we checked the NuSpec file out from TFS.
  1454 + if ((Test-Path $NuSpecFilePath) -and ($script:nuSpecFileWasAlreadyCheckedOut -eq $false))
  1455 + {
  1456 + # If the NuSpec file should not be updated, or the contents have not been changed.
  1457 + $newNuSpecFileContents = [System.IO.File]::ReadAllText($NuSpecFilePath)
  1458 + if ($DoNotUpdateNuSpecFile -or ($script:nuSpecFileContentsBeforeCheckout -eq $newNuSpecFileContents))
  1459 + {
  1460 + # Try and undo our checkout from TFS.
  1461 + Tfs-Undo -Path $NuSpecFilePath
  1462 +
  1463 + # Also reset the file's LastWriteTime so that MSBuild does not always rebuild the project because it thinks the .nuspec file was modified after the project's .pdb file.
  1464 + # If we recorded the NuSpec file's last write time, then reset it.
  1465 + if ($script:nuSpecLastWriteTimeBeforeCheckout -ne $null)
  1466 + {
  1467 + # We first have to make sure the file is writable before trying to set the LastWriteTime, and then restore the Read-Only attribute if it was set before.
  1468 + $nuspecFileInfo = New-Object System.IO.FileInfo($NuSpecFilePath)
  1469 + $nuspecFileIsReadOnly = $nuspecFileInfo.IsReadOnly
  1470 + $nuspecFileInfo.IsReadOnly = $false
  1471 + [System.IO.File]::SetLastWriteTime($NuSpecFilePath, $script:nuSpecLastWriteTimeBeforeCheckout)
  1472 + if ($nuspecFileIsReadOnly) { $nuspecFileInfo.IsReadOnly = $true }
  1473 + }
  1474 + }
  1475 + }
  1476 + }
  1477 +}
  1478 +
  1479 +# Display the time that this script finished running, and how long it took to run.
  1480 +$scriptFinishTime = Get-Date
  1481 +$scriptElapsedTimeInSeconds = ($scriptFinishTime - $scriptStartTime).TotalSeconds.ToString()
  1482 +Write-Verbose "New-NuGetPackage script finished running at $($scriptFinishTime.TimeOfDay.ToString()). Completed in $scriptElapsedTimeInSeconds seconds."
Vrh.Web.Reporting/_CreateNewNuGetPackage/DoNotModify/UploadNuGetPackage.ps1 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +#==========================================================
  2 +# DO NOT EDIT THIS FILE.
  3 +# If you want to configure how your package is uploaded, modify the Config.ps1 file.
  4 +# To run this script from inside Visual Studio, right-click on the "RunMeToUploadNuGetPackage.cmd" file and choose "Run".
  5 +#==========================================================
  6 +
  7 +# Turn on Strict Mode to help catch syntax-related errors.
  8 +# This must come after a script's/function's param section.
  9 +# Forces a function to be the first non-comment code to appear in a PowerShell Module.
  10 +Set-StrictMode -Version Latest
  11 +
  12 +# PowerShell v2.0 compatible version of [string]::IsNullOrWhitespace.
  13 +function Test-StringIsNullOrWhitespace([string]$string)
  14 +{
  15 + if ($string -ne $null) { $string = $string.Trim() }
  16 + return [string]::IsNullOrEmpty($string)
  17 +}
  18 +
  19 +# Get the directory that this script is in.
  20 +$THIS_SCRIPTS_DIRECTORY_PATH = Split-Path $script:MyInvocation.MyCommand.Path
  21 +
  22 +# Get the path to the Config file and dot source it into this script.
  23 +# The variables below should be defined in the Config file, but if they aren't we initialize them with default values.
  24 +$CONFIG_FILE_PATH = Join-Path -Path (Split-Path -Path $THIS_SCRIPTS_DIRECTORY_PATH -Parent) -ChildPath 'Config.ps1'
  25 +if (Test-Path -Path $CONFIG_FILE_PATH) { . $CONFIG_FILE_PATH }
  26 +else { Write-Warning "Could not find Config file at '$CONFIG_FILE_PATH'. Default values will be used instead." }
  27 +
  28 +# The NuGet gallery to upload to. If not provided, the DefaultPushSource in your NuGet.config file is used (typically nuget.org).
  29 +if (!(Test-Path Variable:Private:sourceToUploadTo) -or (Test-StringIsNullOrWhitespace $sourceToUploadTo)) { $sourceToUploadTo = ""; Write-Output "Using default Source To Upload To value." }
  30 +else { Write-Output "Using user-specified Source To Update To value '$sourceToUploadTo'." }
  31 +
  32 +# The API Key to use to upload the package to the gallery. If not provided and a system-level one does not exist for the specified Source, you will be prompted for it.
  33 +if (!(Test-Path Variable:Private:apiKey) -or (Test-StringIsNullOrWhitespace $apiKey)) { $apiKey = ""; Write-Output "Using default API Key value." }
  34 +else { Write-Output "Using user-specified API Key value [value not shown here for security purposes]." }
  35 +
  36 +# Specify any NuGet Push options to pass to nuget.exe.
  37 +# Do not specify the "-Source" or "-ApiKey" here; use the variables above.
  38 +if (!(Test-Path Variable:Private:pushOptions) -or (Test-StringIsNullOrWhitespace $pushOptions)) { $pushOptions = ""; Write-Output "Using default Push Options value." }
  39 +else { Write-Output "Using user-specified Push Options value '$pushOptions'." }
  40 +
  41 +# Add the Source and ApiKey to the Push Options if there were provided.
  42 +if (!(Test-StringIsNullOrWhitespace $sourceToUploadTo)) { $pushOptions += " -Source ""$sourceToUploadTo"" " }
  43 +if (!(Test-StringIsNullOrWhitespace $apiKey)) { $pushOptions += " -ApiKey ""$apiKey"" " }
  44 +
  45 +# Upload the new NuGet package.
  46 +& "$THIS_SCRIPTS_DIRECTORY_PATH\New-NuGetPackage.ps1" -PushOptions "$pushOptions" -Verbose
0 \ No newline at end of file 47 \ No newline at end of file
Vrh.Web.Reporting/_CreateNewNuGetPackage/RunMeToUploadNuGetPackage.cmd 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +@ECHO OFF
  2 +REM === DO NOT EDIT THIS FILE ===
  3 +REM Run this script to upload a NuGet package to the NuGet gallery.
  4 +REM When you run this script it will prompt you for a NuGet package file (.nupkg) and then upload it to the NuGet gallery.
  5 +REM The project's .nupkg file should be in the same directory as the project's .dll/.exe file (typically bin\Debug or bin\Release).
  6 +REM You may edit the Config.ps1 file to adjust the settings used to upload the package to the NuGet gallery.
  7 +REM To run this script from within Visual Studio, right-click on this file from the Solution Explorer and choose Run.
  8 +SET THIS_SCRIPTS_DIRECTORY=%~dp0
  9 +PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%THIS_SCRIPTS_DIRECTORY%DoNotModify\UploadNuGetPackage.ps1'"
0 \ No newline at end of file 10 \ No newline at end of file
Vrh.Web.Reporting/packages.config
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 <package id="jQuery.Ajax.Unobtrusive" version="2.0.20710.0" targetFramework="net45" /> 14 <package id="jQuery.Ajax.Unobtrusive" version="2.0.20710.0" targetFramework="net45" />
15 <package id="jquery.datatables" version="1.10.15" targetFramework="net451" /> 15 <package id="jquery.datatables" version="1.10.15" targetFramework="net451" />
16 <package id="jQuery.Fullcalendar" version="3.9.0" targetFramework="net451" /> 16 <package id="jQuery.Fullcalendar" version="3.9.0" targetFramework="net451" />
17 - <package id="jQuery.UI.Combined" version="1.12.1" targetFramework="net451" /> 17 + <package id="jQuery.UI.Combined" version="1.13.2" targetFramework="net462" />
18 <package id="jQuery.Validation" version="1.19.5" targetFramework="net461" /> 18 <package id="jQuery.Validation" version="1.19.5" targetFramework="net461" />
19 <package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net45" /> 19 <package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net45" />
20 <package id="Microsoft.AspNet.Mvc" version="5.2.9" targetFramework="net461" /> 20 <package id="Microsoft.AspNet.Mvc" version="5.2.9" targetFramework="net461" />
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net461" /> 34 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net461" />
35 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net461" /> 35 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net461" />
36 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net45" /> 36 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net45" />
37 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 37 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
38 <package id="Microsoft.Web.Administration" version="11.1.0" targetFramework="net462" /> 38 <package id="Microsoft.Web.Administration" version="11.1.0" targetFramework="net462" />
39 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net472" /> 39 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net472" />
40 <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" /> 40 <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
@@ -104,12 +104,12 @@ @@ -104,12 +104,12 @@
104 <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net462" /> 104 <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net462" />
105 <package id="VRH.Common" version="3.0.0" targetFramework="net472" /> 105 <package id="VRH.Common" version="3.0.0" targetFramework="net472" />
106 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net461" /> 106 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net461" />
107 - <package id="VRH.Log4Pro.WebTools" version="1.11.1" targetFramework="net472" />  
108 - <package id="Vrh.Logger" version="2.10.0" targetFramework="net462" />  
109 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net461" />  
110 - <package id="Vrh.Web.Common.Lib" version="2.19.3" targetFramework="net462" /> 107 + <package id="VRH.Log4Pro.WebTools" version="1.12.5" targetFramework="net462" />
  108 + <package id="Vrh.Logger" version="2.11.1" targetFramework="net462" />
  109 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
  110 + <package id="Vrh.Web.Common.Lib" version="2.20.1" targetFramework="net462" />
111 <package id="Vrh.Web.FileManager" version="1.5.1" targetFramework="net472" /> 111 <package id="Vrh.Web.FileManager" version="1.5.1" targetFramework="net472" />
112 - <package id="Vrh.Web.Membership" version="4.8.2" targetFramework="net462" /> 112 + <package id="Vrh.Web.Membership" version="4.10.0" targetFramework="net462" />
113 <package id="Vrh.Web.Menu" version="1.28.5" targetFramework="net461" /> 113 <package id="Vrh.Web.Menu" version="1.28.5" targetFramework="net461" />
114 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 114 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
115 <package id="Vrh.WebForm" version="2.7.1" targetFramework="net472" /> 115 <package id="Vrh.WebForm" version="2.7.1" targetFramework="net472" />
Vrh.Web.iScheduler.Lib/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.Web.iScheduler.Lib/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.Web.iScheduler.Lib/Vrh.NugetModuls.Documentations/Vrh.Web.Common.Lib/ReadMe.md
@@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true) @@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true)
469 469
470 *** 470 ***
471 ### Version History: 471 ### Version History:
  472 +#### 2.20.1 (2023.09.19) Patches:
  473 +- WebCommon.ErrorListBuilder mostantól saját kódot használ, nem a VRH.Common.ErrorListBuilder-ét. A VRH.Common.EF.ErrorListBuilder kód tartalmát használja, ami meg valamiért nem elérhető.
  474 +
  475 +#### 2.20.0 (2023.09.07) Compatible changes:
  476 +- DataTablesIn.DTColumn osztály kibővült egy OrderField nevű tulajdonsággal.
  477 +- DataTables.Order metódus módosítása, hogy ha ki van töltve az OrderField, akkor a rendezés arra történik.
  478 +
  479 +#### 2.19.5 (2023.08.10) Patches:
  480 +- DataTables.Filter metódus módosítása. Nullozható enumokra is helyesen működik.
  481 +
  482 +#### 2.19.4 (2023.07.18) Patches:
  483 +- DataTables.Filter metódus módosítása. Most már Guid típusú mező szűrésekor is helyesen működik.
  484 +
472 #### 2.19.3 (2023.06.05) Patches: 485 #### 2.19.3 (2023.06.05) Patches:
473 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus. 486 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus.
474 487
Vrh.Web.iScheduler.Lib/Vrh.Web.iScheduler.Lib.csproj
@@ -140,7 +140,7 @@ @@ -140,7 +140,7 @@
140 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 140 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
141 </Reference> 141 </Reference>
142 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 142 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
143 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 143 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
144 </Reference> 144 </Reference>
145 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 145 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
146 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 146 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -259,11 +259,11 @@ @@ -259,11 +259,11 @@
259 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 259 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
260 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 260 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
261 </Reference> 261 </Reference>
262 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
263 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 262 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  263 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
264 </Reference> 264 </Reference>
265 - <Reference Include="Vrh.Web.Common.Lib, Version=2.19.3.0, Culture=neutral, processorArchitecture=MSIL">  
266 - <HintPath>..\packages\Vrh.Web.Common.Lib.2.19.3\lib\net451\Vrh.Web.Common.Lib.dll</HintPath> 265 + <Reference Include="Vrh.Web.Common.Lib, Version=2.20.1.0, Culture=neutral, processorArchitecture=MSIL">
  266 + <HintPath>..\packages\Vrh.Web.Common.Lib.2.20.1\lib\net451\Vrh.Web.Common.Lib.dll</HintPath>
267 </Reference> 267 </Reference>
268 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL"> 268 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
269 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath> 269 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath>
@@ -282,6 +282,7 @@ @@ -282,6 +282,7 @@
282 <Compile Include="Attributes.cs" /> 282 <Compile Include="Attributes.cs" />
283 <Compile Include="FullCalendarEvent.cs" /> 283 <Compile Include="FullCalendarEvent.cs" />
284 <Compile Include="ManagerCols.cs" /> 284 <Compile Include="ManagerCols.cs" />
  285 + <Compile Include="SqlServerTypes\Loader.cs" />
285 <Compile Include="StateTrans.cs" /> 286 <Compile Include="StateTrans.cs" />
286 <Compile Include="Properties\AssemblyInfo.cs" /> 287 <Compile Include="Properties\AssemblyInfo.cs" />
287 </ItemGroup> 288 </ItemGroup>
@@ -304,6 +305,15 @@ @@ -304,6 +305,15 @@
304 <None Include="_CreateNewNuGetPackage\RunMeToUploadNuGetPackage.cmd" /> 305 <None Include="_CreateNewNuGetPackage\RunMeToUploadNuGetPackage.cmd" />
305 </ItemGroup> 306 </ItemGroup>
306 <ItemGroup> 307 <ItemGroup>
  308 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  309 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  310 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  311 + </Content>
  312 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  313 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  314 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  315 + </Content>
  316 + <Content Include="SqlServerTypes\readme.htm" />
307 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" /> 317 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />
308 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 318 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" />
309 <None Include="XmlParser.xml"> 319 <None Include="XmlParser.xml">
Vrh.Web.iScheduler.Lib/packages.config
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net461" /> 37 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net461" />
38 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net461" /> 38 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net461" />
39 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" /> 39 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" />
40 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 40 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
41 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net462" /> 41 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net462" />
42 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" /> 42 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
43 <package id="PagedList" version="1.17.0.0" targetFramework="net451" /> 43 <package id="PagedList" version="1.17.0.0" targetFramework="net451" />
@@ -59,8 +59,8 @@ @@ -59,8 +59,8 @@
59 <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" /> 59 <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
60 <package id="VRH.Common" version="3.0.0" targetFramework="net461" /> 60 <package id="VRH.Common" version="3.0.0" targetFramework="net461" />
61 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net461" /> 61 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net461" />
62 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net461" />  
63 - <package id="Vrh.Web.Common.Lib" version="2.19.3" targetFramework="net462" /> 62 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
  63 + <package id="Vrh.Web.Common.Lib" version="2.20.1" targetFramework="net462" />
64 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 64 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
65 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 65 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />
66 <package id="WebGrease" version="1.6.0" targetFramework="net45" /> 66 <package id="WebGrease" version="1.6.0" targetFramework="net45" />
Vrh.Web.iScheduler.Report.Lib/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.Web.iScheduler.Report.Lib/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.Web.iScheduler.Report.Lib/Vrh.NugetModuls.Documentations/Vrh.Web.Common.Lib/ReadMe.md
@@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true) @@ -469,6 +469,19 @@ public RedisConnection(string redisConnectionString, bool isRequired = true)
469 469
470 *** 470 ***
471 ### Version History: 471 ### Version History:
  472 +#### 2.20.1 (2023.09.19) Patches:
  473 +- WebCommon.ErrorListBuilder mostantól saját kódot használ, nem a VRH.Common.ErrorListBuilder-ét. A VRH.Common.EF.ErrorListBuilder kód tartalmát használja, ami meg valamiért nem elérhető.
  474 +
  475 +#### 2.20.0 (2023.09.07) Compatible changes:
  476 +- DataTablesIn.DTColumn osztály kibővült egy OrderField nevű tulajdonsággal.
  477 +- DataTables.Order metódus módosítása, hogy ha ki van töltve az OrderField, akkor a rendezés arra történik.
  478 +
  479 +#### 2.19.5 (2023.08.10) Patches:
  480 +- DataTables.Filter metódus módosítása. Nullozható enumokra is helyesen működik.
  481 +
  482 +#### 2.19.4 (2023.07.18) Patches:
  483 +- DataTables.Filter metódus módosítása. Most már Guid típusú mező szűrésekor is helyesen működik.
  484 +
472 #### 2.19.3 (2023.06.05) Patches: 485 #### 2.19.3 (2023.06.05) Patches:
473 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus. 486 - DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus.
474 487
Vrh.Web.iScheduler.Report.Lib/Vrh.Web.iScheduler.Report.Lib.csproj
@@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
55 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 55 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
56 </Reference> 56 </Reference>
57 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 57 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
58 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 58 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
59 </Reference> 59 </Reference>
60 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 60 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
61 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 61 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -113,11 +113,11 @@ @@ -113,11 +113,11 @@
113 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 113 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
114 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 114 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
115 </Reference> 115 </Reference>
116 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
117 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 116 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  117 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
118 </Reference> 118 </Reference>
119 - <Reference Include="Vrh.Web.Common.Lib, Version=2.19.3.0, Culture=neutral, processorArchitecture=MSIL">  
120 - <HintPath>..\packages\Vrh.Web.Common.Lib.2.19.3\lib\net451\Vrh.Web.Common.Lib.dll</HintPath> 119 + <Reference Include="Vrh.Web.Common.Lib, Version=2.20.1.0, Culture=neutral, processorArchitecture=MSIL">
  120 + <HintPath>..\packages\Vrh.Web.Common.Lib.2.20.1\lib\net451\Vrh.Web.Common.Lib.dll</HintPath>
121 </Reference> 121 </Reference>
122 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL"> 122 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
123 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath> 123 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath>
@@ -137,6 +137,7 @@ @@ -137,6 +137,7 @@
137 <Compile Include="PackageCols.cs" /> 137 <Compile Include="PackageCols.cs" />
138 <Compile Include="Properties\AssemblyInfo.cs" /> 138 <Compile Include="Properties\AssemblyInfo.cs" />
139 <Compile Include="Properties\CommonAssemblyInfo.cs" /> 139 <Compile Include="Properties\CommonAssemblyInfo.cs" />
  140 + <Compile Include="SqlServerTypes\Loader.cs" />
140 </ItemGroup> 141 </ItemGroup>
141 <ItemGroup> 142 <ItemGroup>
142 <None Include="App.config" /> 143 <None Include="App.config" />
@@ -154,9 +155,24 @@ @@ -154,9 +155,24 @@
154 <None Include="_CreateNewNuGetPackage\DoNotModify\CreateNuGetPackage.ps1" /> 155 <None Include="_CreateNewNuGetPackage\DoNotModify\CreateNuGetPackage.ps1" />
155 </ItemGroup> 156 </ItemGroup>
156 <ItemGroup> 157 <ItemGroup>
  158 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  159 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  160 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  161 + </Content>
  162 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\SqlServerSpatial110.dll">
  163 + <Link>SqlServerTypes\x64\SqlServerSpatial110.dll</Link>
  164 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  165 + </Content>
  166 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  167 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  168 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  169 + </Content>
  170 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\SqlServerSpatial110.dll">
  171 + <Link>SqlServerTypes\x86\SqlServerSpatial110.dll</Link>
  172 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  173 + </Content>
157 <Content Include="Content\PagedList.css" /> 174 <Content Include="Content\PagedList.css" />
158 - <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />  
159 - <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 175 + <Content Include="SqlServerTypes\readme.htm" />
160 <None Include="XmlParser.xml"> 176 <None Include="XmlParser.xml">
161 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 177 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
162 </None> 178 </None>
Vrh.Web.iScheduler.Report.Lib/packages.config
@@ -7,15 +7,15 @@ @@ -7,15 +7,15 @@
7 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net451" /> 7 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net451" />
8 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" /> 8 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" />
9 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" /> 9 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" />
10 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 10 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
11 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" /> 11 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" />
12 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" /> 12 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" />
13 <package id="PagedList" version="1.17.0.0" targetFramework="net451" /> 13 <package id="PagedList" version="1.17.0.0" targetFramework="net451" />
14 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" /> 14 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" />
15 <package id="VRH.Common" version="3.0.0" targetFramework="net451" /> 15 <package id="VRH.Common" version="3.0.0" targetFramework="net451" />
16 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" /> 16 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" />
17 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net451" />  
18 - <package id="Vrh.Web.Common.Lib" version="2.19.3" targetFramework="net462" /> 17 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
  18 + <package id="Vrh.Web.Common.Lib" version="2.20.1" targetFramework="net462" />
19 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 19 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
20 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 20 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />
21 </packages> 21 </packages>
22 \ No newline at end of file 22 \ No newline at end of file
Vrh.iScheduler.Report/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.iScheduler.Report/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.iScheduler.Report/Vrh.iScheduler.Report.csproj
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 53 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
54 </Reference> 54 </Reference>
55 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 55 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
56 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 56 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
57 </Reference> 57 </Reference>
58 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 58 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
59 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 59 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -111,8 +111,8 @@ @@ -111,8 +111,8 @@
111 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 111 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
112 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 112 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
113 </Reference> 113 </Reference>
114 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
115 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 114 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  115 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
116 </Reference> 116 </Reference>
117 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL"> 117 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
118 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath> 118 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath>
@@ -149,6 +149,7 @@ @@ -149,6 +149,7 @@
149 <Compile Include="Properties\AssemblyInfo.cs" /> 149 <Compile Include="Properties\AssemblyInfo.cs" />
150 <Compile Include="ScheduleReportVariables.cs" /> 150 <Compile Include="ScheduleReportVariables.cs" />
151 <Compile Include="SchedulerPlugin.cs" /> 151 <Compile Include="SchedulerPlugin.cs" />
  152 + <Compile Include="SqlServerTypes\Loader.cs" />
152 <Compile Include="SRConstants.cs" /> 153 <Compile Include="SRConstants.cs" />
153 <Compile Include="SRGlobal.cs" /> 154 <Compile Include="SRGlobal.cs" />
154 <Compile Include="SRWordCodes.cs" /> 155 <Compile Include="SRWordCodes.cs" />
@@ -181,9 +182,24 @@ @@ -181,9 +182,24 @@
181 <None Include="Vrh.NugetModuls.Documentations\Vrh.XmlProcessing\ReadMe.md" /> 182 <None Include="Vrh.NugetModuls.Documentations\Vrh.XmlProcessing\ReadMe.md" />
182 </ItemGroup> 183 </ItemGroup>
183 <ItemGroup> 184 <ItemGroup>
  185 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  186 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  187 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  188 + </Content>
  189 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\SqlServerSpatial110.dll">
  190 + <Link>SqlServerTypes\x64\SqlServerSpatial110.dll</Link>
  191 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  192 + </Content>
  193 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  194 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  195 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  196 + </Content>
  197 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\SqlServerSpatial110.dll">
  198 + <Link>SqlServerTypes\x86\SqlServerSpatial110.dll</Link>
  199 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  200 + </Content>
184 <Content Include="Content\PagedList.css" /> 201 <Content Include="Content\PagedList.css" />
185 - <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />  
186 - <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 202 + <Content Include="SqlServerTypes\readme.htm" />
187 <None Include="XmlParser.xml"> 203 <None Include="XmlParser.xml">
188 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 204 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
189 </None> 205 </None>
Vrh.iScheduler.Report/packages.config
@@ -7,14 +7,14 @@ @@ -7,14 +7,14 @@
7 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net451" /> 7 <package id="Microsoft.AspNet.Razor" version="3.2.9" targetFramework="net451" />
8 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" /> 8 <package id="Microsoft.AspNet.WebPages" version="3.2.9" targetFramework="net451" />
9 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" /> 9 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" />
10 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 10 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
11 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" /> 11 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" />
12 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" /> 12 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" />
13 <package id="PagedList" version="1.17.0.0" targetFramework="net451" /> 13 <package id="PagedList" version="1.17.0.0" targetFramework="net451" />
14 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" /> 14 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" />
15 <package id="VRH.Common" version="3.0.0" targetFramework="net451" /> 15 <package id="VRH.Common" version="3.0.0" targetFramework="net451" />
16 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" /> 16 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" />
17 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net451" /> 17 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
18 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 18 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
19 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 19 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />
20 </packages> 20 </packages>
21 \ No newline at end of file 21 \ No newline at end of file
Vrh.iScheduler/SqlServerTypes/Loader.cs 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +using System;
  2 +using System.IO;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +namespace SqlServerTypes
  6 +{
  7 + /// <summary>
  8 + /// Utility methods related to CLR Types for SQL Server
  9 + /// </summary>
  10 + internal class Utilities
  11 + {
  12 + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  13 + private static extern IntPtr LoadLibrary(string libname);
  14 +
  15 + /// <summary>
  16 + /// Loads the required native assemblies for the current architecture (x86 or x64)
  17 + /// </summary>
  18 + /// <param name="rootApplicationPath">
  19 + /// Root path of the current application. Use Server.MapPath(".") for ASP.NET applications
  20 + /// and AppDomain.CurrentDomain.BaseDirectory for desktop applications.
  21 + /// </param>
  22 + public static void LoadNativeAssemblies(string rootApplicationPath)
  23 + {
  24 + var nativeBinaryPath = IntPtr.Size > 4
  25 + ? Path.Combine(rootApplicationPath, @"SqlServerTypes\x64\")
  26 + : Path.Combine(rootApplicationPath, @"SqlServerTypes\x86\");
  27 +
  28 + LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
  29 + LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial110.dll");
  30 + }
  31 +
  32 + private static void LoadNativeAssembly(string nativeBinaryPath, string assemblyName)
  33 + {
  34 + var path = Path.Combine(nativeBinaryPath, assemblyName);
  35 + var ptr = LoadLibrary(path);
  36 + if (ptr == IntPtr.Zero)
  37 + {
  38 + throw new Exception(string.Format(
  39 + "Error loading {0} (ErrorCode: {1})",
  40 + assemblyName,
  41 + Marshal.GetLastWin32Error()));
  42 + }
  43 + }
  44 + }
  45 +}
0 \ No newline at end of file 46 \ No newline at end of file
Vrh.iScheduler/SqlServerTypes/readme.htm 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +<html lang="en-US">
  2 +<head>
  3 + <meta charset="utf-8" />
  4 + <title>Microsoft.SqlServer.Types</title>
  5 + <style>
  6 + body {
  7 + background: #fff;
  8 + color: #505050;
  9 + margin: 20px;
  10 + }
  11 +
  12 + #main {
  13 + background: #efefef;
  14 + padding: 5px 30px;
  15 + }
  16 + </style>
  17 +</head>
  18 +<body>
  19 + <div id="main">
  20 + <h1>Action required to load native assemblies</h1>
  21 + <p>
  22 + To deploy an application that uses spatial data types to a machine that does not have 'System CLR Types for SQL Server' installed you also need to deploy the native assembly SqlServerSpatial110.dll. Both x86 (32 bit) and x64 (64 bit) versions of this assembly have been added to your project under the SqlServerTypes\x86 and SqlServerTypes\x64 subdirectories. The native assembly msvcr100.dll is also included in case the C++ runtime is not installed.
  23 + </p>
  24 + <p>
  25 + You need to add code to load the correct one of these assemblies at runtime (depending on the current architecture).
  26 + </p>
  27 + <h2>ASP.NET applications</h2>
  28 + <p>
  29 + For ASP.NET applications, add the following line of code to the Application_Start method in Global.asax.cs:
  30 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));</pre>
  31 + </p>
  32 + <h2>Desktop applications</h2>
  33 + <p>
  34 + For desktop applications, add the following line of code to run before any spatial operations are performed:
  35 + <pre> SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);</pre>
  36 + </p>
  37 + </div>
  38 +</body>
  39 +</html>
0 \ No newline at end of file 40 \ No newline at end of file
Vrh.iScheduler/Vrh.iScheduler.csproj
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath> 63 <HintPath>..\packages\Microsoft.Report.Viewer.11.0.0.0\lib\net\Microsoft.ReportViewer.WebForms.DLL</HintPath>
64 </Reference> 64 </Reference>
65 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> 65 <Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
66 - <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.0\lib\net20\Microsoft.SqlServer.Types.dll</HintPath> 66 + <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.2\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
67 </Reference> 67 </Reference>
68 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 68 <Reference Include="Microsoft.Web.Infrastructure, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
69 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 69 <HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.1\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
@@ -124,11 +124,11 @@ @@ -124,11 +124,11 @@
124 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 124 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
125 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 125 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
126 </Reference> 126 </Reference>
127 - <Reference Include="Vrh.Logger, Version=2.10.0.0, Culture=neutral, processorArchitecture=MSIL">  
128 - <HintPath>..\packages\Vrh.Logger.2.10.0\lib\net451\Vrh.Logger.dll</HintPath> 127 + <Reference Include="Vrh.Logger, Version=2.11.1.0, Culture=neutral, processorArchitecture=MSIL">
  128 + <HintPath>..\packages\Vrh.Logger.2.11.1\lib\net451\Vrh.Logger.dll</HintPath>
129 </Reference> 129 </Reference>
130 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
131 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 130 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  131 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
132 </Reference> 132 </Reference>
133 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL"> 133 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
134 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath> 134 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net451\Vrh.Web.Providers.dll</HintPath>
@@ -159,6 +159,7 @@ @@ -159,6 +159,7 @@
159 <Compile Include="ScheduleExecute.cs" /> 159 <Compile Include="ScheduleExecute.cs" />
160 <Compile Include="SchedulerDB.cs" /> 160 <Compile Include="SchedulerDB.cs" />
161 <Compile Include="SchedulerWordCodes.cs" /> 161 <Compile Include="SchedulerWordCodes.cs" />
  162 + <Compile Include="SqlServerTypes\Loader.cs" />
162 <Compile Include="XmlProcessing\ButtonElement.cs" /> 163 <Compile Include="XmlProcessing\ButtonElement.cs" />
163 <Compile Include="XmlProcessing\iSchedulerXmlParser.cs" /> 164 <Compile Include="XmlProcessing\iSchedulerXmlParser.cs" />
164 <Compile Include="XmlProcessing\ManagerElement.cs" /> 165 <Compile Include="XmlProcessing\ManagerElement.cs" />
@@ -187,6 +188,15 @@ @@ -187,6 +188,15 @@
187 <None Include="_CreateNewNuGetPackage\Config.ps1" /> 188 <None Include="_CreateNewNuGetPackage\Config.ps1" />
188 </ItemGroup> 189 </ItemGroup>
189 <ItemGroup> 190 <ItemGroup>
  191 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
  192 + <Link>SqlServerTypes\x64\msvcr100.dll</Link>
  193 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  194 + </Content>
  195 + <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x86\msvcr100.dll">
  196 + <Link>SqlServerTypes\x86\msvcr100.dll</Link>
  197 + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  198 + </Content>
  199 + <Content Include="SqlServerTypes\readme.htm" />
190 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" /> 200 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />
191 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 201 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" />
192 <None Include="XmlParser.xml"> 202 <None Include="XmlParser.xml">
Vrh.iScheduler/packages.config
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net462" /> 12 <package id="Microsoft.Owin" version="3.0.0" targetFramework="net462" />
13 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net462" /> 13 <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net462" />
14 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" /> 14 <package id="Microsoft.Report.Viewer" version="11.0.0.0" targetFramework="net451" />
15 - <package id="Microsoft.SqlServer.Types" version="11.0.0" targetFramework="net451" /> 15 + <package id="Microsoft.SqlServer.Types" version="11.0.2" targetFramework="net462" />
16 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" /> 16 <package id="Microsoft.Web.Infrastructure" version="2.0.1" targetFramework="net451" />
17 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" /> 17 <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net451" />
18 <package id="Owin" version="1.0" targetFramework="net462" /> 18 <package id="Owin" version="1.0" targetFramework="net462" />
@@ -20,8 +20,8 @@ @@ -20,8 +20,8 @@
20 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" /> 20 <package id="PagedList.Mvc" version="4.5.0.0" targetFramework="net451" />
21 <package id="VRH.Common" version="3.0.0" targetFramework="net451" /> 21 <package id="VRH.Common" version="3.0.0" targetFramework="net451" />
22 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" /> 22 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" />
23 - <package id="Vrh.Logger" version="2.10.0" targetFramework="net462" />  
24 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net451" /> 23 + <package id="Vrh.Logger" version="2.11.1" targetFramework="net462" />
  24 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
25 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 25 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
26 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 26 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />
27 </packages> 27 </packages>
28 \ No newline at end of file 28 \ No newline at end of file
iSchedulerMonitor/iSchedulerMonitor.ACPlugin.csproj
@@ -118,11 +118,11 @@ @@ -118,11 +118,11 @@
118 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL"> 118 <Reference Include="VRH.Log4Pro.MultiLanguageManager, Version=3.21.3.0, Culture=neutral, processorArchitecture=MSIL">
119 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath> 119 <HintPath>..\packages\VRH.Log4Pro.MultiLanguageManager.3.21.3\lib\net45\VRH.Log4Pro.MultiLanguageManager.dll</HintPath>
120 </Reference> 120 </Reference>
121 - <Reference Include="Vrh.Logger, Version=2.10.0.0, Culture=neutral, processorArchitecture=MSIL">  
122 - <HintPath>..\packages\Vrh.Logger.2.10.0\lib\net451\Vrh.Logger.dll</HintPath> 121 + <Reference Include="Vrh.Logger, Version=2.11.1.0, Culture=neutral, processorArchitecture=MSIL">
  122 + <HintPath>..\packages\Vrh.Logger.2.11.1\lib\net451\Vrh.Logger.dll</HintPath>
123 </Reference> 123 </Reference>
124 - <Reference Include="Vrh.Membership, Version=4.11.0.0, Culture=neutral, processorArchitecture=MSIL">  
125 - <HintPath>..\packages\Vrh.Membership.4.11.0\lib\net451\Vrh.Membership.dll</HintPath> 124 + <Reference Include="Vrh.Membership, Version=4.13.0.0, Culture=neutral, processorArchitecture=MSIL">
  125 + <HintPath>..\packages\Vrh.Membership.4.13.0\lib\net451\Vrh.Membership.dll</HintPath>
126 </Reference> 126 </Reference>
127 <Reference Include="VRH.Mockable.TimeProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> 127 <Reference Include="VRH.Mockable.TimeProvider, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
128 <HintPath>..\packages\VRH.Mockable.TimeProvider.1.0.0\lib\net45\VRH.Mockable.TimeProvider.dll</HintPath> 128 <HintPath>..\packages\VRH.Mockable.TimeProvider.1.0.0\lib\net45\VRH.Mockable.TimeProvider.dll</HintPath>
@@ -163,9 +163,6 @@ @@ -163,9 +163,6 @@
163 <None Include="ApplicationContainer.Config.xml"> 163 <None Include="ApplicationContainer.Config.xml">
164 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 164 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
165 </None> 165 </None>
166 - <None Include="LogConfig.xml">  
167 - <CopyToOutputDirectory>Always</CopyToOutputDirectory>  
168 - </None>  
169 <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll"> 166 <Content Include="..\packages\Microsoft.SqlServer.Types.11.0.2\nativeBinaries\x64\msvcr100.dll">
170 <Link>SqlServerTypes\x64\msvcr100.dll</Link> 167 <Link>SqlServerTypes\x64\msvcr100.dll</Link>
171 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 168 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -174,6 +171,9 @@ @@ -174,6 +171,9 @@
174 <Link>SqlServerTypes\x86\msvcr100.dll</Link> 171 <Link>SqlServerTypes\x86\msvcr100.dll</Link>
175 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 172 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
176 </Content> 173 </Content>
  174 + <None Include="LogConfig.xml">
  175 + <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  176 + </None>
177 <Content Include="SqlServerTypes\readme.htm" /> 177 <Content Include="SqlServerTypes\readme.htm" />
178 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" /> 178 <Content Include="SqlServerTypes\x64\SqlServerSpatial110.dll" />
179 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" /> 179 <Content Include="SqlServerTypes\x86\SqlServerSpatial110.dll" />
iSchedulerMonitor/packages.config
@@ -16,8 +16,8 @@ @@ -16,8 +16,8 @@
16 <package id="Vrh.ApplicationContainer.Control.Contract" version="0.1.0" targetFramework="net451" /> 16 <package id="Vrh.ApplicationContainer.Control.Contract" version="0.1.0" targetFramework="net451" />
17 <package id="VRH.Common" version="3.0.0" targetFramework="net451" /> 17 <package id="VRH.Common" version="3.0.0" targetFramework="net451" />
18 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" /> 18 <package id="VRH.Log4Pro.MultiLanguageManager" version="3.21.3" targetFramework="net451" />
19 - <package id="Vrh.Logger" version="2.10.0" targetFramework="net462" />  
20 - <package id="Vrh.Membership" version="4.11.0" targetFramework="net451" /> 19 + <package id="Vrh.Logger" version="2.11.1" targetFramework="net462" />
  20 + <package id="Vrh.Membership" version="4.13.0" targetFramework="net462" />
21 <package id="VRH.Mockable.TimeProvider" version="1.0.0" targetFramework="net45" /> 21 <package id="VRH.Mockable.TimeProvider" version="1.0.0" targetFramework="net45" />
22 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" /> 22 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net451" requireReinstallation="true" />
23 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" /> 23 <package id="Vrh.XmlProcessing" version="1.32.0" targetFramework="net462" />