Browse Source

Merge branch 'master' of https://github.com/abpframework/abp

pull/997/head
Armağan Ünlü 7 years ago
parent
commit
665ab13fee
  1. 2
      .gitignore
  2. 2
      common.props
  3. 146
      docs/en/VoloDocs.md
  4. BIN
      docs/en/images/volodocs-iis-add-website.png
  5. BIN
      docs/en/images/volodocs-iis-application-pool.png
  6. 2
      framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs
  7. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json
  8. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js
  9. 30
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js
  10. 1
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs
  11. 6
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
  12. 28
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentClaimsPrincipalTenantResolveContributor.cs
  13. 24
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentUserTenantResolveContributor.cs
  14. 2
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolveOptions.cs
  15. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
  16. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
  17. 7
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json
  18. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json
  19. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json
  20. 11
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json
  21. 10
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs
  22. 35
      modules/docs/Volo.Docs.sln
  23. 4
      modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml
  24. 16
      modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml.cs
  25. 6
      modules/docs/app/Volo.DocsTestApp/appsettings.json
  26. 32
      modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_de.js
  27. 137
      modules/docs/app/Volo.DocsTestApp/wwwroot/libs/lodash/lodash.min.js
  28. 37
      modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json
  29. 47
      modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/package.json
  30. 6
      modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.Designer.cs
  31. 2
      modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.cs
  32. 8
      modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/VoloDocsDbContextModelSnapshot.cs
  33. 1
      modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj
  34. 6
      modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContext.cs
  35. 14
      modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs
  36. 4
      modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsEntityFrameworkCoreModule.cs
  37. 13
      modules/docs/app/VoloDocs.Migrator/AppExtensions.cs
  38. 1
      modules/docs/app/VoloDocs.Migrator/Migrate.bat
  39. 94
      modules/docs/app/VoloDocs.Migrator/Program.cs
  40. 27
      modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj
  41. 29
      modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs
  42. 3
      modules/docs/app/VoloDocs.Migrator/appsettings.json
  43. BIN
      modules/docs/app/VoloDocs.Web/Assets/Images/Logo.png
  44. 29
      modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs
  45. 2
      modules/docs/app/VoloDocs.Web/Controllers/HomeController.cs
  46. 9
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json
  47. 9
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json
  48. 11
      modules/docs/app/VoloDocs.Web/Pages/Error.cshtml
  49. 64
      modules/docs/app/VoloDocs.Web/Pages/Error.cshtml.cs
  50. 55
      modules/docs/app/VoloDocs.Web/Pages/Index.cshtml
  51. 46
      modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs
  52. 0
      modules/docs/app/VoloDocs.Web/Pages/_ViewImports.cshtml
  53. 2
      modules/docs/app/VoloDocs.Web/Program.cs
  54. 2
      modules/docs/app/VoloDocs.Web/Properties/launchSettings.json
  55. 4
      modules/docs/app/VoloDocs.Web/Startup.cs
  56. 32
      modules/docs/app/VoloDocs.Web/Utils/GlobalExceptionHandlerMiddleware.cs
  57. 23
      modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj
  58. 62
      modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
  59. 0
      modules/docs/app/VoloDocs.Web/abp.resourcemapping.js
  60. 5
      modules/docs/app/VoloDocs.Web/appsettings.json
  61. 0
      modules/docs/app/VoloDocs.Web/gulpfile.js
  62. 0
      modules/docs/app/VoloDocs.Web/package-lock.json
  63. 0
      modules/docs/app/VoloDocs.Web/package.json
  64. 11
      modules/docs/app/VoloDocs.Web/publish.bat
  65. 1
      modules/docs/app/VoloDocs.Web/run.bat
  66. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js
  67. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js
  68. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/anchor-js/anchor.js
  69. 241
      modules/docs/app/VoloDocs.Web/wwwroot/libs/bootstrap/css/bootstrap.css
  70. 229
      modules/docs/app/VoloDocs.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js
  71. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/clipboard/clipboard.js
  72. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/clipboard/clipboard.min.js
  73. 6
      modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css
  74. 10
      modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js
  75. 200
      modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net/js/jquery.dataTables.js
  76. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/css/font-awesome.css
  77. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/FontAwesome.otf
  78. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot
  79. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg
  80. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf
  81. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff
  82. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2
  83. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-form/jquery.form.min.js
  84. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js
  85. 78
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/jquery.validate.js
  86. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.js
  87. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.min.js
  88. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.js
  89. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.min.js
  90. 2
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js
  91. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.min.js
  92. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js
  93. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js
  94. 0
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.js
  95. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.min.js
  96. 3
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js
  97. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.min.js
  98. 22
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.js
  99. 4
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.min.js
  100. 82
      modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.js

2
.gitignore

@ -267,7 +267,7 @@ framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Logs/*.*
modules/blog/app/Volo.BlogTestApp/Logs/*.* modules/blog/app/Volo.BlogTestApp/Logs/*.*
modules/blogging/app/Volo.BloggingTestApp/Logs/*.* modules/blogging/app/Volo.BloggingTestApp/Logs/*.*
modules/blogging/app/Volo.BloggingTestApp/wwwroot/files/*.* modules/blogging/app/Volo.BloggingTestApp/wwwroot/files/*.*
modules/docs/app/Volo.DocsTestApp/Logs/*.* modules/docs/app/VoloDocs.Web/Logs/*.*
samples/BookStore/src/Acme.BookStore.Web/Logs/*.* samples/BookStore/src/Acme.BookStore.Web/Logs/*.*
templates/module/app/MyCompanyName.MyProjectName.DemoApp/Logs/*.* templates/module/app/MyCompanyName.MyProjectName.DemoApp/Logs/*.*
templates/mvc/src/MyCompanyName.MyProjectName.Web/Logs/*.* templates/mvc/src/MyCompanyName.MyProjectName.Web/Logs/*.*

2
common.props

@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>0.15.0</Version> <Version>0.16.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn> <NoWarn>$(NoWarn);CS1591</NoWarn>
<PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl> <PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl>
<PackageProjectUrl>https://abp.io</PackageProjectUrl> <PackageProjectUrl>https://abp.io</PackageProjectUrl>

146
docs/en/VoloDocs.md

@ -0,0 +1,146 @@
# VoloDocs
## What is VoloDocs?
VoloDocs is a cross-platform web application that allows you to easily create beautiful documentation and build developer communities. It simplifies software documentation with the help of GitHub integration. You use the power of GitHub for versioning, hosting of your docs. You let your users to edit a document.
## Main Features
- Serves documents from your GitHub repository.
- Supports Markdown / HTML document formatting.
- Supports versioning (integrated to GitHub releases).
- Support multiple projects.
- Allows users to edit a document on GitHub.
- Cross-platform; deployable to Windows / Linux / macOS.
## GitHub Repository
It's free & open-source. You can browse VoloDocs source-code and contribute on GitHub:
https://github.com/abpframework/abp/tree/master/modules/docs
## Download
You can download the VoloDocs release from the following link:
http://apps.abp.io/VoloDocs/VoloDocs.zip
## Folder Structure
When you extract the VoloDocs.Release zip file, you see a `Web` folder and a `Migrator` folder. `Web` folder contains the website files and `Migrator` contains the application to build your database. Before publishing your website, you need to create a new database or update your existing database to the latest. If this is the first time you install VoloDocs, `Migrator` will create a new database for you, otherwise it updates to the latest version. The only setting you need to configure, is the `ConnectionString` which is located in the `appsettings.json` file. See the next section for how to configure your VoloDocs application.
## Steps by Step Deployment
- ### Database Migration
To update your existing database or create your initial database, go to `Migrator` folder in your VoloDocs directory.
Open `appsettings.json` in your text editor and set your database connection string. If you don't know how to write the connection string for your database system, you can check out https://www.connectionstrings.com/.
After you set your connection string, run `Migrate.bat` for Windows platform and `VoloDocs.Migrator` for other operating systems. That's it now configure your website.
- ### Configuring Website
Go to `Web` folder in your VoloDocs directory. Open `appsettings.json` in your text editor. Set your connection string (same as in the `Migrator`'s `appsettings.json`). Set `title` of your website. This will be written on the left-upper corner of your website. That's it! Now you can publish your website.
If you want to run
- ### Publishing Website
In the previous step, you created or updated your database. Ensure that your database exists on the specified connection string.
- #### Publishing to IIS
- Move `Web` folder to your `wwwroot ` folder.
- Rename `Web` folder to `VoloDocs` (Now you have `C:\inetpub\wwwroot\VoloDocs`).![Add IIS Website](images/volodocs-iis-add-website.png)
- The `VoloDocs` application pool is being created automatically. Open **Application Pools** and double click `VoloDocs` application pool and set
- **.NET CLR version**: `No Managed Code`
- **Managed pipeline mode**: `Integrated`
![Add IIS Website](images/volodocs-iis-application-pool.png)
- If you get the below error, it means don't have the hosting bundle installed on the server. See [this document](https://docs.microsoft.com/aspnet/core/host-and-deploy/iis/#install-the-net-core-hosting-bundle) to learn how to install it or [download Hosting Bundle](https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer) and run on your server.
```
Handler "aspNetCore" has a bad module "AspNetCoreModuleV2" in its module list using IIS
```
- Further information about hosting VoloDocs check out [Microsoft's official document for hosting ASP.NET Core application on IIS](https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis).
- #### Publishing to Azure
Microsoft has a good document on how to deploy your ASP.NET Core web app to Azure App Service. We recommend you to read this document https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-dotnet.
- #### Running the Application From Command Line
Alternatively you can run the application from command line, navigate to `VoloDocs\Web` folder and run the below command in your command line for Windows:
```powershell
dotnet VoloDocs.Web.dll
```
- ### First Run
To start the website, navigate to your address (as configured in the previous section).
When you first open the website, you need to create a project.
#### Creating a Project
Go to the following address to create project
- `http://<yourwebsite>/Account/Login?returnUrl=/Docs/Admin/Projects`
##### Default credentials
To login the admin side, use the following credentials:
* **Username**: `admin`
* **Password**: `1q2w3E*`
##### An example project definition
Here's a sample project information that uses GitHub source.
We will configure the VoloDocs to show ABP Framework's documentation that's stored in GitHub.
Here's the link to ABP Framework GitHub docs folder:
https://github.com/abpframework/abp/tree/master/docs/en
* **Name**: `ABP Framework`
* **Short name**: `abp`
* **Format**: `markdown`
* **Default document name**: `Index`
* **Navigation document name**: `docs-nav.json`
* **Minimum version**: <empty>
* **Main web site URL**: /
* **Latest version branch name**: <empty>
* **GitHub root URL**: `https://github.com/abpframework/abp/tree/{version}/docs/en/`
* **GitHub access token**: <retrieve from GitHub>
* **GitHub user agent**: <your username>
After you save the project, go to root website address and you will see your documentation.
* `http://<yourwebsite>/documents`

BIN
docs/en/images/volodocs-iis-add-website.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/en/images/volodocs-iis-application-pool.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

2
framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptionsExtensions.cs

@ -8,7 +8,7 @@ namespace Volo.Abp.MultiTenancy
public static void AddDomainTenantResolver(this TenantResolveOptions options, string domainFormat) public static void AddDomainTenantResolver(this TenantResolveOptions options, string domainFormat)
{ {
options.TenantResolvers.InsertAfter( options.TenantResolvers.InsertAfter(
r => r is CurrentClaimsPrincipalTenantResolveContributor, r => r is CurrentUserTenantResolveContributor,
new DomainTenantResolveContributor(domainFormat) new DomainTenantResolveContributor(domainFormat)
); );
} }

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json

@ -4,6 +4,9 @@
"GivenTenantIsNotAvailable": "给定的租户不可用: {0}", "GivenTenantIsNotAvailable": "给定的租户不可用: {0}",
"SwitchTenant": "切换租户", "SwitchTenant": "切换租户",
"Name": "名称", "Name": "名称",
"SwitchTenantHint": "将name字段留空以切换到宿主端." "SwitchTenantHint": "将name字段留空以切换到宿主端.",
"Tenant": "租户",
"Switch": "切换",
"NotSelected": "未选中"
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js

@ -69,6 +69,10 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f
//TODO: data-ajaxForm comparison seems wrong! //TODO: data-ajaxForm comparison seems wrong!
if (_$form.attr('data-ajaxForm') === undefined || _$form.attr('data-ajaxForm') === false) { if (_$form.attr('data-ajaxForm') === undefined || _$form.attr('data-ajaxForm') === false) {
_$form.abpAjaxForm(); _$form.abpAjaxForm();
}
if (_$form.attr('data-check-form-on-close') === undefined || _$form.attr('data-check-form-on-close') != 'false') {
_$form.needConfirmationOnUnsavedClose(_$modal);
} }
_$form.on('abp-ajax-success', _$form.on('abp-ajax-success',

30
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js

@ -3,6 +3,10 @@
return; return;
} }
var localize = function (key) {
return abp.localization.getResource('AbpUi')(key);
};
/* A simple jQuery plug-in to make a button busy. */ /* A simple jQuery plug-in to make a button busy. */
$.fn.buttonBusy = function (isBusy) { $.fn.buttonBusy = function (isBusy) {
return $(this).each(function () { return $(this).each(function () {
@ -127,4 +131,30 @@
}); });
}; };
$.fn.needConfirmationOnUnsavedClose = function ($modal) {
var $form = $(this);
var formSaved = false;
var unEditedForm = JSON.stringify($form.serializeFormToObject());
$modal.on("hide.bs.modal", function (e) {
var currentForm = JSON.stringify($form.serializeFormToObject());
var thereAreUnsavedChanges = currentForm !== unEditedForm;
if (!formSaved && thereAreUnsavedChanges) {
e.preventDefault();
abp.message.confirm(localize('AreYouSureYouWantToCancelEditingWarningMessage'),
function (result) {
if (result) {
formSaved = true;
$modal.modal('hide');
}
});
}
});
$(this).on('abp-ajax-success',function () {
formSaved = true;
});
};
})(jQuery); })(jQuery);

1
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs

@ -19,6 +19,7 @@ namespace Volo.Abp.Authorization.Permissions
public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context) public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{ {
var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray();
if (roles == null || !roles.Any()) if (roles == null || !roles.Any())
{ {
return PermissionGrantResult.Undefined; return PermissionGrantResult.Undefined;

6
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

@ -225,7 +225,11 @@ namespace Volo.Abp.Http.Client.DynamicProxying
} }
//TODO: Is that the way we want? Couldn't send the culture (not ui culture) //TODO: Is that the way we want? Couldn't send the culture (not ui culture)
requestMessage.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(CultureInfo.CurrentUICulture.Name)); var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name;
if (!currentCulture.IsNullOrEmpty())
{
requestMessage.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(currentCulture));
}
} }
private string GetConfiguredApiVersion() private string GetConfiguredApiVersion()

28
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentClaimsPrincipalTenantResolveContributor.cs

@ -1,28 +0,0 @@
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.MultiTenancy
{
public class CurrentClaimsPrincipalTenantResolveContributor : TenantResolveContributorBase
{
public const string ContributorName = "CurrentClaims";
public override string Name => ContributorName;
public override void Resolve(ITenantResolveContext context)
{
var principal = context.ServiceProvider.GetRequiredService<ICurrentPrincipalAccessor>().Principal;
if (principal?.Identity?.IsAuthenticated != true)
{
return;
}
context.Handled = true;
context.TenantIdOrName = principal
.Claims
.FirstOrDefault(c => c.Type == AbpClaimTypes.TenantId)
?.Value;
}
}
}

24
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentUserTenantResolveContributor.cs

@ -0,0 +1,24 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Users;
namespace Volo.Abp.MultiTenancy
{
public class CurrentUserTenantResolveContributor : TenantResolveContributorBase
{
public const string ContributorName = "CurrentUser";
public override string Name => ContributorName;
public override void Resolve(ITenantResolveContext context)
{
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
if (currentUser.IsAuthenticated != true)
{
return;
}
context.Handled = true;
context.TenantIdOrName = currentUser.TenantId?.ToString();
}
}
}

2
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolveOptions.cs

@ -12,7 +12,7 @@ namespace Volo.Abp.MultiTenancy
{ {
TenantResolvers = new List<ITenantResolveContributor> TenantResolvers = new List<ITenantResolveContributor>
{ {
new CurrentClaimsPrincipalTenantResolveContributor() new CurrentUserTenantResolveContributor()
}; };
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json

@ -45,6 +45,7 @@
"PagerShowMenuEntries": "Show _MENU_ entries", "PagerShowMenuEntries": "Show _MENU_ entries",
"DatatableActionDropdownDefaultText": "Actions", "DatatableActionDropdownDefaultText": "Actions",
"ChangePassword": "Change password", "ChangePassword": "Change password",
"PersonalInfo": "My profile" "PersonalInfo": "My profile",
"AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes."
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json

@ -45,6 +45,7 @@
"PagerShowMenuEntries": "Sayfada _MENU_ kayıt göster.", "PagerShowMenuEntries": "Sayfada _MENU_ kayıt göster.",
"DatatableActionDropdownDefaultText": "İşlemler", "DatatableActionDropdownDefaultText": "İşlemler",
"ChangePassword": "Şifre değiştir", "ChangePassword": "Şifre değiştir",
"PersonalInfo": "Profilim" "PersonalInfo": "Profilim",
"AreYouSureYouWantToCancelEditingWarningMessage": "Kaydedilmemiş değişiklikler var."
} }
} }

7
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json

@ -0,0 +1,7 @@
{
"culture": "zh-Hans",
"texts": {
"BirthDate": "生日",
"Value1": "Value One"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json

@ -0,0 +1,7 @@
{
"culture": "zh-Hans",
"texts": {
"USA": "美国",
"Brazil": "巴西"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json

@ -0,0 +1,7 @@
{
"culture": "zh-Hans",
"texts": {
"ThisFieldIsRequired": "此字段是必填字段",
"MaxLenghtErrorMessage": "该字段最多可包含'{0}'个字符"
}
}

11
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json

@ -0,0 +1,11 @@
{
"culture": "zh-Hans",
"texts": {
"Hello <b>{0}</b>.": "你好 <b>{0}</b>.",
"Car": "汽车",
"CarPlural": "汽车",
"MaxLenghtErrorMessage": "此字段的长度最多为'{0}'个字符",
"Universe": "宇宙",
"FortyTwo": "四十二"
}
}

10
modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs

@ -13,7 +13,7 @@ namespace Volo.Blogging
[Fact] [Fact]
public void IncreaseReadCount() public void IncreaseReadCount()
{ {
var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); var post = new Post(Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io");
post.IncreaseReadCount(); post.IncreaseReadCount();
post.ReadCount.ShouldBe(1); post.ReadCount.ShouldBe(1);
} }
@ -23,7 +23,7 @@ namespace Volo.Blogging
[InlineData("bbb")] [InlineData("bbb")]
public void SetTitle(string title) public void SetTitle(string title)
{ {
var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); var post = new Post(Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io");
post.SetTitle(title); post.SetTitle(title);
post.Title.ShouldBe(title); post.Title.ShouldBe(title);
} }
@ -33,7 +33,7 @@ namespace Volo.Blogging
[InlineData("bbb")] [InlineData("bbb")]
public void SetUrl(string url) public void SetUrl(string url)
{ {
var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); var post = new Post(Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io");
post.SetUrl(url); post.SetUrl(url);
post.Url.ShouldBe(url); post.Url.ShouldBe(url);
} }
@ -41,7 +41,7 @@ namespace Volo.Blogging
[Fact] [Fact]
public void AddTag() public void AddTag()
{ {
var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); var post = new Post(Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io");
var tagId = Guid.NewGuid(); var tagId = Guid.NewGuid();
post.AddTag(tagId); post.AddTag(tagId);
post.Tags.ShouldContain(x => x.TagId == tagId); post.Tags.ShouldContain(x => x.TagId == tagId);
@ -51,7 +51,7 @@ namespace Volo.Blogging
[Fact] [Fact]
public void RemoveTag() public void RemoveTag()
{ {
var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); var post = new Post(Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io");
var tagId = Guid.NewGuid(); var tagId = Guid.NewGuid();
post.AddTag(tagId); post.AddTag(tagId);

35
modules/docs/Volo.Docs.sln

@ -23,10 +23,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Docs.Web", "src\Volo.D
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{555508AD-F593-43E3-9354-9FA51512F181}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{555508AD-F593-43E3-9354-9FA51512F181}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.DocsTestApp", "app\Volo.DocsTestApp\Volo.DocsTestApp.csproj", "{30BC20A3-85CE-4907-8FD0-54153C3F190C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.DocsTestApp.EntityFrameworkCore", "app\Volo.DocsTestApp.EntityFrameworkCore\Volo.DocsTestApp.EntityFrameworkCore.csproj", "{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "domain", "domain", "{A982A58E-1E92-4764-9F56-39E7AABB8556}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "domain", "domain", "{A982A58E-1E92-4764-9F56-39E7AABB8556}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin-app", "admin-app", "{BCA19441-17E9-43E6-AED1-15344D18F967}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin-app", "admin-app", "{BCA19441-17E9-43E6-AED1-15344D18F967}"
@ -55,6 +51,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Docs.TestBase", "test\
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Docs.Admin.Application.Tests", "test\Volo.Docs.Admin.Application.Tests\Volo.Docs.Admin.Application.Tests.csproj", "{E9CF69BC-EEA6-4621-BE0E-64EE37C89807}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Docs.Admin.Application.Tests", "test\Volo.Docs.Admin.Application.Tests\Volo.Docs.Admin.Application.Tests.csproj", "{E9CF69BC-EEA6-4621-BE0E-64EE37C89807}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoloDocs.EntityFrameworkCore", "app\VoloDocs.EntityFrameworkCore\VoloDocs.EntityFrameworkCore.csproj", "{1B459653-8DAC-41CD-A08E-28D6E74265D3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoloDocs.Web", "app\VoloDocs.Web\VoloDocs.Web.csproj", "{057EA924-4524-4452-840C-5E3D509F2ED3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoloDocs.Migrator", "app\VoloDocs.Migrator\VoloDocs.Migrator.csproj", "{8A5E5001-C017-44A8-ADDA-DC66C102556E}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -93,14 +95,6 @@ Global
{871FB966-C89F-4AF5-BB1D-172625AA571C}.Debug|Any CPU.Build.0 = Debug|Any CPU {871FB966-C89F-4AF5-BB1D-172625AA571C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{871FB966-C89F-4AF5-BB1D-172625AA571C}.Release|Any CPU.ActiveCfg = Release|Any CPU {871FB966-C89F-4AF5-BB1D-172625AA571C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{871FB966-C89F-4AF5-BB1D-172625AA571C}.Release|Any CPU.Build.0 = Release|Any CPU {871FB966-C89F-4AF5-BB1D-172625AA571C}.Release|Any CPU.Build.0 = Release|Any CPU
{30BC20A3-85CE-4907-8FD0-54153C3F190C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30BC20A3-85CE-4907-8FD0-54153C3F190C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30BC20A3-85CE-4907-8FD0-54153C3F190C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30BC20A3-85CE-4907-8FD0-54153C3F190C}.Release|Any CPU.Build.0 = Release|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A}.Release|Any CPU.Build.0 = Release|Any CPU
{37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.Build.0 = Debug|Any CPU {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37D483C8-400B-4127-A6D0-2EE4E80CB696}.Release|Any CPU.ActiveCfg = Release|Any CPU {37D483C8-400B-4127-A6D0-2EE4E80CB696}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -141,6 +135,18 @@ Global
{E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Release|Any CPU.Build.0 = Release|Any CPU {E9CF69BC-EEA6-4621-BE0E-64EE37C89807}.Release|Any CPU.Build.0 = Release|Any CPU
{1B459653-8DAC-41CD-A08E-28D6E74265D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B459653-8DAC-41CD-A08E-28D6E74265D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B459653-8DAC-41CD-A08E-28D6E74265D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B459653-8DAC-41CD-A08E-28D6E74265D3}.Release|Any CPU.Build.0 = Release|Any CPU
{057EA924-4524-4452-840C-5E3D509F2ED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{057EA924-4524-4452-840C-5E3D509F2ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{057EA924-4524-4452-840C-5E3D509F2ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{057EA924-4524-4452-840C-5E3D509F2ED3}.Release|Any CPU.Build.0 = Release|Any CPU
{8A5E5001-C017-44A8-ADDA-DC66C102556E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A5E5001-C017-44A8-ADDA-DC66C102556E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A5E5001-C017-44A8-ADDA-DC66C102556E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A5E5001-C017-44A8-ADDA-DC66C102556E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -154,8 +160,6 @@ Global
{30808C64-F590-47F7-AF8A-256F6B6E186B} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5} {30808C64-F590-47F7-AF8A-256F6B6E186B} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5}
{BF3FDDFF-BED8-422C-82E9-07F181A2D47F} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5} {BF3FDDFF-BED8-422C-82E9-07F181A2D47F} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5}
{871FB966-C89F-4AF5-BB1D-172625AA571C} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5} {871FB966-C89F-4AF5-BB1D-172625AA571C} = {8B0CDFC9-E313-4323-9390-59CFFAAC60B5}
{30BC20A3-85CE-4907-8FD0-54153C3F190C} = {555508AD-F593-43E3-9354-9FA51512F181}
{A5F88BCB-6B22-4E2D-AE89-AEF1E3DC727A} = {555508AD-F593-43E3-9354-9FA51512F181}
{A982A58E-1E92-4764-9F56-39E7AABB8556} = {42416152-5BAB-4706-93A6-57A19E71FE14} {A982A58E-1E92-4764-9F56-39E7AABB8556} = {42416152-5BAB-4706-93A6-57A19E71FE14}
{BCA19441-17E9-43E6-AED1-15344D18F967} = {42416152-5BAB-4706-93A6-57A19E71FE14} {BCA19441-17E9-43E6-AED1-15344D18F967} = {42416152-5BAB-4706-93A6-57A19E71FE14}
{8B0CDFC9-E313-4323-9390-59CFFAAC60B5} = {42416152-5BAB-4706-93A6-57A19E71FE14} {8B0CDFC9-E313-4323-9390-59CFFAAC60B5} = {42416152-5BAB-4706-93A6-57A19E71FE14}
@ -169,6 +173,9 @@ Global
{89F895EA-C4A0-4D91-9181-016F78459776} = {59D430A9-AC61-4457-8338-5DA0705ABB5D} {89F895EA-C4A0-4D91-9181-016F78459776} = {59D430A9-AC61-4457-8338-5DA0705ABB5D}
{C8BF652A-6DDF-4E5C-8CBA-BA5AFC50BFE2} = {59D430A9-AC61-4457-8338-5DA0705ABB5D} {C8BF652A-6DDF-4E5C-8CBA-BA5AFC50BFE2} = {59D430A9-AC61-4457-8338-5DA0705ABB5D}
{E9CF69BC-EEA6-4621-BE0E-64EE37C89807} = {59D430A9-AC61-4457-8338-5DA0705ABB5D} {E9CF69BC-EEA6-4621-BE0E-64EE37C89807} = {59D430A9-AC61-4457-8338-5DA0705ABB5D}
{1B459653-8DAC-41CD-A08E-28D6E74265D3} = {555508AD-F593-43E3-9354-9FA51512F181}
{057EA924-4524-4452-840C-5E3D509F2ED3} = {555508AD-F593-43E3-9354-9FA51512F181}
{8A5E5001-C017-44A8-ADDA-DC66C102556E} = {555508AD-F593-43E3-9354-9FA51512F181}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {13691265-2547-4FFF-B757-E8FACB05679D} SolutionGuid = {13691265-2547-4FFF-B757-E8FACB05679D}

4
modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml

@ -1,4 +0,0 @@
@page
@model Volo.DocsTestApp.Pages.IndexModel
<h3>Welcome to the Docs Demo!</h3>
<a href="/documents/">Go to documents...</a>

16
modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml.cs

@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace Volo.DocsTestApp.Pages
{
public class IndexModel : PageModel
{
public void OnGet()
{
}
}
}

6
modules/docs/app/Volo.DocsTestApp/appsettings.json

@ -1,6 +0,0 @@
{
"ConnectionStrings": {
"SqlServer": "Server=localhost;Database=DocsTestApp;Trusted_Connection=True;MultipleActiveResultSets=true",
"MongoDb": "mongodb://localhost:27017|DocsTestApp"
}
}

32
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_de.js

@ -1,32 +0,0 @@
(function( factory ) {
if ( typeof define === "function" && define.amd ) {
define( ["jquery", "../jquery.validate"], factory );
} else if (typeof module === "object" && module.exports) {
module.exports = factory( require( "jquery" ) );
} else {
factory( jQuery );
}
}(function( $ ) {
/*
* Translated default messages for the jQuery validation plugin.
* Locale: DE (German, Deutsch)
*/
$.extend( $.validator.messages, {
required: "Dieses Feld ist ein Pflichtfeld.",
maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
url: "Geben Sie bitte eine gültige URL ein.",
date: "Bitte geben Sie ein gültiges Datum ein.",
number: "Geben Sie bitte eine Nummer ein.",
digits: "Geben Sie bitte nur Ziffern ein.",
equalTo: "Bitte denselben Wert wiederholen.",
range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein."
} );
return $;
}));

137
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/lodash/lodash.min.js

@ -1,137 +0,0 @@
/**
* @license
* Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
*/
;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;
return true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);
return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){
--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;
}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return"\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];
}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split("");
}var T,$=1/0,F=NaN,N=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],P=/\b__p\+='';/g,Z=/\b(__p\+=)''\+/g,q=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={};
Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false;
var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true,
Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){
try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I",
"\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C",
"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i",
"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r",
"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij",
"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),tt=x({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),rt=function x(mn){function An(n){if(du(n)&&!of(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(ii.call(n,"__wrapped__"))return $e(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,
this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);
}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=of(n),u=!e&&uf(n),i=!e&&!u&&cf(n),o=!e&&!u&&!i&&pf(n),u=(e=e||u||i||o)?A(n.length,Xu):[],f=u.length;for(r in n)!t&&!ii.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return Ce(Ur(n),pt(t,0,n.length))}function ut(n){return Ce(Ur(n))}function it(n,t,r){(r===T||au(n[t],r))&&(r!==T||t in n)||st(n,t,r);
}function ot(n,t,r){var e=n[t];ii.call(n,t)&&au(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(au(n[r][0],t))return r;return-1}function ct(n,t,r,e){return eo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,zu(t),n)}function lt(n,t){return n&&Cr(t,Wu(t),n)}function st(n,t,r){"__proto__"==t&&mi?mi(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Vu(e),i=null==n;++r<e;)u[r]=i?T:Iu(n,t[r]);return u;
}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!gu(n))return n;if(u=of(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=_o(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(cf(n))return Ir(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),
i=o.get(n))return i;if(o.set(n,f),hf(n))return n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}),f;if(lf(n))return n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))}),f;var a=l?a?ve:_e:a?Wu:zu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=zu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Yu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!="function")throw new ni("Expected a function");
return yo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return eo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!ju(o):r(o,f)))var f=o,c=i;
}return c}function jt(n,t){var r=[];return eo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&io(n,t,zu)}function At(n,t){return n&&oo(n,t,zu)}function Et(n,t){return i(t,function(t){return pu(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[De(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),
of(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?"[object Undefined]":"[object Null]";else if(wi&&wi in Yu(n)){var t=ii.call(n,wi),r=n[wi];try{n[wi]=T;var e=true}catch(n){}var u=ci.call(n);e&&(t?n[wi]=r:delete n[wi]),n=u}else n=ci.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&ii.call(n,t)}function zt(n,t){return null!=n&&t in Yu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Vu(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ui(p.length,s),
l[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[De(qe(r))],null==r?T:n(r,t,e)}function Ut(n){return du(n)&&"[object Arguments]"==Ot(n)}function Ct(n){
return du(n)&&"[object ArrayBuffer]"==Ot(n)}function Dt(n){return du(n)&&"[object Date]"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!du(n)&&!du(t))t=n!==n&&t!==t;else n:{var i=of(n),o=of(t),f=i?"[object Array]":_o(n),c=o?"[object Array]":_o(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&cf(n)){if(!cf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||pf(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{
if(!(1&r)&&(i=a&&ii.call(n,"__wrapped__"),f=o&&ii.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ii.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l);
}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return du(n)&&"[object Map]"==_o(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Yu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;
}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!gu(n)||fi&&fi in n)&&(pu(n)?si:dn).test(Me(n))}function Nt(n){return du(n)&&"[object RegExp]"==Ot(n)}function Pt(n){return du(n)&&"[object Set]"==_o(n)}function Zt(n){return du(n)&&vu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n=="function"?n:null==n?Tu:typeof n=="object"?of(n)?Jt(n[0],n[1]):Ht(n):Pu(n)}function Vt(n){if(!ze(n))return Bi(n);var t,r=[];for(t in Yu(n))ii.call(n,t)&&"constructor"!=t&&r.push(t);
return r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=lu(n)?Vu(n.length):[];return eo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!gu(t)?We(De(n),t):function(r){var e=Iu(r,n);return e===T&&e===t?Ru(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&io(t,function(i,o){if(gu(i)){u||(u=new Zn);var f=u,c="__proto__"==o?T:n[o],a="__proto__"==o?T:t[o],l=f.get(a);
if(l)it(n,o,l);else{var l=e?e(c,a,o+"",n,t,f):T,s=l===T;if(s){var h=of(a),p=!h&&cf(a),_=!h&&!p&&pf(a),l=a;h||p||_?of(c)?l=c:su(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:bu(a)||uf(a)?(l=c,uf(c)?l=Su(c):(!gu(c)||r&&pu(c))&&(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e("__proto__"==o?T:n[o],i,o+"",n,t,u):T,f===T&&(f=i),it(n,o,f)},Wu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[Tu],k(ye())),
n=Gt(n,function(n){return{a:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return Ru(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;
for(n===t&&(t=Ur(t)),r&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&bi.call(f,a,1),bi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?bi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Oi(Mi()*(t-n+1))}function or(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Oi(t/2))&&(n+=n);while(t);return r}function fr(n,t){return bo(Be(n,t,Tu),n+"")}function cr(n){return Qn(Lu(n))}function ar(n,t){
var r=Lu(n);return Ce(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!gu(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=De(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=gu(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return Ce(Lu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Vu(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return eo(n,function(n,e,u){return r=t(n,e,u),
!r}),!!r}function _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!ju(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,Tu,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=ju(t),a=t===T;u<i;){var l=Oi((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=ju(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ui(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){
var o=n[r],f=t?t(o):o;if(!r||!au(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n=="number"?n:ju(n)?F:+n}function yr(n){if(typeof n=="string")return n;if(of(n))return c(n,yr)+"";if(ju(n))return to?to.call(n):"";var t=n+"";return"0"==t&&1/n==-$?"-0":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:lo(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;
t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[De(qe(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Vu(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));
return br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return su(n)?n:[]}function kr(n){return typeof n=="function"?n:Tu}function Sr(n,t){return of(n)?n:Ie(n,t)?[n]:xo(Ou(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=vi?vi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new _i(t).set(new _i(n)),
t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=ju(n),o=t!==T,f=null===t,c=t===t,a=ju(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Li(i-o,0),l=Vu(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];
return l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Li(i-f,0),s=Vu(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Vu(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,ho(n),t)}function Mr(n,t){return Cr(n,po(n),t);
}function Tr(n,r){return function(e,u){var i=of(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i=="function"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Yu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!lu(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Yu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){
var u=-1,i=Yu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Ou(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(""):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Du(Cu(t).replace(kn,"")),n,"")}}function Vr(n){return function(){var t=arguments;switch(t.length){
case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=ro(n.prototype),t=n.apply(r,t);return gu(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Vu(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),
o-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Yu(t);if(!lu(t)){var i=ye(r,3);t=zu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ni("Expected a function");if(u&&!o&&"wrapper"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f="wrapper"==u?so(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);
return function(){var n=arguments,e=n[0];if(o&&1==n.length&&of(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Vu(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ui(f.length,x),m=Ur(y);w--;){
var A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r=="string"||typeof e=="string"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){
return r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?" ":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Si(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(""):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Vu(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){
e&&typeof e!="number"&&Oe(t,r,e)&&(r=e=T),t=mu(t),r===T?(r=t,t=0):r=mu(r),e=e===T?t<r?1:-1:mu(e);var u=-1;r=Li(Si((r-t)/(e||1)),0);for(var i=Vu(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=ku(t),r=ku(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&go(r,u),r.placeholder=e,Le(r,n,t)}function ie(n){
var t=Ju[n];return function(n,r){if(n=ku(n),r=null==r?0:Ui(Au(r),292)){var e=(Ou(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Ou(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=_o(t);return"[object Map]"==r?W(t):"[object Set]"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ni("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Li(Au(o),0),f=f===T?f:Au(f),a-=u?u.length:0,64&t){
var l=e,s=u;e=u=T}var h=c?T:so(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ui(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1],
r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Li(i[9]-a,0),!f&&24&t&&(t&=-25),Le((h?fo:go)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||au(n,ri[r])&&!ii.call(e,r)?t:n}function ae(n,t,r,e,u,i){return gu(n)&&gu(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return bu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;var c=-1,a=true,l=2&r?new Nn:T;
for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]":if(n.byteLength!=t.byteLength||!i(new _i(n),new _i(t)))break;
return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return au(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=W;case"[object Set]":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(no)return no.call(n)==no.call(t)}return false}function pe(n){return bo(Be(n,T,Pe),n+"")}function _e(n){
return St(n,zu,ho)}function ve(n){return St(n,Wu,po)}function ge(n){for(var t=n.name+"",r=Ki[t],e=ii.call(Ki,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(ii.call(An,"placeholder")?An:n).placeholder}function ye(){var n=An.iteratee||$u,n=n===$u?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map;
}function xe(n){for(var t=zu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!gu(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=De(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&vu(u)&&Se(o,u)&&(of(n)||uf(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&ii.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ae(n){
return typeof n.constructor!="function"||ze(n)?{}:ro(gi(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case"[object ArrayBuffer]":return Rr(n);case"[object Boolean]":case"[object Date]":return new e(+n);case"[object DataView]":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":
case"[object Uint16Array]":case"[object Uint32Array]":return zr(n,r);case"[object Map]":return new e;case"[object Number]":case"[object String]":return new e(n);case"[object RegExp]":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case"[object Set]":return new e;case"[object Symbol]":return no?Yu(no.call(n)):{}}}function ke(n){return of(n)||uf(n)||!!(xi&&n&&n[xi])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&("number"==r||"symbol"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;
}function Oe(n,t,r){if(!gu(r))return false;var e=typeof t;return!!("number"==e?lu(r)&&Se(t,r.length):"string"==e&&t in r)&&au(r[t],n)}function Ie(n,t){if(of(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!ju(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Yu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r=="function"&&t in Un.prototype&&(n===r||(t=so(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||ri)}function We(n,t){
return function(r){return null!=r&&(r[n]===t&&(t!==T||n in Yu(r)))}}function Be(t,r,e){return r=Li(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Li(u.length-r,0),f=Vu(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Vu(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t,r){var e=t+"";t=bo;var u,i=Te;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u],r=r.join(2<i?", ":" "),e=e.replace(cn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Ue(n){
var t=0,r=0;return function(){var e=Ci(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function Ce(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function De(n){if(typeof n=="string"||ju(n))return n;var t=n+"";return"0"==t&&1/n==-$?"-0":t}function Me(n){if(null!=n){try{return ui.call(n)}catch(n){}return n+""}return""}function Te(n,t){return r(N,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e);
}),n.sort()}function $e(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Fe(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Au(r),0>r&&(r=Li(e+r,0)),_(n,ye(t,3),r)):-1}function Ne(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Au(r),u=0>r?Li(e+u,0):Ui(u,e-1)),_(n,ye(t,3),u,true)}function Pe(n){return(null==n?0:n.length)?wt(n,1):[]}function Ze(n){
return n&&n.length?n[0]:T}function qe(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ve(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ke(n){return null==n?n:Ti.call(n)}function Ge(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(su(n))return t=Li(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function He(t,r){if(!t||!t.length)return[];var e=Ge(t);return null==r?e:c(e,function(t){return n(r,T,t)})}function Je(n){return n=An(n),n.__chain__=true,n}function Ye(n,t){
return t(n)}function Qe(){return this}function Xe(n,t){return(of(n)?r:eo)(n,ye(t,3))}function nu(n,t){return(of(n)?e:uo)(n,ye(t,3))}function tu(n,t){return(of(n)?c:Gt)(n,ye(t,3))}function ru(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function eu(n,t){var r;if(typeof t!="function")throw new ni("Expected a function");return n=Au(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),r}}function uu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=uu.placeholder,
n}function iu(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Ko();if(u(n))return o(n);var r,e=yo;r=n-_,n=t-(n-p),r=g?Ui(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Ko(),r=u(n);if(c=arguments,a=this,p=n,r){if(h===T)return _=n=p,h=yo(i,t),v?e(n):s;if(g)return h=yo(i,t),e(p)}return h===T&&(h=yo(i,t)),
s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ni("Expected a function");return t=ku(t)||0,gu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Li(ku(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&ao(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Ko())},f}function fu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ni("Expected a function");
return r.cache=new(fu.Cache||Fn),r}function cu(n){if(typeof n!="function")throw new ni("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function au(n,t){return n===t||n!==n&&t!==t}function lu(n){return null!=n&&vu(n.length)&&!pu(n)}function su(n){return du(n)&&lu(n)}function hu(n){if(!du(n))return false;var t=Ot(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!bu(n);
}function pu(n){return!!gu(n)&&(n=Ot(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function _u(n){return typeof n=="number"&&n==Au(n)}function vu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n}function gu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function du(n){return null!=n&&typeof n=="object"}function yu(n){return typeof n=="number"||du(n)&&"[object Number]"==Ot(n)}function bu(n){return!(!du(n)||"[object Object]"!=Ot(n))&&(n=gi(n),
null===n||(n=ii.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&ui.call(n)==ai))}function xu(n){return typeof n=="string"||!of(n)&&du(n)&&"[object String]"==Ot(n)}function ju(n){return typeof n=="symbol"||du(n)&&"[object Symbol]"==Ot(n)}function wu(n){if(!n)return[];if(lu(n))return xu(n)?M(n):Ur(n);if(ji&&n[ji]){n=n[ji]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=_o(n),("[object Map]"==t?W:"[object Set]"==t?U:Lu)(n)}function mu(n){return n?(n=ku(n),
n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Au(n){n=mu(n);var t=n%1;return n===n?t?n-t:n:0}function Eu(n){return n?pt(Au(n),0,4294967295):0}function ku(n){if(typeof n=="number")return n;if(ju(n))return F;if(gu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=gu(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(un,"");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Su(n){return Cr(n,Wu(n))}function Ou(n){return null==n?"":yr(n);
}function Iu(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function Ru(n,t){return null!=n&&we(n,t,zt)}function zu(n){return lu(n)?qn(n):Vt(n)}function Wu(n){if(lu(n))n=qn(n,true);else if(gu(n)){var t,r=ze(n),e=[];for(t in n)("constructor"!=t||!r&&ii.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in Yu(n))t.push(r);n=t}return n}function Bu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Lu(n){return null==n?[]:S(n,zu(n));
}function Uu(n){return Tf(Ou(n).toLowerCase())}function Cu(n){return(n=Ou(n))&&n.replace(xn,Xn).replace(Sn,"")}function Du(n,t,r){return n=Ou(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Mu(n){return function(){return n}}function Tu(n){return n}function $u(n){return qt(typeof n=="function"?n:_t(n,1))}function Fu(n,t,e){var u=zu(t),i=Et(t,u);null!=e||gu(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,zu(t)));var o=!(gu(e)&&"chain"in e&&!e.chain),f=pu(n);return r(i,function(r){
var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Nu(){}function Pu(n){return Ie(n)?b(De(n)):rr(n)}function Zu(){return[]}function qu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Vu=mn.Array,Ku=mn.Date,Gu=mn.Error,Hu=mn.Function,Ju=mn.Math,Yu=mn.Object,Qu=mn.RegExp,Xu=mn.String,ni=mn.TypeError,ti=Vu.prototype,ri=Yu.prototype,ei=mn["__core-js_shared__"],ui=Hu.prototype.toString,ii=ri.hasOwnProperty,oi=0,fi=function(){
var n=/[^.]+$/.exec(ei&&ei.keys&&ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),ci=ri.toString,ai=ui.call(Yu),li=$n._,si=Qu("^"+ui.call(ii).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),hi=Pn?mn.Buffer:T,pi=mn.Symbol,_i=mn.Uint8Array,vi=hi?hi.g:T,gi=B(Yu.getPrototypeOf,Yu),di=Yu.create,yi=ri.propertyIsEnumerable,bi=ti.splice,xi=pi?pi.isConcatSpreadable:T,ji=pi?pi.iterator:T,wi=pi?pi.toStringTag:T,mi=function(){try{var n=je(Yu,"defineProperty");
return n({},"",{}),n}catch(n){}}(),Ai=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,Ei=Ku&&Ku.now!==$n.Date.now&&Ku.now,ki=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Si=Ju.ceil,Oi=Ju.floor,Ii=Yu.getOwnPropertySymbols,Ri=hi?hi.isBuffer:T,zi=mn.isFinite,Wi=ti.join,Bi=B(Yu.keys,Yu),Li=Ju.max,Ui=Ju.min,Ci=Ku.now,Di=mn.parseInt,Mi=Ju.random,Ti=ti.reverse,$i=je(mn,"DataView"),Fi=je(mn,"Map"),Ni=je(mn,"Promise"),Pi=je(mn,"Set"),Zi=je(mn,"WeakMap"),qi=je(Yu,"create"),Vi=Zi&&new Zi,Ki={},Gi=Me($i),Hi=Me(Fi),Ji=Me(Ni),Yi=Me(Pi),Qi=Me(Zi),Xi=pi?pi.prototype:T,no=Xi?Xi.valueOf:T,to=Xi?Xi.toString:T,ro=function(){
function n(){}return function(t){return gu(t)?di?di(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:"",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=ro(En.prototype),On.prototype.constructor=On,Un.prototype=ro(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=qi?qi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],
this.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return qi?(n=t[n],"__lodash_hash_undefined__"===n?T:n):ii.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return qi?t[n]!==T:ii.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=qi&&t===T?"__lodash_hash_undefined__":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():bi.call(t,n,1),
--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Fi||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);
},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){
return this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Fi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var eo=Fr(mt),uo=Fr(At,true),io=Nr(),oo=Nr(true),fo=Vi?function(n,t){return Vi.set(n,t),n}:Tu,co=mi?function(n,t){return mi(n,"toString",{configurable:true,enumerable:false,value:Mu(t),writable:true})}:Tu,ao=Ai||function(n){
return $n.clearTimeout(n)},lo=Pi&&1/U(new Pi([,-0]))[1]==$?function(n){return new Pi(n)}:Nu,so=Vi?function(n){return Vi.get(n)}:Nu,ho=Ii?function(n){return null==n?[]:(n=Yu(n),i(Ii(n),function(t){return yi.call(n,t)}))}:Zu,po=Ii?function(n){for(var t=[];n;)a(t,ho(n)),n=gi(n);return t}:Zu,_o=Ot;($i&&"[object DataView]"!=_o(new $i(new ArrayBuffer(1)))||Fi&&"[object Map]"!=_o(new Fi)||Ni&&"[object Promise]"!=_o(Ni.resolve())||Pi&&"[object Set]"!=_o(new Pi)||Zi&&"[object WeakMap]"!=_o(new Zi))&&(_o=function(n){
var t=Ot(n);if(n=(n="[object Object]"==t?n.constructor:T)?Me(n):"")switch(n){case Gi:return"[object DataView]";case Hi:return"[object Map]";case Ji:return"[object Promise]";case Yi:return"[object Set]";case Qi:return"[object WeakMap]"}return t});var vo=ei?pu:qu,go=Ue(fo),yo=ki||function(n,t){return $n.setTimeout(n,t)},bo=Ue(co),xo=function(n){n=fu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(tn,function(n,r,e,u){
t.push(e?u.replace(hn,"$1"):r||n)}),t}),jo=fr(function(n,t){return su(n)?yt(n,wt(t,1,su,true)):[]}),wo=fr(function(n,t){var r=qe(t);return su(r)&&(r=T),su(n)?yt(n,wt(t,1,su,true),ye(r,2)):[]}),mo=fr(function(n,t){var r=qe(t);return su(r)&&(r=T),su(n)?yt(n,wt(t,1,su,true),T,r):[]}),Ao=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),Eo=fr(function(n){var t=qe(n),r=c(n,Er);return t===qe(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),ko=fr(function(n){var t=qe(n),r=c(n,Er);return(t=typeof t=="function"?t:T)&&r.pop(),
r.length&&r[0]===n[0]?Wt(r,T,t):[]}),So=fr(Ve),Oo=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Io=fr(function(n){return br(wt(n,1,su,true))}),Ro=fr(function(n){var t=qe(n);return su(t)&&(t=T),br(wt(n,1,su,true),ye(t,2))}),zo=fr(function(n){var t=qe(n),t=typeof t=="function"?t:T;return br(wt(n,1,su,true),T,t)}),Wo=fr(function(n,t){return su(n)?yt(n,t):[]}),Bo=fr(function(n){return mr(i(n,su))}),Lo=fr(function(n){var t=qe(n);return su(t)&&(t=T),
mr(i(n,su),ye(t,2))}),Uo=fr(function(n){var t=qe(n),t=typeof t=="function"?t:T;return mr(i(n,su),T,t)}),Co=fr(Ge),Do=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t=="function"?(n.pop(),t):T;return He(n,t)}),Mo=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Ye,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),
n})):this.thru(t)}),To=Tr(function(n,t,r){ii.call(n,r)?++n[r]:st(n,r,1)}),$o=Gr(Fe),Fo=Gr(Ne),No=Tr(function(n,t,r){ii.call(n,r)?n[r].push(t):st(n,r,[t])}),Po=fr(function(t,r,e){var u=-1,i=typeof r=="function",o=lu(t)?Vu(t.length):[];return eo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),Zo=Tr(function(n,t,r){st(n,r,t)}),qo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Vo=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),
Xt(n,wt(t,1),[])}),Ko=Ei||function(){return $n.Date.now()},Go=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Go)),e=32|e;return fe(n,e,t,r,u)}),Ho=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(t,e,n,r,u)}),Jo=fr(function(n,t){return dt(n,1,t)}),Yo=fr(function(n,t,r){return dt(n,ku(t)||0,r)});fu.Cache=Fn;var Qo=fr(function(t,r){r=1==r.length&&of(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ui(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);
return n(t,this,u)})}),Xo=fr(function(n,t){return fe(n,32,T,t,L(t,de(Xo)))}),nf=fr(function(n,t){return fe(n,64,T,t,L(t,de(nf)))}),tf=pe(function(n,t){return fe(n,256,T,T,T,t)}),rf=ee(It),ef=ee(function(n,t){return n>=t}),uf=Ut(function(){return arguments}())?Ut:function(n){return du(n)&&ii.call(n,"callee")&&!yi.call(n,"callee")},of=Vu.isArray,ff=Vn?k(Vn):Ct,cf=Ri||qu,af=Kn?k(Kn):Dt,lf=Gn?k(Gn):Tt,sf=Hn?k(Hn):Nt,hf=Jn?k(Jn):Pt,pf=Yn?k(Yn):Zt,_f=ee(Kt),vf=ee(function(n,t){return n<=t}),gf=$r(function(n,t){
if(ze(t)||lu(t))Cr(t,zu(t),n);else for(var r in t)ii.call(t,r)&&ot(n,r,t[r])}),df=$r(function(n,t){Cr(t,Wu(t),n)}),yf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),bf=$r(function(n,t,r,e){Cr(t,zu(t),n,e)}),xf=pe(ht),jf=fr(function(n,t){n=Yu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Wu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||au(a,ri[c])&&!ii.call(n,c))&&(n[c]=u[c])}return n}),wf=fr(function(t){return t.push(T,ae),n(Sf,T,t)}),mf=Yr(function(n,t,r){
null!=t&&typeof t.toString!="function"&&(t=ci.call(t)),n[t]=r},Mu(Tu)),Af=Yr(function(n,t,r){null!=t&&typeof t.toString!="function"&&(t=ci.call(t)),ii.call(n,t)?n[t].push(r):n[t]=[r]},ye),Ef=fr(Lt),kf=$r(function(n,t,r){Yt(n,t,r)}),Sf=$r(function(n,t,r,e){Yt(n,t,r,e)}),Of=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),If=pe(function(n,t){return null==n?{}:nr(n,t);
}),Rf=oe(zu),zf=oe(Wu),Wf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Uu(t):t)}),Bf=qr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Lf=qr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Uf=Zr("toLowerCase"),Cf=qr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Df=qr(function(n,t,r){return n+(r?" ":"")+Tf(t)}),Mf=qr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Tf=Zr("toUpperCase"),$f=fr(function(t,r){try{return n(t,T,r)}catch(n){return hu(n)?n:new Gu(n)}}),Ff=pe(function(n,t){
return r(t,function(t){t=De(t),st(n,t,Go(n[t],n))}),n}),Nf=Hr(),Pf=Hr(true),Zf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),qf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Vf=Xr(c),Kf=Xr(u),Gf=Xr(h),Hf=re(),Jf=re(true),Yf=Qr(function(n,t){return n+t},0),Qf=ie("ceil"),Xf=Qr(function(n,t){return n/t},1),nc=ie("floor"),tc=Qr(function(n,t){return n*t},1),rc=ie("round"),ec=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!="function")throw new ni("Expected a function");
return n=Au(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=ru,An.assign=gf,An.assignIn=df,An.assignInWith=yf,An.assignWith=bf,An.at=xf,An.before=eu,An.bind=Go,An.bindAll=Ff,An.bindKey=Ho,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return of(n)?n:[n]},An.chain=Je,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Li(Au(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Vu(Si(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){
var i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Vu(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(of(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new ni("Expected a function");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Mu,
An.countBy=To,An.create=function(n,t){var r=ro(n);return null==t?r:at(r,t)},An.curry=uu,An.curryRight=iu,An.debounce=ou,An.defaults=jf,An.defaultsDeep=wf,An.defer=Jo,An.delay=Yo,An.difference=jo,An.differenceBy=wo,An.differenceWith=mo,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];
},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Au(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Au(e),0>e&&(e+=u),e=r>e?0:Eu(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(of(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(tu(n,t),1)},An.flatMapDeep=function(n,t){return wt(tu(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Au(r),
wt(tu(n,t),r)},An.flatten=Pe,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Au(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Nf,An.flowRight=Pf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,zu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Wu(n))},An.groupBy=No,An.initial=function(n){
return(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Ao,An.intersectionBy=Eo,An.intersectionWith=ko,An.invert=mf,An.invertBy=Af,An.invokeMap=Po,An.iteratee=$u,An.keyBy=Zo,An.keys=zu,An.keysIn=Wu,An.map=tu,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=fu,
An.merge=kf,An.mergeWith=Sf,An.method=Zf,An.methodOf=qf,An.mixin=Fu,An.negate=cu,An.nthArg=function(n){return n=Au(n),fr(function(t){return Qt(t,n)})},An.omit=Of,An.omitBy=function(n,t){return Bu(n,cu(ye(t)))},An.once=function(n){return eu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(of(t)||(t=null==t?[]:[t]),r=e?T:r,of(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Vf,An.overArgs=Qo,An.overEvery=Kf,An.overSome=Gf,An.partial=Xo,An.partialRight=nf,An.partition=qo,An.pick=If,An.pickBy=Bu,An.property=Pu,
An.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=So,An.pullAll=Ve,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Oo,An.range=Hf,An.rangeRight=Jf,An.rearg=tf,An.reject=function(n,t){return(of(n)?i:jt)(n,cu(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),
u.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!="function")throw new ni("Expected a function");return t=t===T?t:Au(t),fr(n,t)},An.reverse=Ke,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Au(t),(of(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e=="function"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(of(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&Oe(n,t,r)?(t=0,
r=e):(t=null==t?0:Au(t),r=r===T?e:Au(r)),hr(n,t,r)):[]},An.sortBy=Vo,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!="number"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Ou(n))&&(typeof t=="string"||null!=t&&!sf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!="function")throw new ni("Expected a function");return r=null==r?0:Li(Au(r),0),
fr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Au(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),
n},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ni("Expected a function");return gu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ou(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Ye,An.toArray=wu,An.toPairs=Rf,An.toPairsIn=zf,An.toPath=function(n){return of(n)?c(n,De):ju(n)?[n]:Ur(xo(Ou(n)))},An.toPlainObject=Su,An.transform=function(n,t,e){var u=of(n),i=u||cf(n)||pf(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:gu(n)&&pu(o)?ro(gi(n)):{};
}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return ru(n,1)},An.union=Io,An.unionBy=Ro,An.unionWith=zo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t=="function"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=Ge,An.unzipWith=He,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){
return e=typeof e=="function"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Lu,An.valuesIn=function(n){return null==n?[]:S(n,Wu(n))},An.without=Wo,An.words=Du,An.wrap=function(n,t){return Xo(kr(t),n)},An.xor=Bo,An.xorBy=Lo,An.xorWith=Uo,An.zip=Co,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Do,An.entries=Rf,An.entriesIn=zf,An.extend=df,An.extendWith=yf,Fu(An,An),An.add=Yf,An.attempt=$f,An.camelCase=Wf,An.capitalize=Uu,
An.ceil=Qf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=ku(r),r=r===r?r:0),t!==T&&(t=ku(t),t=t===t?t:0),pt(ku(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,zu(t))},An.deburr=Cu,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=Xf,An.endsWith=function(n,t,r){
n=Ou(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Au(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=au,An.escape=function(n){return(n=Ou(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Ou(n))&&en.test(n)?n.replace(rn,"\\$&"):n},An.every=function(n,t,r){var e=of(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=$o,An.findIndex=Fe,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=Fo,An.findLastIndex=Ne,An.findLastKey=function(n,t){return p(n,ye(t,3),At);
},An.floor=nc,An.forEach=Xe,An.forEachRight=nu,An.forIn=function(n,t){return null==n?n:io(n,ye(t,3),Wu)},An.forInRight=function(n,t){return null==n?n:oo(n,ye(t,3),Wu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Iu,An.gt=rf,An.gte=ef,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=Ru,An.head=Ze,An.identity=Tu,An.includes=function(n,t,r,e){return n=lu(n)?n:Lu(n),r=r&&!e?Au(r):0,e=n.length,0>r&&(r=Li(e+r,0)),xu(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);
},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Au(r),0>r&&(r=Li(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=mu(t),r===T?(r=t,t=0):r=mu(r),n=ku(n),n>=Ui(t,r)&&n<Li(t,r)},An.invoke=Ef,An.isArguments=uf,An.isArray=of,An.isArrayBuffer=ff,An.isArrayLike=lu,An.isArrayLikeObject=su,An.isBoolean=function(n){return true===n||false===n||du(n)&&"[object Boolean]"==Ot(n)},An.isBuffer=cf,An.isDate=af,An.isElement=function(n){return du(n)&&1===n.nodeType&&!bu(n)},An.isEmpty=function(n){
if(null==n)return true;if(lu(n)&&(of(n)||typeof n=="string"||typeof n.splice=="function"||cf(n)||pf(n)||uf(n)))return!n.length;var t=_o(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(ii.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=hu,An.isFinite=function(n){return typeof n=="number"&&zi(n)},An.isFunction=pu,
An.isInteger=_u,An.isLength=vu,An.isMap=lf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return yu(n)&&n!=+n},An.isNative=function(n){if(vo(n))throw new Gu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=yu,An.isObject=gu,An.isObjectLike=du,An.isPlainObject=bu,An.isRegExp=sf,
An.isSafeInteger=function(n){return _u(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=hf,An.isString=xu,An.isSymbol=ju,An.isTypedArray=pf,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return du(n)&&"[object WeakMap]"==_o(n)},An.isWeakSet=function(n){return du(n)&&"[object WeakSet]"==Ot(n)},An.join=function(n,t){return null==n?"":Wi.call(n,t)},An.kebabCase=Bf,An.last=qe,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Au(r),u=0>u?Li(e+u,0):Ui(u,e-1)),
t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Lf,An.lowerFirst=Uf,An.lt=_f,An.lte=vf,An.max=function(n){return n&&n.length?xt(n,Tu,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,Tu)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,Tu,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=Zu,An.stubFalse=qu,An.stubObject=function(){return{}},An.stubString=function(){
return""},An.stubTrue=function(){return true},An.multiply=tc,An.nth=function(n,t){return n&&n.length?Qt(n,Au(t)):T},An.noConflict=function(){return $n._===this&&($n._=li),this},An.noop=Nu,An.now=Ko,An.pad=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Oi(t),r)+n+ne(Si(t),r))},An.padEnd=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){
return r||null==t?t=0:t&&(t=+t),Di(Ou(n).replace(on,""),t||0)},An.random=function(n,t,r){if(r&&typeof r!="boolean"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t=="boolean"?(r=t,t=T):typeof n=="boolean"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=mu(n),t===T?(t=n,n=0):t=mu(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Mi(),Ui(n+r*(t-n+Cn("1e-"+((r+"").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=of(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,eo)},An.reduceRight=function(n,t,r){var e=of(n)?s:j,u=3>arguments.length;
return e(n,ye(t,4),r,u,uo)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Au(t),or(Ou(n),t)},An.replace=function(){var n=arguments,t=Ou(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[De(t[e])];i===T&&(e=u,i=r),n=pu(i)?i.call(n):i}return n},An.round=rc,An.runInContext=x,An.sample=function(n){return(of(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(lu(n))return xu(n)?D(n):n.length;
var t=_o(n);return"[object Map]"==t||"[object Set]"==t?n.size:Vt(n).length},An.snakeCase=Cf,An.some=function(n,t,r){var e=of(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&au(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);
},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(au(n[r],t))return r}return-1},An.startCase=Df,An.startsWith=function(n,t,r){return n=Ou(n),r=null==r?0:pt(Au(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=ec,An.sum=function(n){return n&&n.length?m(n,Tu):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Ou(n),t=yf({},t,e,ce),r=yf({},t.imports,e.imports,ce);var u,i,o=zu(r),f=S(r,o),c=0;
r=t.interpolate||jn;var a="__p+='";r=Qu((t.escape||jn).source+"|"+r.source+"|"+(r===Q?pn:jn).source+"|"+(t.evaluate||jn).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(i?a.replace(P,""):a).replace(Z,"$1").replace(q,"$1;"),
a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=$f(function(){return Hu(o,l+"return "+a).apply(T,f)}),t.source=a,hu(t))throw t;return t},An.times=function(n,t){if(n=Au(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ui(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=mu,An.toInteger=Au,An.toLength=Eu,An.toLower=function(n){
return Ou(n).toLowerCase()},An.toNumber=ku,An.toSafeInteger=function(n){return n?pt(Au(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Ou,An.toUpper=function(n){return Ou(n).toUpperCase()},An.trim=function(n,t,r){return(n=Ou(n))&&(r||t===T)?n.replace(un,""):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join("")):n},An.trimEnd=function(n,t,r){return(n=Ou(n))&&(r||t===T)?n.replace(fn,""):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,Or(n,0,t).join("")):n},An.trimStart=function(n,t,r){
return(n=Ou(n))&&(r||t===T)?n.replace(on,""):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join("")):n},An.truncate=function(n,t){var r=30,e="...";if(gu(t))var u="separator"in t?t.separator:u,r="length"in t?Au(t.length):r,e="omission"in t?yr(t.omission):e;n=Ou(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(""):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),sf(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=Qu(u.source,Ou(_n.exec(u))+"g")),
u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Ou(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++oi;return Ou(n)+t},An.upperCase=Mf,An.upperFirst=Tf,An.each=Xe,An.eachRight=nu,An.first=Ze,Fu(An,function(){var n={};return mt(An,function(t,r){ii.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false}),An.VERSION="4.17.10",r("bind bindKey curry curryRight partial partialRight".split(" "),function(n){
An[n].placeholder=An}),r(["drop","take"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Li(Au(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ui(r,e.__takeCount__):e.__views__.push({size:Ui(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Un.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({
iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){var r="take"+(t?"Right":"");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter(Tu)},Un.prototype.find=function(n){return this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n);
},Un.prototype.invokeMap=fr(function(n,t){return typeof n=="function"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(cu(ye(n)))},Un.prototype.slice=function(n,t){n=Au(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Au(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295);
},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||of(o);s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;return!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({
func:Ye,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r("pop push shift sort splice unshift".split(" "),function(n){var t=ti[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(of(u)?u:[],n)}return this[r](function(r){return t.apply(of(r)?r:[],n)})}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+"";
(Ki[e]||(Ki[e]=[])).push({name:t,func:r})}}),Ki[Jr(T,2).name]=[{name:"wrapper",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n;
},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=of(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ui(n,f+s);break;case"takeRight":f=Li(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ui(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);e=[];n:for(;n--&&a<l;){for(o+=r,
u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=Mo,An.prototype.chain=function(){return Je(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=wu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){for(var t,r=this;r instanceof En;){
var e=$e(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Ye,args:[Ke],thisArg:T}),new On(n,this.__chain__)):this.thru(Ke)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,ji&&(An.prototype[ji]=Qe),
An}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);

37
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json

@ -1,37 +0,0 @@
{
"name": "malihu-custom-scrollbar-plugin",
"version": "3.1.5",
"author": "malihu (http://manos.malihu.gr)",
"description": "Highly customizable custom scrollbar jQuery plugin, featuring vertical/horizontal scrollbars, scrolling momentum, mouse-wheel, keyboard and touch support user defined callbacks etc.",
"license": "MIT",
"homepage": "http://manos.malihu.gr/jquery-custom-content-scroller",
"main": "./jquery.mCustomScrollbar.js",
"repository": {
"type": "git",
"url": "https://github.com/malihu/malihu-custom-scrollbar-plugin.git"
},
"bugs": {
"url": "https://github.com/malihu/malihu-custom-scrollbar-plugin/issues"
},
"keywords": [
"jquery-plugin",
"custom-scrollbar",
"scrollbar"
],
"files": [
"jquery.mCustomScrollbar.js",
"jquery.mCustomScrollbar.concat.min.js",
"jquery.mCustomScrollbar.css",
"mCSB_buttons.png",
"readme.md"
],
"jam": {
"dependencies": {
"jquery": ">=1.6",
"jquery-mousewheel": ">=3.0.6"
}
},
"dependencies": {
"jquery-mousewheel": ">=3.0.6"
}
}

47
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/package.json

@ -1,47 +0,0 @@
{
"name": "prismjs",
"version": "1.15.0",
"description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.",
"main": "prism.js",
"style": "themes/prism.css",
"scripts": {
"test": "mocha tests/testrunner-tests.js && mocha tests/run.js"
},
"repository": {
"type": "git",
"url": "https://github.com/LeaVerou/prism.git"
},
"keywords": [
"prism",
"highlight"
],
"author": "Lea Verou",
"license": "MIT",
"readmeFilename": "README.md",
"optionalDependencies": {
"clipboard": "^2.0.0"
},
"devDependencies": {
"chai": "^2.3.0",
"gulp": "^3.8.6",
"gulp-concat": "^2.3.4",
"gulp-header": "^1.0.5",
"gulp-rename": "^1.2.0",
"gulp-uglify": "^0.3.1",
"gulp-replace": "^0.5.4",
"mocha": "^2.2.5",
"yargs": "^3.26.0"
},
"jspm": {
"main": "prism",
"registry": "jspm",
"jspmPackage": true,
"format": "global",
"files": [
"components/**/*.js",
"plugins/**/*",
"themes/*.css",
"prism.js"
]
}
}

6
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.Designer.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.Designer.cs

@ -5,11 +5,11 @@ using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.DocsTestApp.EntityFrameworkCore; using VoloDocs.EntityFrameworkCore;
namespace Volo.DocsTestApp.EntityFrameworkCore.Migrations namespace VoloDocs.EntityFrameworkCore.Migrations
{ {
[DbContext(typeof(DocsTestAppDbContext))] [DbContext(typeof(VoloDocsDbContext))]
[Migration("20181225134002_Initial20181225")] [Migration("20181225134002_Initial20181225")]
partial class Initial20181225 partial class Initial20181225
{ {

2
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/20181225134002_Initial20181225.cs

@ -1,7 +1,7 @@
using System; using System;
using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations;
namespace Volo.DocsTestApp.EntityFrameworkCore.Migrations namespace VoloDocs.EntityFrameworkCore.Migrations
{ {
public partial class Initial20181225 : Migration public partial class Initial20181225 : Migration
{ {

8
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/Migrations/DocsTestAppDbContextModelSnapshot.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/Migrations/VoloDocsDbContextModelSnapshot.cs

@ -4,12 +4,12 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.DocsTestApp.EntityFrameworkCore; using VoloDocs.EntityFrameworkCore;
namespace Volo.DocsTestApp.EntityFrameworkCore.Migrations namespace VoloDocs.EntityFrameworkCore.Migrations
{ {
[DbContext(typeof(DocsTestAppDbContext))] [DbContext(typeof(VoloDocsDbContext))]
partial class DocsTestAppDbContextModelSnapshot : ModelSnapshot partial class VoloDocsDbContextModelSnapshot : ModelSnapshot
{ {
protected override void BuildModel(ModelBuilder modelBuilder) protected override void BuildModel(ModelBuilder modelBuilder)
{ {

1
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/Volo.DocsTestApp.EntityFrameworkCore.csproj → modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj

@ -2,6 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

6
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/DocsTestAppDbContext.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContext.cs

@ -5,11 +5,11 @@ using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore;
using Volo.Docs.EntityFrameworkCore; using Volo.Docs.EntityFrameworkCore;
namespace Volo.DocsTestApp.EntityFrameworkCore namespace VoloDocs.EntityFrameworkCore
{ {
public class DocsTestAppDbContext : AbpDbContext<DocsTestAppDbContext> public class VoloDocsDbContext : AbpDbContext<VoloDocsDbContext>
{ {
public DocsTestAppDbContext(DbContextOptions<DocsTestAppDbContext> options) public VoloDocsDbContext(DbContextOptions<VoloDocsDbContext> options)
: base(options) : base(options)
{ {

14
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/DocsTestAppDbContextFactory.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsDbContextFactory.cs

@ -3,24 +3,24 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design; using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
namespace Volo.DocsTestApp.EntityFrameworkCore namespace VoloDocs.EntityFrameworkCore
{ {
public class DocsTestAppDbContextFactory : IDesignTimeDbContextFactory<DocsTestAppDbContext> public class VoloDocsDbContextFactory : IDesignTimeDbContextFactory<VoloDocsDbContext>
{ {
public DocsTestAppDbContext CreateDbContext(string[] args) public VoloDocsDbContext CreateDbContext(string[] args)
{ {
var configuration = BuildConfiguration(); var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder<DocsTestAppDbContext>() var builder = new DbContextOptionsBuilder<VoloDocsDbContext>()
.UseSqlServer(configuration.GetConnectionString("SqlServer")); .UseSqlServer(configuration["ConnectionString"]);
return new DocsTestAppDbContext(builder.Options); return new VoloDocsDbContext(builder.Options);
} }
private static IConfigurationRoot BuildConfiguration() private static IConfigurationRoot BuildConfiguration()
{ {
var builder = new ConfigurationBuilder() var builder = new ConfigurationBuilder()
.SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../Volo.DocsTestApp/")) .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../VoloDocs/"))
.AddJsonFile("appsettings.json", optional: false); .AddJsonFile("appsettings.json", optional: false);
return builder.Build(); return builder.Build();

4
modules/docs/app/Volo.DocsTestApp.EntityFrameworkCore/DocsTestAppEntityFrameworkCoreModule.cs → modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocsEntityFrameworkCoreModule.cs

@ -5,7 +5,7 @@ using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore;
using Volo.Docs.EntityFrameworkCore; using Volo.Docs.EntityFrameworkCore;
namespace Volo.DocsTestApp.EntityFrameworkCore namespace VoloDocs.EntityFrameworkCore
{ {
[DependsOn( [DependsOn(
typeof(DocsEntityFrameworkCoreModule), typeof(DocsEntityFrameworkCoreModule),
@ -13,7 +13,7 @@ namespace Volo.DocsTestApp.EntityFrameworkCore
typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule),
typeof(AbpEntityFrameworkCoreSqlServerModule))] typeof(AbpEntityFrameworkCoreSqlServerModule))]
public class DocsTestAppEntityFrameworkCoreModule : AbpModule public class VoloDocsEntityFrameworkCoreModule : AbpModule
{ {
} }

13
modules/docs/app/VoloDocs.Migrator/AppExtensions.cs

@ -0,0 +1,13 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
namespace VoloDocs.Migrator
{
public static class AppExtensions
{
public static T Resolve<T>(this IAbpApplicationWithInternalServiceProvider app)
{
return (T)app.ServiceProvider.GetRequiredService<T>();
}
}
}

1
modules/docs/app/VoloDocs.Migrator/Migrate.bat

@ -0,0 +1 @@
@dotnet VoloDocs.Migrator.dll

94
modules/docs/app/VoloDocs.Migrator/Program.cs

@ -0,0 +1,94 @@
using System;
using System.IO;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using VoloDocs.EntityFrameworkCore;
namespace VoloDocs.Migrator
{
class Program
{
private const string ScriptFile = "Script.txt";
static void Main(string[] args)
{
Console.WriteLine("Initializing VoloDocs Migrator ... ");
using (var app = AbpApplicationFactory.Create<VoloDocsMigratorModule>())
{
app.Initialize();
using (var dbContext = app.Resolve<VoloDocsDbContext>())
{
var connectionString = dbContext.Database.GetDbConnection().ConnectionString;
Console.Clear();
if (args != null && args.Contains("-script"))
{
GenerateMigrationScript(dbContext);
return;
}
RunMigrations(connectionString, dbContext);
}
Console.WriteLine("\n\nPress ENTER to exit...");
Console.ReadLine();
}
}
private static void RunMigrations(string connectionString, VoloDocsDbContext dbContext)
{
Console.Write("\nThis program updates an existing database or creates a new one if not exists.\n" +
"The following connection string will be used:\n\n" +
connectionString + "\n\n" +
"Are you sure you want to run the migration? (y/n) ");
if (Console.ReadKey().Key == ConsoleKey.Y)
{
Console.WriteLine("\n\nMigrating database...");
try
{
dbContext.Database.Migrate();
Console.WriteLine("Migration completed.");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
while (ex.InnerException != null)
{
ex = ex.InnerException;
Console.WriteLine(ex.Message);
}
Console.Write("\nThere was problem while applying migrations. " +
"Do you want to create the migration script? (y/n) ");
if (Console.ReadKey().Key == ConsoleKey.Y)
{
GenerateMigrationScript(dbContext);
}
}
}
}
private static void GenerateMigrationScript(VoloDocsDbContext dbContext)
{
if (File.Exists(ScriptFile))
{
File.Delete(ScriptFile);
}
Console.Write("\nGenerating migration scripts...");
File.WriteAllText(ScriptFile, dbContext.Database.GenerateCreateScript());
Console.Write("\nMigration script has been created to Script.txt file");
}
}
}

27
modules/docs/app/VoloDocs.Migrator/VoloDocs.Migrator.csproj

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Core\Volo.Abp.Core.csproj" />
<ProjectReference Include="..\VoloDocs.EntityFrameworkCore\VoloDocs.EntityFrameworkCore.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Update="Migrate.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

29
modules/docs/app/VoloDocs.Migrator/VoloDocsMigratorModule.cs

@ -0,0 +1,29 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
using VoloDocs.EntityFrameworkCore;
namespace VoloDocs.Migrator
{
[DependsOn(typeof(VoloDocsEntityFrameworkCoreModule))]
public class VoloDocsMigratorModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
context.Services.AddAbpDbContext<VoloDocsDbContext>();
Configure<DbConnectionOptions>(options =>
{
options.ConnectionStrings.Default = configuration["ConnectionString"];
});
Configure<AbpDbContextOptions>(options =>
{
options.UseSqlServer();
});
}
}
}

3
modules/docs/app/VoloDocs.Migrator/appsettings.json

@ -0,0 +1,3 @@
{
"ConnectionString": "Server=localhost;Database=VoloDocs;Trusted_Connection=True;MultipleActiveResultSets=true"
}

BIN
modules/docs/app/VoloDocs.Web/Assets/Images/Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

29
modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs

@ -0,0 +1,29 @@
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components;
using Volo.Abp.Configuration;
using Volo.Abp.DependencyInjection;
namespace Volo.Docs.Branding
{
[Dependency(ReplaceServices = true)]
public class VoloDocsBrandingProvider : DefaultBrandingProvider
{
public VoloDocsBrandingProvider(IConfigurationAccessor configurationAccessor)
{
var configuration = configurationAccessor.Configuration;
if (configuration["Title"] != null)
{
AppName = configuration["Title"];
}
if (configuration["LogoUrl"] != null)
{
LogoUrl = configuration["LogoUrl"];
}
}
public override string AppName { get; }
public override string LogoUrl { get; }
}
}

2
modules/docs/app/Volo.DocsTestApp/Controllers/HomeController.cs → modules/docs/app/VoloDocs.Web/Controllers/HomeController.cs

@ -1,6 +1,6 @@
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
namespace Volo.DocsTestApp.Controllers namespace Volo.Docs.Controllers
{ {
public class HomeController : AbpController public class HomeController : AbpController
{ {

9
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json

@ -0,0 +1,9 @@
{
"culture": "en",
"texts": {
"WelcomeVoloDocs": "Welcome to the VoloDocs!",
"NoProjectWarning": "There`s no defined project yet!",
"CreateYourFirstProject": "Click here to start your first project",
"NoProject": "No project!"
}
}

9
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json

@ -0,0 +1,9 @@
{
"culture": "tr",
"texts": {
"WelcomeVoloDocs": "VoloDocs Hoşgeldiniz!",
"NoProjectWarning": "Henüz bir proje yok!",
"CreateYourFirstProject": "İlk projenizi oluşturmak için tıklayın",
"NoProject": "Proje yok!"
}
}

11
modules/docs/app/VoloDocs.Web/Pages/Error.cshtml

@ -0,0 +1,11 @@
@page
@model VoloDocs.Web.Pages.ErrorModel
@{
<div class="text-center">
<pre>
@Model.ErrorMessage
</pre>
<a href="/" class="btn btn-outline-primary">Home Page</a>
</div>
}

64
modules/docs/app/Volo.DocsTestApp/Controllers/ErrorController.cs → modules/docs/app/VoloDocs.Web/Pages/Error.cshtml.cs

@ -1,43 +1,52 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Serilog; using Microsoft.Extensions.Logging;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace Volo.DocsTestApp.Controllers namespace VoloDocs.Web.Pages
{ {
public class ErrorController : AbpController public class ErrorModel : AbpPageModel
{ {
[Route("error/{statusCode}")] public string ErrorMessage { get; set; }
[HttpGet]
public IActionResult Index(int statusCode = 0) public ActionResult OnGet(string statusCode)
{ {
var statusFeature = HttpContext.Features.Get<IStatusCodeReExecuteFeature>(); try
if (statusFeature != null)
{ {
Log.Warning("Handled {0} error for URL: {1}", statusCode, statusFeature.OriginalPath); if (!int.TryParse(statusCode, out var errorStatusCode))
} {
errorStatusCode = (int)HttpStatusCode.BadRequest;
}
var statusFeature = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();
if (statusFeature != null)
{
Logger.LogWarning("Handled {0} error for URL: {1}", statusCode, statusFeature.OriginalPath);
}
var isValidStatusCode = Enum.IsDefined(typeof(HttpStatusCode), errorStatusCode);
if (!isValidStatusCode)
{
errorStatusCode = (int)HttpStatusCode.BadRequest;
}
var isValidStatusCode = Enum.IsDefined(typeof(HttpStatusCode), statusCode); ErrorMessage = _errorMessages.ContainsKey(errorStatusCode)
if (!isValidStatusCode) ? _errorMessages[errorStatusCode]
: "Looks like something went wrong!";
}
catch (Exception e)
{ {
statusCode = (int)HttpStatusCode.BadRequest; Logger.LogError("Error on error page: " + e);
} }
return new ContentResult return Page();
{
ContentType = System.Net.Mime.MediaTypeNames.Text.Html,
StatusCode = statusCode,
Content = string.Format(HtmlBody, _errorMessages.ContainsKey(statusCode)
? _errorMessages[statusCode]
: "Looks like something went wrong!")
};
} }
private const string HtmlBody = "<html><body><div style='text-align:center'><pre>{0}</pre><a href='/'>Go to home page</a></div></body></html>"; #region Error Messages
/*For more ASCII arts http://patorjk.com/software/taag/#p=display&h=0&f=Big&t=400*/ /*For more ASCII arts http://patorjk.com/software/taag/#p=display&h=0&f=Big&t=400*/
private readonly Dictionary<int, string> _errorMessages = new Dictionary<int, string> private readonly Dictionary<int, string> _errorMessages = new Dictionary<int, string>
{ {
@ -84,7 +93,7 @@ This is a forbidden area!"
| | | |_| | | | | | | |_| | | |
|_| \___/ |_| |_| \___/ |_|
We can't find the page you're looking for..." Hmm, we couldn't find the page you're looking for..."
}, },
{ {
500, 500,
@ -123,5 +132,6 @@ Ooops! Our server is experiencing a mild case of the hiccups."
Looks like we're having some server issues." Looks like we're having some server issues."
} }
}; };
#endregion
} }
} }

55
modules/docs/app/VoloDocs.Web/Pages/Index.cshtml

@ -0,0 +1,55 @@
@page
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Docs
@using Volo.Docs.Localization
@using Volo.Docs.Pages.Documents
@model VoloDocs.Web.Pages.IndexModel
@inject IHtmlLocalizer<DocsResource> L
@section styles {
<abp-style-bundle name="@typeof(IndexModel).FullName">
<abp-style src="/Pages/Documents/Shared/Styles/vs.css" />
<abp-style src="/assets/fa/css/font-awesome.min.css" />
</abp-style-bundle>
}
<div class="p-5">
<h1 class="text-center mb-5">
@L["WelcomeVoloDocs"]
</h1>
@if (!Model.Projects.Any())
{
<div class="d-flex justify-content-center">
<div class="alert alert-secondary col-md-6 text-center" role="alert">
<p>@L["NoProjectWarning"]</p>
<hr />
<a href="@Model.CreateProjectLink">@L["CreateYourFirstProject"] <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
}
else if (Model.Projects.Count > 1)
{
<h2>@L["Projects"]</h2>
<p>
<ul style="list-style-type: upper-roman;">
@foreach (var project in Model.Projects)
{
<li>
<h3>
<a asp-page="./Project/Index"
asp-route-projectName="@project.ShortName"
asp-route-version="@DocsAppConsts.Latest">
@project.Name
</a>
</h3>
</li>
}
</ul>
</p>
}
</div>

46
modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs

@ -0,0 +1,46 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Volo.Abp.Users;
using Volo.Docs;
using Volo.Docs.Projects;
namespace VoloDocs.Web.Pages
{
public class IndexModel : PageModel
{
public IReadOnlyList<ProjectDto> Projects { get; set; }
public string CreateProjectLink { get; set; }
private readonly IProjectAppService _projectAppService;
private readonly ICurrentUser _currentUser;
public IndexModel(IProjectAppService projectAppService, ICurrentUser currentUser)
{
_projectAppService = projectAppService;
_currentUser = currentUser;
}
public async Task<IActionResult> OnGet()
{
CreateProjectLink = _currentUser.Id.HasValue
? "/Docs/Admin/Projects"
: "/Account/Login?returnUrl=/Docs/Admin/Projects";
Projects = (await _projectAppService.GetListAsync()).Items;
if (Projects.Count == 1)
{
return RedirectToPage("./Documents/Project/Index", new
{
projectName = Projects[0].ShortName,
version = DocsAppConsts.Latest,
documentName = Projects[0].DefaultDocumentName
});
}
return Page();
}
}
}

0
modules/docs/app/Volo.DocsTestApp/Pages/_ViewImports.cshtml → modules/docs/app/VoloDocs.Web/Pages/_ViewImports.cshtml

2
modules/docs/app/Volo.DocsTestApp/Program.cs → modules/docs/app/VoloDocs.Web/Program.cs

@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
namespace Volo.DocsTestApp namespace Volo.Docs
{ {
public class Program public class Program
{ {

2
modules/docs/app/Volo.DocsTestApp/Properties/launchSettings.json → modules/docs/app/VoloDocs.Web/Properties/launchSettings.json

@ -15,7 +15,7 @@
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
} }
}, },
"Volo.DocsTestApp": { "VoloDocs": {
"commandName": "Project", "commandName": "Project",
"launchBrowser": true, "launchBrowser": true,
"environmentVariables": { "environmentVariables": {

4
modules/docs/app/Volo.DocsTestApp/Startup.cs → modules/docs/app/VoloDocs.Web/Startup.cs

@ -5,13 +5,13 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp; using Volo.Abp;
namespace Volo.DocsTestApp namespace Volo.Docs
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public IServiceProvider ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<DocsTestAppModule>(options => services.AddApplication<VoloDocsWebModule>(options =>
{ {
options.UseAutofac(); options.UseAutofac();
}); });

32
modules/docs/app/VoloDocs.Web/Utils/GlobalExceptionHandlerMiddleware.cs

@ -0,0 +1,32 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Volo.Abp.AspNetCore.Uow;
namespace VoloDocs.Web.Utils
{
public class GlobalExceptionHandlerMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<AbpUnitOfWorkMiddleware> _logger;
public GlobalExceptionHandlerMiddleware(RequestDelegate next, ILogger<AbpUnitOfWorkMiddleware> logger)
{
_logger = logger;
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
try
{
await _next(httpContext);
}
catch (Exception ex)
{
_logger.LogError("Handled a global exception: " + ex.Message, ex);
}
}
}
}

23
modules/docs/app/Volo.DocsTestApp/Volo.DocsTestApp.csproj → modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj

@ -2,11 +2,15 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp2.2</TargetFramework>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Logs\**" /> <EmbeddedResource Include="Localization\Resources\VoloDocs\Web\en.json" />
<None Remove="Logs\**" /> <EmbeddedResource Include="Localization\Resources\VoloDocs\Web\tr.json" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -23,12 +27,23 @@
<ProjectReference Include="..\..\src\Volo.Docs.Admin.Web\Volo.Docs.Admin.Web.csproj" /> <ProjectReference Include="..\..\src\Volo.Docs.Admin.Web\Volo.Docs.Admin.Web.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" />
<ProjectReference Include="..\Volo.DocsTestApp.EntityFrameworkCore\Volo.DocsTestApp.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\VoloDocs.EntityFrameworkCore\VoloDocs.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.Application\Volo.Abp.Identity.Application.csproj" /> <ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.Application\Volo.Abp.Identity.Application.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.Web\Volo.Abp.Identity.Web.csproj" /> <ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.Web\Volo.Abp.Identity.Web.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj" /> <ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.Application\Volo.Abp.PermissionManagement.Application.csproj" /> <ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.Application\Volo.Abp.PermissionManagement.Application.csproj" />
<ProjectReference Include="..\..\..\..\modules\account\src\Volo.Abp.Account.Web\Volo.Abp.Account.Web.csproj" /> <ProjectReference Include="..\..\..\..\modules\account\src\Volo.Abp.Account.Web\Volo.Abp.Account.Web.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Assets\Images\" />
<Folder Include="Logs\" />
</ItemGroup>
<ItemGroup>
<None Update="run.bat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project> </Project>

62
modules/docs/app/Volo.DocsTestApp/DocsTestAppModule.cs → modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs

@ -1,16 +1,16 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Configuration; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Swashbuckle.AspNetCore.Swagger; using Swashbuckle.AspNetCore.Swagger;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Account.Web; using Volo.Abp.Account.Web;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI; using Volo.Abp.AspNetCore.Mvc.UI;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic;
@ -21,24 +21,28 @@ using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Identity.Web; using Volo.Abp.Identity.Web;
using Volo.Abp.Localization;
using Volo.Abp.Localization.Resources.AbpValidation;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity; using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.UI; using Volo.Abp.UI;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.Docs;
using Volo.Docs.Admin; using Volo.Docs.Admin;
using Volo.DocsTestApp.EntityFrameworkCore; using Volo.Docs.Localization;
using Volo.Docs.Utils;
using VoloDocs.EntityFrameworkCore;
using VoloDocs.Web.Utils;
namespace Volo.DocsTestApp namespace Volo.Docs
{ {
[DependsOn( [DependsOn(
typeof(DocsWebModule), typeof(DocsWebModule),
typeof(DocsAdminWebModule), typeof(DocsAdminWebModule),
typeof(DocsApplicationModule), typeof(DocsApplicationModule),
typeof(DocsAdminApplicationModule), typeof(DocsAdminApplicationModule),
typeof(DocsTestAppEntityFrameworkCoreModule), typeof(VoloDocsEntityFrameworkCoreModule),
typeof(AbpAutofacModule), typeof(AbpAutofacModule),
typeof(AbpAccountWebModule), typeof(AbpAccountWebModule),
typeof(AbpIdentityWebModule), typeof(AbpIdentityWebModule),
@ -47,8 +51,16 @@ namespace Volo.DocsTestApp
typeof(AbpPermissionManagementApplicationModule), typeof(AbpPermissionManagementApplicationModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule) typeof(AbpAspNetCoreMvcUiBasicThemeModule)
)] )]
public class DocsTestAppModule : AbpModule public class VoloDocsWebModule : AbpModule
{ {
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{
options.AddAssemblyResource(typeof(DocsResource), typeof(VoloDocsWebModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
@ -56,8 +68,7 @@ namespace Volo.DocsTestApp
Configure<DbConnectionOptions>(options => Configure<DbConnectionOptions>(options =>
{ {
const string connStringName = "SqlServer"; options.ConnectionStrings.Default = configuration["ConnectionString"];
options.ConnectionStrings.Default = configuration.GetConnectionString(connStringName);
}); });
Configure<AbpDbContextOptions>(options => Configure<AbpDbContextOptions>(options =>
@ -83,7 +94,11 @@ namespace Volo.DocsTestApp
context.Services.AddSwaggerGen( context.Services.AddSwaggerGen(
options => options =>
{ {
options.SwaggerDoc("v1", new Info { Title = "Docs API", Version = "v1" }); options.SwaggerDoc("v1", new Info
{
Title = "Docs API",
Version = "v1"
});
options.DocInclusionPredicate((docName, description) => true); options.DocInclusionPredicate((docName, description) => true);
options.CustomSchemaIds(type => type.FullName); options.CustomSchemaIds(type => type.FullName);
}); });
@ -96,17 +111,35 @@ namespace Volo.DocsTestApp
options.SupportedUICultures = cultures; options.SupportedUICultures = cultures;
}); });
Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<VoloDocsWebModule>("VoloDocs.Web");
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<DocsResource>()
.AddBaseTypes(typeof(AbpValidationResource))
.AddBaseTypes(typeof(AbpUiModule))
.AddVirtualJson("/Localization/Resources/VoloDocs/Web");
});
Configure<ThemingOptions>(options => Configure<ThemingOptions>(options =>
{ {
options.DefaultThemeName = BasicTheme.Name; options.DefaultThemeName = BasicTheme.Name;
}); });
Configure<RazorPagesOptions>(options =>
{
options.Conventions.AddPageRoute("/Error", "error/{statusCode}");
});
} }
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
app.UseDeveloperExceptionPage();
app.UseVirtualFiles(); app.UseVirtualFiles();
@ -119,8 +152,9 @@ namespace Volo.DocsTestApp
app.UseAuthentication(); app.UseAuthentication();
app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value); app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
app.UseStatusCodePagesWithReExecute("/error/{0}"); app.UseStatusCodePagesWithReExecute("/error/{0}");
app.UseMiddleware<GlobalExceptionHandlerMiddleware>();
app.UseMvc(routes => app.UseMvc(routes =>
{ {

0
modules/docs/app/Volo.DocsTestApp/abp.resourcemapping.js → modules/docs/app/VoloDocs.Web/abp.resourcemapping.js

5
modules/docs/app/VoloDocs.Web/appsettings.json

@ -0,0 +1,5 @@
{
"ConnectionString": "Server=localhost;Database=VoloDocs;Trusted_Connection=True;MultipleActiveResultSets=true",
"Title": "Volo Documents",
"LogoUrl": "/Assets/Images/Logo.png"
}

0
modules/docs/app/Volo.DocsTestApp/gulpfile.js → modules/docs/app/VoloDocs.Web/gulpfile.js

0
modules/docs/app/Volo.DocsTestApp/package-lock.json → modules/docs/app/VoloDocs.Web/package-lock.json

0
modules/docs/app/Volo.DocsTestApp/package.json → modules/docs/app/VoloDocs.Web/package.json

11
modules/docs/app/VoloDocs.Web/publish.bat

@ -0,0 +1,11 @@
@echo off
dotnet clean
dotnet restore
dotnet build
DEL /F/Q/S "C:\Publishes\VoloDocs" > NUL && RMDIR /Q/S "C:\Publishes\VoloDocs"
dotnet publish -c Release -o "C:\Publishes\VoloDocs\Web"
cd..\VoloDocs.Migrator && dotnet publish -c Release -o "C:\Publishes\VoloDocs\Migrator"

1
modules/docs/app/VoloDocs.Web/run.bat

@ -0,0 +1 @@
@dotnet VoloDocs.Web.dll

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/abp/core/abp.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/abp/jquery/abp.jquery.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/anchor-js/anchor.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/anchor-js/anchor.js

241
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/bootstrap/css/bootstrap.css → modules/docs/app/VoloDocs.Web/wwwroot/libs/bootstrap/css/bootstrap.css

@ -1,5 +1,5 @@
/*! /*!
* Bootstrap v4.1.1 (https://getbootstrap.com/) * Bootstrap v4.1.3 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors * Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc. * Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
@ -31,7 +31,7 @@
--breakpoint-md: 768px; --breakpoint-md: 768px;
--breakpoint-lg: 992px; --breakpoint-lg: 992px;
--breakpoint-xl: 1200px; --breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
} }
@ -47,7 +47,7 @@ html {
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%; -ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar; -ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
} }
@-ms-viewport { @-ms-viewport {
@ -60,7 +60,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
body { body {
margin: 0; margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem; font-size: 1rem;
font-weight: 400; font-weight: 400;
line-height: 1.5; line-height: 1.5;
@ -210,8 +210,9 @@ img {
border-style: none; border-style: none;
} }
svg:not(:root) { svg {
overflow: hidden; overflow: hidden;
vertical-align: middle;
} }
table { table {
@ -1515,7 +1516,6 @@ pre code {
.table { .table {
width: 100%; width: 100%;
max-width: 100%;
margin-bottom: 1rem; margin-bottom: 1rem;
background-color: transparent; background-color: transparent;
} }
@ -1811,6 +1811,7 @@ pre code {
.form-control { .form-control {
display: block; display: block;
width: 100%; width: 100%;
height: calc(2.25rem + 2px);
padding: 0.375rem 0.75rem; padding: 0.375rem 0.75rem;
font-size: 1rem; font-size: 1rem;
line-height: 1.5; line-height: 1.5;
@ -1871,10 +1872,6 @@ pre code {
opacity: 1; opacity: 1;
} }
select.form-control:not([size]):not([multiple]) {
height: calc(2.25rem + 2px);
}
select.form-control:focus::-ms-value { select.form-control:focus::-ms-value {
color: #495057; color: #495057;
background-color: #fff; background-color: #fff;
@ -1921,55 +1918,33 @@ select.form-control:focus::-ms-value {
border-width: 1px 0; border-width: 1px 0;
} }
.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,
.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,
.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,
.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,
.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,
.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,
.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,
.input-group-lg > .input-group-append > .form-control-plaintext.btn {
padding-right: 0; padding-right: 0;
padding-left: 0; padding-left: 0;
} }
.form-control-sm, .input-group-sm > .form-control, .form-control-sm {
.input-group-sm > .input-group-prepend > .input-group-text, height: calc(1.8125rem + 2px);
.input-group-sm > .input-group-append > .input-group-text,
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-append > .btn {
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
font-size: 0.875rem; font-size: 0.875rem;
line-height: 1.5; line-height: 1.5;
border-radius: 0.2rem; border-radius: 0.2rem;
} }
select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), .form-control-lg {
.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), height: calc(2.875rem + 2px);
.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),
.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),
.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {
height: calc(1.8125rem + 2px);
}
.form-control-lg, .input-group-lg > .form-control,
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .input-group-text,
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-append > .btn {
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
font-size: 1.25rem; font-size: 1.25rem;
line-height: 1.5; line-height: 1.5;
border-radius: 0.3rem; border-radius: 0.3rem;
} }
select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), select.form-control[size], select.form-control[multiple] {
.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), height: auto;
.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), }
.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),
.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) { textarea.form-control {
height: calc(2.875rem + 2px); height: auto;
} }
.form-group { .form-group {
@ -2046,13 +2021,13 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
z-index: 5; z-index: 5;
display: none; display: none;
max-width: 100%; max-width: 100%;
padding: .5rem; padding: 0.25rem 0.5rem;
margin-top: .1rem; margin-top: .1rem;
font-size: .875rem; font-size: 0.875rem;
line-height: 1; line-height: 1.5;
color: #fff; color: #fff;
background-color: rgba(40, 167, 69, 0.8); background-color: rgba(40, 167, 69, 0.9);
border-radius: .2rem; border-radius: 0.25rem;
} }
.was-validated .form-control:valid, .form-control.is-valid, .was-validated .was-validated .form-control:valid, .form-control.is-valid, .was-validated
@ -2121,7 +2096,7 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
border-color: #28a745; border-color: #28a745;
} }
.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before { .was-validated .custom-file-input:valid ~ .custom-file-label::after, .custom-file-input.is-valid ~ .custom-file-label::after {
border-color: inherit; border-color: inherit;
} }
@ -2149,13 +2124,13 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
z-index: 5; z-index: 5;
display: none; display: none;
max-width: 100%; max-width: 100%;
padding: .5rem; padding: 0.25rem 0.5rem;
margin-top: .1rem; margin-top: .1rem;
font-size: .875rem; font-size: 0.875rem;
line-height: 1; line-height: 1.5;
color: #fff; color: #fff;
background-color: rgba(220, 53, 69, 0.8); background-color: rgba(220, 53, 69, 0.9);
border-radius: .2rem; border-radius: 0.25rem;
} }
.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated .was-validated .form-control:invalid, .form-control.is-invalid, .was-validated
@ -2224,7 +2199,7 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
border-color: #dc3545; border-color: #dc3545;
} }
.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before { .was-validated .custom-file-input:invalid ~ .custom-file-label::after, .custom-file-input.is-invalid ~ .custom-file-label::after {
border-color: inherit; border-color: inherit;
} }
@ -2352,10 +2327,6 @@ select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.for
cursor: pointer; cursor: pointer;
} }
.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {
background-image: none;
}
a.btn.disabled, a.btn.disabled,
fieldset:disabled a.btn { fieldset:disabled a.btn {
pointer-events: none; pointer-events: none;
@ -3354,12 +3325,6 @@ input[type="button"].btn-block {
margin-bottom: 0; margin-bottom: 0;
} }
.input-group > .form-control:focus,
.input-group > .custom-select:focus,
.input-group > .custom-file:focus {
z-index: 3;
}
.input-group > .form-control + .form-control, .input-group > .form-control + .form-control,
.input-group > .form-control + .custom-select, .input-group > .form-control + .custom-select,
.input-group > .form-control + .custom-file, .input-group > .form-control + .custom-file,
@ -3372,6 +3337,16 @@ input[type="button"].btn-block {
margin-left: -1px; margin-left: -1px;
} }
.input-group > .form-control:focus,
.input-group > .custom-select:focus,
.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
z-index: 3;
}
.input-group > .custom-file .custom-file-input:focus {
z-index: 4;
}
.input-group > .form-control:not(:last-child), .input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child) { .input-group > .custom-select:not(:last-child) {
border-top-right-radius: 0; border-top-right-radius: 0;
@ -3456,6 +3431,30 @@ input[type="button"].btn-block {
margin-top: 0; margin-top: 0;
} }
.input-group-lg > .form-control,
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .input-group-text,
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-append > .btn {
height: calc(2.875rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-prepend > .input-group-text,
.input-group-sm > .input-group-append > .input-group-text,
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-append > .btn {
height: calc(1.8125rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn, .input-group > .input-group-append:not(:last-child) > .btn,
@ -3615,7 +3614,7 @@ input[type="button"].btn-block {
.custom-select:focus { .custom-select:focus {
border-color: #80bdff; border-color: #80bdff;
outline: 0; outline: 0;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5); box-shadow: 0 0 0 0.2rem rgba(128, 189, 255, 0.5);
} }
.custom-select:focus::-ms-value { .custom-select:focus::-ms-value {
@ -3678,6 +3677,10 @@ input[type="button"].btn-block {
border-color: #80bdff; border-color: #80bdff;
} }
.custom-file-input:disabled ~ .custom-file-label {
background-color: #e9ecef;
}
.custom-file-input:lang(en) ~ .custom-file-label::after { .custom-file-input:lang(en) ~ .custom-file-label::after {
content: "Browse"; content: "Browse";
} }
@ -3727,6 +3730,18 @@ input[type="button"].btn-block {
outline: none; outline: none;
} }
.custom-range:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range:focus::-moz-range-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range:focus::-ms-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-range::-moz-focus-outer { .custom-range::-moz-focus-outer {
border: 0; border: 0;
} }
@ -3738,13 +3753,15 @@ input[type="button"].btn-block {
background-color: #007bff; background-color: #007bff;
border: 0; border: 0;
border-radius: 1rem; border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-webkit-appearance: none; -webkit-appearance: none;
appearance: none; appearance: none;
} }
.custom-range::-webkit-slider-thumb:focus { @media screen and (prefers-reduced-motion: reduce) {
outline: none; .custom-range::-webkit-slider-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); transition: none;
}
} }
.custom-range::-webkit-slider-thumb:active { .custom-range::-webkit-slider-thumb:active {
@ -3767,13 +3784,15 @@ input[type="button"].btn-block {
background-color: #007bff; background-color: #007bff;
border: 0; border: 0;
border-radius: 1rem; border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
-moz-appearance: none; -moz-appearance: none;
appearance: none; appearance: none;
} }
.custom-range::-moz-range-thumb:focus { @media screen and (prefers-reduced-motion: reduce) {
outline: none; .custom-range::-moz-range-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); transition: none;
}
} }
.custom-range::-moz-range-thumb:active { .custom-range::-moz-range-thumb:active {
@ -3793,15 +3812,20 @@ input[type="button"].btn-block {
.custom-range::-ms-thumb { .custom-range::-ms-thumb {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
margin-top: 0;
margin-right: 0.2rem;
margin-left: 0.2rem;
background-color: #007bff; background-color: #007bff;
border: 0; border: 0;
border-radius: 1rem; border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none; appearance: none;
} }
.custom-range::-ms-thumb:focus { @media screen and (prefers-reduced-motion: reduce) {
outline: none; .custom-range::-ms-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); transition: none;
}
} }
.custom-range::-ms-thumb:active { .custom-range::-ms-thumb:active {
@ -3829,6 +3853,20 @@ input[type="button"].btn-block {
border-radius: 1rem; border-radius: 1rem;
} }
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media screen and (prefers-reduced-motion: reduce) {
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: none;
}
}
.nav { .nav {
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;
@ -5283,16 +5321,16 @@ input[type="button"].btn-block {
opacity: .5; opacity: .5;
} }
.close:hover, .close:focus { .close:not(:disabled):not(.disabled) {
cursor: pointer;
}
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
color: #000; color: #000;
text-decoration: none; text-decoration: none;
opacity: .75; opacity: .75;
} }
.close:not(:disabled):not(.disabled) {
cursor: pointer;
}
button.close { button.close {
padding: 0; padding: 0;
background-color: transparent; background-color: transparent;
@ -5304,6 +5342,11 @@ button.close {
overflow: hidden; overflow: hidden;
} }
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal { .modal {
position: fixed; position: fixed;
top: 0; top: 0;
@ -5316,11 +5359,6 @@ button.close {
outline: 0; outline: 0;
} }
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal-dialog { .modal-dialog {
position: relative; position: relative;
width: auto; width: auto;
@ -5355,6 +5393,12 @@ button.close {
min-height: calc(100% - (0.5rem * 2)); min-height: calc(100% - (0.5rem * 2));
} }
.modal-dialog-centered::before {
display: block;
height: calc(100vh - (0.5rem * 2));
content: "";
}
.modal-content { .modal-content {
position: relative; position: relative;
display: -ms-flexbox; display: -ms-flexbox;
@ -5453,6 +5497,9 @@ button.close {
.modal-dialog-centered { .modal-dialog-centered {
min-height: calc(100% - (1.75rem * 2)); min-height: calc(100% - (1.75rem * 2));
} }
.modal-dialog-centered::before {
height: calc(100vh - (1.75rem * 2));
}
.modal-sm { .modal-sm {
max-width: 300px; max-width: 300px;
} }
@ -5469,7 +5516,7 @@ button.close {
z-index: 1070; z-index: 1070;
display: block; display: block;
margin: 0; margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
line-height: 1.5; line-height: 1.5;
@ -5582,7 +5629,7 @@ button.close {
z-index: 1060; z-index: 1060;
display: block; display: block;
max-width: 276px; max-width: 276px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
line-height: 1.5; line-height: 1.5;
@ -5777,25 +5824,27 @@ button.close {
-ms-flex-align: center; -ms-flex-align: center;
align-items: center; align-items: center;
width: 100%; width: 100%;
transition: -webkit-transform 0.6s ease;
transition: transform 0.6s ease;
transition: transform 0.6s ease, -webkit-transform 0.6s ease;
-webkit-backface-visibility: hidden; -webkit-backface-visibility: hidden;
backface-visibility: hidden; backface-visibility: hidden;
-webkit-perspective: 1000px; -webkit-perspective: 1000px;
perspective: 1000px; perspective: 1000px;
} }
@media screen and (prefers-reduced-motion: reduce) {
.carousel-item {
transition: none;
}
}
.carousel-item.active, .carousel-item.active,
.carousel-item-next, .carousel-item-next,
.carousel-item-prev { .carousel-item-prev {
display: block; display: block;
transition: -webkit-transform 0.6s ease;
transition: transform 0.6s ease;
transition: transform 0.6s ease, -webkit-transform 0.6s ease;
}
@media screen and (prefers-reduced-motion: reduce) {
.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
transition: none;
}
} }
.carousel-item-next, .carousel-item-next,

229
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/bootstrap/js/bootstrap.bundle.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/bootstrap/js/bootstrap.bundle.js

@ -1,5 +1,5 @@
/*! /*!
* Bootstrap v4.1.1 (https://getbootstrap.com/) * Bootstrap v4.1.3 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
@ -69,7 +69,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): util.js * Bootstrap (v4.1.3): util.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -146,8 +146,7 @@
} }
try { try {
var $selector = $$$1(document).find(selector); return document.querySelector(selector) ? selector : null;
return $selector.length > 0 ? selector : null;
} catch (err) { } catch (err) {
return null; return null;
} }
@ -202,7 +201,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): alert.js * Bootstrap (v4.1.3): alert.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -214,7 +213,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'alert'; var NAME = 'alert';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.alert'; var DATA_KEY = 'bs.alert';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -277,7 +276,7 @@
var parent = false; var parent = false;
if (selector) { if (selector) {
parent = $$$1(selector)[0]; parent = document.querySelector(selector);
} }
if (!parent) { if (!parent) {
@ -377,7 +376,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): button.js * Bootstrap (v4.1.3): button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -389,7 +388,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'button'; var NAME = 'button';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.button'; var DATA_KEY = 'bs.button';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -434,14 +433,14 @@
var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
if (rootElement) { if (rootElement) {
var input = $$$1(this._element).find(Selector.INPUT)[0]; var input = this._element.querySelector(Selector.INPUT);
if (input) { if (input) {
if (input.type === 'radio') { if (input.type === 'radio') {
if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { if (input.checked && this._element.classList.contains(ClassName.ACTIVE)) {
triggerChangeEvent = false; triggerChangeEvent = false;
} else { } else {
var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; var activeElement = rootElement.querySelector(Selector.ACTIVE);
if (activeElement) { if (activeElement) {
$$$1(activeElement).removeClass(ClassName.ACTIVE); $$$1(activeElement).removeClass(ClassName.ACTIVE);
@ -454,7 +453,7 @@
return; return;
} }
input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); input.checked = !this._element.classList.contains(ClassName.ACTIVE);
$$$1(input).trigger('change'); $$$1(input).trigger('change');
} }
@ -464,7 +463,7 @@
} }
if (addAriaPressed) { if (addAriaPressed) {
this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName.ACTIVE));
} }
if (triggerChangeEvent) { if (triggerChangeEvent) {
@ -541,7 +540,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): carousel.js * Bootstrap (v4.1.3): carousel.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -553,7 +552,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'carousel'; var NAME = 'carousel';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.carousel'; var DATA_KEY = 'bs.carousel';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -632,7 +631,7 @@
this.touchTimeout = null; this.touchTimeout = null;
this._config = this._getConfig(config); this._config = this._getConfig(config);
this._element = $$$1(element)[0]; this._element = $$$1(element)[0];
this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; this._indicatorsElement = this._element.querySelector(Selector.INDICATORS);
this._addEventListeners(); this._addEventListeners();
} // Getters } // Getters
@ -666,7 +665,7 @@
this._isPaused = true; this._isPaused = true;
} }
if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) { if (this._element.querySelector(Selector.NEXT_PREV)) {
Util.triggerTransitionEnd(this._element); Util.triggerTransitionEnd(this._element);
this.cycle(true); this.cycle(true);
} }
@ -693,7 +692,7 @@
_proto.to = function to(index) { _proto.to = function to(index) {
var _this = this; var _this = this;
this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
var activeIndex = this._getItemIndex(this._activeElement); var activeIndex = this._getItemIndex(this._activeElement);
@ -799,7 +798,7 @@
}; };
_proto._getItemIndex = function _getItemIndex(element) { _proto._getItemIndex = function _getItemIndex(element) {
this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM)) : [];
return this._items.indexOf(element); return this._items.indexOf(element);
}; };
@ -824,7 +823,7 @@
_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
var targetIndex = this._getItemIndex(relatedTarget); var targetIndex = this._getItemIndex(relatedTarget);
var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); var fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM));
var slideEvent = $$$1.Event(Event.SLIDE, { var slideEvent = $$$1.Event(Event.SLIDE, {
relatedTarget: relatedTarget, relatedTarget: relatedTarget,
@ -838,7 +837,8 @@
_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
if (this._indicatorsElement) { if (this._indicatorsElement) {
$$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE));
$$$1(indicators).removeClass(ClassName.ACTIVE);
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
@ -851,7 +851,7 @@
_proto._slide = function _slide(direction, element) { _proto._slide = function _slide(direction, element) {
var _this3 = this; var _this3 = this;
var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; var activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
var activeElementIndex = this._getItemIndex(activeElement); var activeElementIndex = this._getItemIndex(activeElement);
@ -1017,11 +1017,13 @@
$$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
$$$1(window).on(Event.LOAD_DATA_API, function () { $$$1(window).on(Event.LOAD_DATA_API, function () {
$$$1(Selector.DATA_RIDE).each(function () { var carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE));
var $carousel = $$$1(this);
for (var i = 0, len = carousels.length; i < len; i++) {
var $carousel = $$$1(carousels[i]);
Carousel._jQueryInterface.call($carousel, $carousel.data()); Carousel._jQueryInterface.call($carousel, $carousel.data());
}); }
}); });
/** /**
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
@ -1042,7 +1044,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): collapse.js * Bootstrap (v4.1.3): collapse.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -1054,7 +1056,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'collapse'; var NAME = 'collapse';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.collapse'; var DATA_KEY = 'bs.collapse';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -1102,14 +1104,17 @@
this._isTransitioning = false; this._isTransitioning = false;
this._element = element; this._element = element;
this._config = this._getConfig(config); this._config = this._getConfig(config);
this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); this._triggerArray = $$$1.makeArray(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
var tabToggles = $$$1(Selector.DATA_TOGGLE); var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
for (var i = 0; i < tabToggles.length; i++) { for (var i = 0, len = toggleList.length; i < len; i++) {
var elem = tabToggles[i]; var elem = toggleList[i];
var selector = Util.getSelectorFromElement(elem); var selector = Util.getSelectorFromElement(elem);
var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
return foundElem === element;
});
if (selector !== null && $$$1(selector).filter(element).length > 0) { if (selector !== null && filterElement.length > 0) {
this._selector = selector; this._selector = selector;
this._triggerArray.push(elem); this._triggerArray.push(elem);
@ -1150,7 +1155,9 @@
var activesData; var activesData;
if (this._parent) { if (this._parent) {
actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) {
return elem.getAttribute('data-parent') === _this._config.parent;
});
if (actives.length === 0) { if (actives.length === 0) {
actives = null; actives = null;
@ -1185,7 +1192,7 @@
$$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
this._element.style[dimension] = 0; this._element.style[dimension] = 0;
if (this._triggerArray.length > 0) { if (this._triggerArray.length) {
$$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
} }
@ -1226,14 +1233,15 @@
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
Util.reflow(this._element); Util.reflow(this._element);
$$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
var triggerArrayLength = this._triggerArray.length;
if (this._triggerArray.length > 0) { if (triggerArrayLength > 0) {
for (var i = 0; i < this._triggerArray.length; i++) { for (var i = 0; i < triggerArrayLength; i++) {
var trigger = this._triggerArray[i]; var trigger = this._triggerArray[i];
var selector = Util.getSelectorFromElement(trigger); var selector = Util.getSelectorFromElement(trigger);
if (selector !== null) { if (selector !== null) {
var $elem = $$$1(selector); var $elem = $$$1([].slice.call(document.querySelectorAll(selector)));
if (!$elem.hasClass(ClassName.SHOW)) { if (!$elem.hasClass(ClassName.SHOW)) {
$$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
@ -1294,11 +1302,12 @@
parent = this._config.parent[0]; parent = this._config.parent[0];
} }
} else { } else {
parent = $$$1(this._config.parent)[0]; parent = document.querySelector(this._config.parent);
} }
var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
$$$1(parent).find(selector).each(function (i, element) { var children = [].slice.call(parent.querySelectorAll(selector));
$$$1(children).each(function (i, element) {
_this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
}); });
return parent; return parent;
@ -1308,7 +1317,7 @@
if (element) { if (element) {
var isOpen = $$$1(element).hasClass(ClassName.SHOW); var isOpen = $$$1(element).hasClass(ClassName.SHOW);
if (triggerArray.length > 0) { if (triggerArray.length) {
$$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
} }
} }
@ -1317,7 +1326,7 @@
Collapse._getTargetFromElement = function _getTargetFromElement(element) { Collapse._getTargetFromElement = function _getTargetFromElement(element) {
var selector = Util.getSelectorFromElement(element); var selector = Util.getSelectorFromElement(element);
return selector ? $$$1(selector)[0] : null; return selector ? document.querySelector(selector) : null;
}; };
Collapse._jQueryInterface = function _jQueryInterface(config) { Collapse._jQueryInterface = function _jQueryInterface(config) {
@ -1375,7 +1384,8 @@
var $trigger = $$$1(this); var $trigger = $$$1(this);
var selector = Util.getSelectorFromElement(this); var selector = Util.getSelectorFromElement(this);
$$$1(selector).each(function () { var selectors = [].slice.call(document.querySelectorAll(selector));
$$$1(selectors).each(function () {
var $target = $$$1(this); var $target = $$$1(this);
var data = $target.data(DATA_KEY); var data = $target.data(DATA_KEY);
var config = data ? 'toggle' : $trigger.data(); var config = data ? 'toggle' : $trigger.data();
@ -3920,7 +3930,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): dropdown.js * Bootstrap (v4.1.3): dropdown.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -3932,7 +3942,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'dropdown'; var NAME = 'dropdown';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.dropdown'; var DATA_KEY = 'bs.dropdown';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -4141,14 +4151,16 @@
if (!this._menu) { if (!this._menu) {
var parent = Dropdown._getParentFromElement(this._element); var parent = Dropdown._getParentFromElement(this._element);
this._menu = $$$1(parent).find(Selector.MENU)[0]; if (parent) {
this._menu = parent.querySelector(Selector.MENU);
}
} }
return this._menu; return this._menu;
}; };
_proto._getPlacement = function _getPlacement() { _proto._getPlacement = function _getPlacement() {
var $parentDropdown = $$$1(this._element).parent(); var $parentDropdown = $$$1(this._element.parentNode);
var placement = AttachmentMap.BOTTOM; // Handle dropup var placement = AttachmentMap.BOTTOM; // Handle dropup
if ($parentDropdown.hasClass(ClassName.DROPUP)) { if ($parentDropdown.hasClass(ClassName.DROPUP)) {
@ -4236,9 +4248,9 @@
return; return;
} }
var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
for (var i = 0; i < toggles.length; i++) { for (var i = 0, len = toggles.length; i < len; i++) {
var parent = Dropdown._getParentFromElement(toggles[i]); var parent = Dropdown._getParentFromElement(toggles[i]);
var context = $$$1(toggles[i]).data(DATA_KEY); var context = $$$1(toggles[i]).data(DATA_KEY);
@ -4246,6 +4258,10 @@
relatedTarget: toggles[i] relatedTarget: toggles[i]
}; };
if (event && event.type === 'click') {
relatedTarget.clickEvent = event;
}
if (!context) { if (!context) {
continue; continue;
} }
@ -4284,7 +4300,7 @@
var selector = Util.getSelectorFromElement(element); var selector = Util.getSelectorFromElement(element);
if (selector) { if (selector) {
parent = $$$1(selector)[0]; parent = document.querySelector(selector);
} }
return parent || element.parentNode; return parent || element.parentNode;
@ -4316,7 +4332,7 @@
if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
if (event.which === ESCAPE_KEYCODE) { if (event.which === ESCAPE_KEYCODE) {
var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; var toggle = parent.querySelector(Selector.DATA_TOGGLE);
$$$1(toggle).trigger('focus'); $$$1(toggle).trigger('focus');
} }
@ -4324,7 +4340,7 @@
return; return;
} }
var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));
if (items.length === 0) { if (items.length === 0) {
return; return;
@ -4402,7 +4418,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): modal.js * Bootstrap (v4.1.3): modal.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -4414,7 +4430,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'modal'; var NAME = 'modal';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.modal'; var DATA_KEY = 'bs.modal';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -4458,8 +4474,7 @@
DATA_TOGGLE: '[data-toggle="modal"]', DATA_TOGGLE: '[data-toggle="modal"]',
DATA_DISMISS: '[data-dismiss="modal"]', DATA_DISMISS: '[data-dismiss="modal"]',
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
STICKY_CONTENT: '.sticky-top', STICKY_CONTENT: '.sticky-top'
NAVBAR_TOGGLER: '.navbar-toggler'
/** /**
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
* Class Definition * Class Definition
@ -4474,7 +4489,7 @@
function Modal(element, config) { function Modal(element, config) {
this._config = this._getConfig(config); this._config = this._getConfig(config);
this._element = element; this._element = element;
this._dialog = $$$1(element).find(Selector.DIALOG)[0]; this._dialog = element.querySelector(Selector.DIALOG);
this._backdrop = null; this._backdrop = null;
this._isShown = false; this._isShown = false;
this._isBodyOverflowing = false; this._isBodyOverflowing = false;
@ -4731,7 +4746,7 @@
this._backdrop.className = ClassName.BACKDROP; this._backdrop.className = ClassName.BACKDROP;
if (animate) { if (animate) {
$$$1(this._backdrop).addClass(animate); this._backdrop.classList.add(animate);
} }
$$$1(this._backdrop).appendTo(document.body); $$$1(this._backdrop).appendTo(document.body);
@ -4825,23 +4840,19 @@
if (this._isBodyOverflowing) { if (this._isBodyOverflowing) {
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
// Adjust fixed content padding var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
$$$1(Selector.FIXED_CONTENT).each(function (index, element) { var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding
var actualPadding = $$$1(element)[0].style.paddingRight;
$$$1(fixedContent).each(function (index, element) {
var actualPadding = element.style.paddingRight;
var calculatedPadding = $$$1(element).css('padding-right'); var calculatedPadding = $$$1(element).css('padding-right');
$$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
}); // Adjust sticky content margin }); // Adjust sticky content margin
$$$1(Selector.STICKY_CONTENT).each(function (index, element) { $$$1(stickyContent).each(function (index, element) {
var actualMargin = $$$1(element)[0].style.marginRight; var actualMargin = element.style.marginRight;
var calculatedMargin = $$$1(element).css('margin-right'); var calculatedMargin = $$$1(element).css('margin-right');
$$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
}); // Adjust navbar-toggler margin
$$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
var actualMargin = $$$1(element)[0].style.marginRight;
var calculatedMargin = $$$1(element).css('margin-right');
$$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
}); // Adjust body padding }); // Adjust body padding
var actualPadding = document.body.style.paddingRight; var actualPadding = document.body.style.paddingRight;
@ -4852,15 +4863,15 @@
_proto._resetScrollbar = function _resetScrollbar() { _proto._resetScrollbar = function _resetScrollbar() {
// Restore fixed content padding // Restore fixed content padding
$$$1(Selector.FIXED_CONTENT).each(function (index, element) { var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
$$$1(fixedContent).each(function (index, element) {
var padding = $$$1(element).data('padding-right'); var padding = $$$1(element).data('padding-right');
$$$1(element).removeData('padding-right');
element.style.paddingRight = padding ? padding : '';
}); // Restore sticky content
if (typeof padding !== 'undefined') { var elements = [].slice.call(document.querySelectorAll("" + Selector.STICKY_CONTENT));
$$$1(element).css('padding-right', padding).removeData('padding-right'); $$$1(elements).each(function (index, element) {
}
}); // Restore sticky content and navbar-toggler margin
$$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
var margin = $$$1(element).data('margin-right'); var margin = $$$1(element).data('margin-right');
if (typeof margin !== 'undefined') { if (typeof margin !== 'undefined') {
@ -4869,10 +4880,8 @@
}); // Restore body padding }); // Restore body padding
var padding = $$$1(document.body).data('padding-right'); var padding = $$$1(document.body).data('padding-right');
$$$1(document.body).removeData('padding-right');
if (typeof padding !== 'undefined') { document.body.style.paddingRight = padding ? padding : '';
$$$1(document.body).css('padding-right', padding).removeData('padding-right');
}
}; };
_proto._getScrollbarWidth = function _getScrollbarWidth() { _proto._getScrollbarWidth = function _getScrollbarWidth() {
@ -4937,7 +4946,7 @@
var selector = Util.getSelectorFromElement(this); var selector = Util.getSelectorFromElement(this);
if (selector) { if (selector) {
target = $$$1(selector)[0]; target = document.querySelector(selector);
} }
var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data()); var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data());
@ -4980,7 +4989,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): tooltip.js * Bootstrap (v4.1.3): tooltip.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -4992,7 +5001,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'tooltip'; var NAME = 'tooltip';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.tooltip'; var DATA_KEY = 'bs.tooltip';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
@ -5202,7 +5211,7 @@
var attachment = this._getAttachment(placement); var attachment = this._getAttachment(placement);
this.addAttachmentClass(attachment); this.addAttachmentClass(attachment);
var container = this.config.container === false ? document.body : $$$1(this.config.container); var container = this.config.container === false ? document.body : $$$1(document).find(this.config.container);
$$$1(tip).data(this.constructor.DATA_KEY, this); $$$1(tip).data(this.constructor.DATA_KEY, this);
if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
@ -5341,9 +5350,9 @@
}; };
_proto.setContent = function setContent() { _proto.setContent = function setContent() {
var $tip = $$$1(this.getTipElement()); var tip = this.getTipElement();
this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); this.setElementContent($$$1(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle());
$tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); $$$1(tip).removeClass(ClassName.FADE + " " + ClassName.SHOW);
}; };
_proto.setElementContent = function setElementContent($element, content) { _proto.setElementContent = function setElementContent($element, content) {
@ -5536,15 +5545,18 @@
var $tip = $$$1(this.getTipElement()); var $tip = $$$1(this.getTipElement());
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
if (tabClass !== null && tabClass.length > 0) { if (tabClass !== null && tabClass.length) {
$tip.removeClass(tabClass.join('')); $tip.removeClass(tabClass.join(''));
} }
}; };
_proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
var popperInstance = popperData.instance;
this.tip = popperInstance.popper;
this._cleanTipClass(); this._cleanTipClass();
this.addAttachmentClass(this._getAttachment(data.placement)); this.addAttachmentClass(this._getAttachment(popperData.placement));
}; };
_proto._fixTransition = function _fixTransition() { _proto._fixTransition = function _fixTransition() {
@ -5647,7 +5659,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): popover.js * Bootstrap (v4.1.3): popover.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -5659,7 +5671,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'popover'; var NAME = 'popover';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.popover'; var DATA_KEY = 'bs.popover';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
@ -5844,7 +5856,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): scrollspy.js * Bootstrap (v4.1.3): scrollspy.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -5856,7 +5868,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'scrollspy'; var NAME = 'scrollspy';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.scrollspy'; var DATA_KEY = 'bs.scrollspy';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -5938,13 +5950,13 @@
this._offsets = []; this._offsets = [];
this._targets = []; this._targets = [];
this._scrollHeight = this._getScrollHeight(); this._scrollHeight = this._getScrollHeight();
var targets = $$$1.makeArray($$$1(this._selector)); var targets = [].slice.call(document.querySelectorAll(this._selector));
targets.map(function (element) { targets.map(function (element) {
var target; var target;
var targetSelector = Util.getSelectorFromElement(element); var targetSelector = Util.getSelectorFromElement(element);
if (targetSelector) { if (targetSelector) {
target = $$$1(targetSelector)[0]; target = document.querySelector(targetSelector);
} }
if (target) { if (target) {
@ -6041,7 +6053,9 @@
return; return;
} }
for (var i = this._offsets.length; i--;) { var offsetLength = this._offsets.length;
for (var i = offsetLength; i--;) {
var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
if (isActiveTarget) { if (isActiveTarget) {
@ -6061,7 +6075,7 @@
queries = queries.map(function (selector) { queries = queries.map(function (selector) {
return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
}); });
var $link = $$$1(queries.join(',')); var $link = $$$1([].slice.call(document.querySelectorAll(queries.join(','))));
if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
@ -6082,7 +6096,8 @@
}; };
_proto._clear = function _clear() { _proto._clear = function _clear() {
$$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); var nodes = [].slice.call(document.querySelectorAll(this._selector));
$$$1(nodes).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
}; // Static }; // Static
@ -6129,9 +6144,10 @@
$$$1(window).on(Event.LOAD_DATA_API, function () { $$$1(window).on(Event.LOAD_DATA_API, function () {
var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY)); var scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY));
var scrollSpysLength = scrollSpys.length;
for (var i = scrollSpys.length; i--;) { for (var i = scrollSpysLength; i--;) {
var $spy = $$$1(scrollSpys[i]); var $spy = $$$1(scrollSpys[i]);
ScrollSpy._jQueryInterface.call($spy, $spy.data()); ScrollSpy._jQueryInterface.call($spy, $spy.data());
@ -6156,7 +6172,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): tab.js * Bootstrap (v4.1.3): tab.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
@ -6168,7 +6184,7 @@
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var NAME = 'tab'; var NAME = 'tab';
var VERSION = '4.1.1'; var VERSION = '4.1.3';
var DATA_KEY = 'bs.tab'; var DATA_KEY = 'bs.tab';
var EVENT_KEY = "." + DATA_KEY; var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api'; var DATA_API_KEY = '.data-api';
@ -6250,7 +6266,7 @@
} }
if (selector) { if (selector) {
target = $$$1(selector)[0]; target = document.querySelector(selector);
} }
this._activate(this._element, listElement); this._activate(this._element, listElement);
@ -6332,7 +6348,8 @@
var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0]; var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
if (dropdownElement) { if (dropdownElement) {
$$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE));
$$$1(dropdownToggleList).addClass(ClassName.ACTIVE);
} }
element.setAttribute('aria-expanded', true); element.setAttribute('aria-expanded', true);
@ -6404,7 +6421,7 @@
/** /**
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
* Bootstrap (v4.1.1): index.js * Bootstrap (v4.1.3): index.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/clipboard/clipboard.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/clipboard/clipboard.js

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/clipboard/clipboard.min.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/clipboard/clipboard.min.js

6
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css → modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net-bs4/css/dataTables.bootstrap4.css

@ -4,6 +4,7 @@ table.dataTable {
margin-bottom: 6px !important; margin-bottom: 6px !important;
max-width: none !important; max-width: none !important;
border-collapse: separate !important; border-collapse: separate !important;
border-spacing: 0;
} }
table.dataTable td, table.dataTable td,
table.dataTable th { table.dataTable th {
@ -25,7 +26,7 @@ div.dataTables_wrapper div.dataTables_length label {
white-space: nowrap; white-space: nowrap;
} }
div.dataTables_wrapper div.dataTables_length select { div.dataTables_wrapper div.dataTables_length select {
width: 75px; width: auto;
display: inline-block; display: inline-block;
} }
div.dataTables_wrapper div.dataTables_filter { div.dataTables_wrapper div.dataTables_filter {
@ -132,6 +133,9 @@ div.dataTables_scrollBody table {
margin-top: 0 !important; margin-top: 0 !important;
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
div.dataTables_scrollBody table thead .sorting:before,
div.dataTables_scrollBody table thead .sorting_asc:before,
div.dataTables_scrollBody table thead .sorting_desc:before,
div.dataTables_scrollBody table thead .sorting:after, div.dataTables_scrollBody table thead .sorting:after,
div.dataTables_scrollBody table thead .sorting_asc:after, div.dataTables_scrollBody table thead .sorting_asc:after,
div.dataTables_scrollBody table thead .sorting_desc:after { div.dataTables_scrollBody table thead .sorting_desc:after {

10
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net-bs4/js/dataTables.bootstrap4.js

@ -1,9 +1,9 @@
/*! DataTables Bootstrap 3 integration /*! DataTables Bootstrap 4 integration
* ©2011-2015 SpryMedia Ltd - datatables.net/license * ©2011-2017 SpryMedia Ltd - datatables.net/license
*/ */
/** /**
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
* DataTables 1.10 or newer. * DataTables 1.10 or newer.
* *
* This file sets the defaults and adds options to DataTables to style its * This file sets the defaults and adds options to DataTables to style its
@ -55,9 +55,9 @@ $.extend( true, DataTable.defaults, {
/* Default class modification */ /* Default class modification */
$.extend( DataTable.ext.classes, { $.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper container-fluid dt-bootstrap4", sWrapper: "dataTables_wrapper dt-bootstrap4",
sFilterInput: "form-control form-control-sm", sFilterInput: "form-control form-control-sm",
sLengthSelect: "form-control form-control-sm", sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
sProcessing: "dataTables_processing card", sProcessing: "dataTables_processing card",
sPageButton: "paginate_button page-item" sPageButton: "paginate_button page-item"
} ); } );

200
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/datatables.net/js/jquery.dataTables.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/datatables.net/js/jquery.dataTables.js

@ -1,15 +1,15 @@
/*! DataTables 1.10.16 /*! DataTables 1.10.19
* ©2008-2017 SpryMedia Ltd - datatables.net/license * ©2008-2018 SpryMedia Ltd - datatables.net/license
*/ */
/** /**
* @summary DataTables * @summary DataTables
* @description Paginate, search and order HTML tables * @description Paginate, search and order HTML tables
* @version 1.10.16 * @version 1.10.19
* @file jquery.dataTables.js * @file jquery.dataTables.js
* @author SpryMedia Ltd * @author SpryMedia Ltd
* @contact www.datatables.net * @contact www.datatables.net
* @copyright Copyright 2008-2017 SpryMedia Ltd. * @copyright Copyright 2008-2018 SpryMedia Ltd.
* *
* This source file is free software, available under the following license: * This source file is free software, available under the following license:
* MIT license - http://datatables.net/license * MIT license - http://datatables.net/license
@ -909,8 +909,11 @@
var s = allSettings[i]; var s = allSettings[i];
/* Base check on table node */ /* Base check on table node */
if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) if (
{ s.nTable == this ||
(s.nTHead && s.nTHead.parentNode == this) ||
(s.nTFoot && s.nTFoot.parentNode == this)
) {
var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
@ -967,11 +970,7 @@
// Backwards compatibility, before we apply all the defaults // Backwards compatibility, before we apply all the defaults
_fnCompatOpts( oInit ); _fnCompatOpts( oInit );
_fnLanguageCompat( oInit.oLanguage );
if ( oInit.oLanguage )
{
_fnLanguageCompat( oInit.oLanguage );
}
// If the length menu is given, but the init display length is not, use the length menu // If the length menu is given, but the init display length is not, use the length menu
if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
@ -1354,8 +1353,10 @@
// - fr - Swiss Franc // - fr - Swiss Franc
// - kr - Swedish krona, Norwegian krone and Danish krone // - kr - Swedish krona, Norwegian krone and Danish krone
// - \u2009 is thin space and \u202F is narrow no-break space, both used in many // - \u2009 is thin space and \u202F is narrow no-break space, both used in many
// - Ƀ - Bitcoin
// - Ξ - Ethereum
// standards as thousands separators. // standards as thousands separators.
var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;
var _empty = function ( d ) { var _empty = function ( d ) {
@ -1730,33 +1731,43 @@
*/ */
function _fnLanguageCompat( lang ) function _fnLanguageCompat( lang )
{ {
// Note the use of the Hungarian notation for the parameters in this method as
// this is called after the mapping of camelCase to Hungarian
var defaults = DataTable.defaults.oLanguage; var defaults = DataTable.defaults.oLanguage;
var zeroRecords = lang.sZeroRecords;
/* Backwards compatibility - if there is no sEmptyTable given, then use the same as // Default mapping
* sZeroRecords - assuming that is given. var defaultDecimal = defaults.sDecimal;
*/ if ( defaultDecimal ) {
if ( ! lang.sEmptyTable && zeroRecords && _addNumericSort( defaultDecimal );
defaults.sEmptyTable === "No data available in table" )
{
_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
} }
/* Likewise with loading records */ if ( lang ) {
if ( ! lang.sLoadingRecords && zeroRecords && var zeroRecords = lang.sZeroRecords;
defaults.sLoadingRecords === "Loading..." )
{
_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
}
// Old parameter name of the thousands separator mapped onto the new // Backwards compatibility - if there is no sEmptyTable given, then use the same as
if ( lang.sInfoThousands ) { // sZeroRecords - assuming that is given.
lang.sThousands = lang.sInfoThousands; if ( ! lang.sEmptyTable && zeroRecords &&
} defaults.sEmptyTable === "No data available in table" )
{
_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );
}
var decimal = lang.sDecimal; // Likewise with loading records
if ( decimal ) { if ( ! lang.sLoadingRecords && zeroRecords &&
_addNumericSort( decimal ); defaults.sLoadingRecords === "Loading..." )
{
_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );
}
// Old parameter name of the thousands separator mapped onto the new
if ( lang.sInfoThousands ) {
lang.sThousands = lang.sInfoThousands;
}
var decimal = lang.sDecimal;
if ( decimal && defaultDecimal !== decimal ) {
_addNumericSort( decimal );
}
} }
} }
@ -3128,7 +3139,7 @@
} }
} }
_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells] );
} }
// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved
@ -3453,7 +3464,7 @@
// iRowCount and j are not currently documented. Are they at all // iRowCount and j are not currently documented. Are they at all
// useful? // useful?
_fnCallbackFire( oSettings, 'aoRowCallback', null, _fnCallbackFire( oSettings, 'aoRowCallback', null,
[nRow, aoData._aData, iRowCount, j] ); [nRow, aoData._aData, iRowCount, j, iDataIndex] );
anRows.push( nRow ); anRows.push( nRow );
iRowCount++; iRowCount++;
@ -3857,12 +3868,12 @@
{ {
ajaxData = ajax.data; ajaxData = ajax.data;
var newData = $.isFunction( ajaxData ) ? var newData = typeof ajaxData === 'function' ?
ajaxData( data, oSettings ) : // fn can manipulate data or return ajaxData( data, oSettings ) : // fn can manipulate data or return
ajaxData; // an object object or array to merge ajaxData; // an object object or array to merge
// If the function returned something, use that alone // If the function returned something, use that alone
data = $.isFunction( ajaxData ) && newData ? data = typeof ajaxData === 'function' && newData ?
newData : newData :
$.extend( true, data, newData ); $.extend( true, data, newData );
@ -3926,7 +3937,7 @@
url: ajax || oSettings.sAjaxSource url: ajax || oSettings.sAjaxSource
} ) ); } ) );
} }
else if ( $.isFunction( ajax ) ) else if ( typeof ajax === 'function' )
{ {
// Is a function - let the caller define what needs to be done // Is a function - let the caller define what needs to be done
oSettings.jqXHR = ajax.call( instance, data, callback, oSettings ); oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
@ -5360,14 +5371,18 @@
// both match, but we want to hide it completely. We want to also fix their // both match, but we want to hide it completely. We want to also fix their
// width to what they currently are // width to what they currently are
_fnApplyToChildren( function(nSizer, i) { _fnApplyToChildren( function(nSizer, i) {
nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; nSizer.innerHTML = '<div class="dataTables_sizing">'+headerContent[i]+'</div>';
nSizer.childNodes[0].style.height = "0";
nSizer.childNodes[0].style.overflow = "hidden";
nSizer.style.width = headerWidths[i]; nSizer.style.width = headerWidths[i];
}, headerSrcEls ); }, headerSrcEls );
if ( footer ) if ( footer )
{ {
_fnApplyToChildren( function(nSizer, i) { _fnApplyToChildren( function(nSizer, i) {
nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+footerContent[i]+'</div>'; nSizer.innerHTML = '<div class="dataTables_sizing">'+footerContent[i]+'</div>';
nSizer.childNodes[0].style.height = "0";
nSizer.childNodes[0].style.overflow = "hidden";
nSizer.style.width = footerWidths[i]; nSizer.style.width = footerWidths[i];
}, footerSrcEls ); }, footerSrcEls );
} }
@ -6561,7 +6576,7 @@
{ {
$(n) $(n)
.on( 'click.DT', oData, function (e) { .on( 'click.DT', oData, function (e) {
n.blur(); // Remove focus outline for mouse users $(n).blur(); // Remove focus outline for mouse users
fn(e); fn(e);
} ) } )
.on( 'keypress.DT', oData, function (e){ .on( 'keypress.DT', oData, function (e){
@ -7801,13 +7816,26 @@
} }
} }
else if ( order == 'current' || order == 'applied' ) { else if ( order == 'current' || order == 'applied' ) {
a = search == 'none' ? if ( search == 'none') {
displayMaster.slice() : // no search a = displayMaster.slice();
search == 'applied' ? }
displayFiltered.slice() : // applied search else if ( search == 'applied' ) {
$.map( displayMaster, function (el, i) { // removed search a = displayFiltered.slice();
return $.inArray( el, displayFiltered ) === -1 ? el : null; }
} ); else if ( search == 'removed' ) {
// O(n+m) solution by creating a hash map
var displayFilteredMap = {};
for ( var i=0, ien=displayFiltered.length ; i<ien ; i++ ) {
displayFilteredMap[displayFiltered[i]] = null;
}
a = $.map( displayMaster, function (el) {
return ! displayFilteredMap.hasOwnProperty(el) ?
el :
null;
} );
}
} }
else if ( order == 'index' || order == 'original' ) { else if ( order == 'index' || order == 'original' ) {
for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
@ -7840,14 +7868,13 @@
* {array} - jQuery array of nodes, or simply an array of TR nodes * {array} - jQuery array of nodes, or simply an array of TR nodes
* *
*/ */
var __row_selector = function ( settings, selector, opts ) var __row_selector = function ( settings, selector, opts )
{ {
var rows; var rows;
var run = function ( sel ) { var run = function ( sel ) {
var selInt = _intVal( sel ); var selInt = _intVal( sel );
var i, ien; var i, ien;
var aoData = settings.aoData;
// Short cut - selector is a number and no options provided (default is // Short cut - selector is a number and no options provided (default is
// all records, so no need to check if the index is in there, since it // all records, so no need to check if the index is in there, since it
@ -7872,23 +7899,26 @@
// Selector - function // Selector - function
if ( typeof sel === 'function' ) { if ( typeof sel === 'function' ) {
return $.map( rows, function (idx) { return $.map( rows, function (idx) {
var row = settings.aoData[ idx ]; var row = aoData[ idx ];
return sel( idx, row._aData, row.nTr ) ? idx : null; return sel( idx, row._aData, row.nTr ) ? idx : null;
} ); } );
} }
// Get nodes in the order from the `rows` array with null values removed
var nodes = _removeEmpty(
_pluck_order( settings.aoData, rows, 'nTr' )
);
// Selector - node // Selector - node
if ( sel.nodeName ) { if ( sel.nodeName ) {
if ( sel._DT_RowIndex !== undefined ) { var rowIdx = sel._DT_RowIndex; // Property added by DT for fast lookup
return [ sel._DT_RowIndex ]; // Property added by DT for fast lookup var cellIdx = sel._DT_CellIndex;
if ( rowIdx !== undefined ) {
// Make sure that the row is actually still present in the table
return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
[ rowIdx ] :
[];
} }
else if ( sel._DT_CellIndex ) { else if ( cellIdx ) {
return [ sel._DT_CellIndex.row ]; return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel ?
[ cellIdx.row ] :
[];
} }
else { else {
var host = $(sel).closest('*[data-dt-row]'); var host = $(sel).closest('*[data-dt-row]');
@ -7917,6 +7947,11 @@
// need to fall through to jQuery in case there is DOM id that // need to fall through to jQuery in case there is DOM id that
// matches // matches
} }
// Get nodes in the order from the `rows` array with null values removed
var nodes = _removeEmpty(
_pluck_order( settings.aoData, rows, 'nTr' )
);
// Selector - jQuery selector string, array of nodes or jQuery object/ // Selector - jQuery selector string, array of nodes or jQuery object/
// As jQuery's .filter() allows jQuery objects to be passed in filter, // As jQuery's .filter() allows jQuery objects to be passed in filter,
@ -8111,7 +8146,13 @@
} }
// Set // Set
ctx[0].aoData[ this[0] ]._aData = data; var row = ctx[0].aoData[ this[0] ];
row._aData = data;
// If the DOM has an id, and the data source is an array
if ( $.isArray( data ) && row.nTr.id ) {
_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );
}
// Automatically invalidate // Automatically invalidate
_fnInvalidate( ctx[0], this[0], 'data' ); _fnInvalidate( ctx[0], this[0], 'data' );
@ -8537,6 +8578,12 @@
_fnDrawHead( settings, settings.aoHeader ); _fnDrawHead( settings, settings.aoHeader );
_fnDrawHead( settings, settings.aoFooter ); _fnDrawHead( settings, settings.aoFooter );
// Update colspan for no records display. Child rows and extensions will use their own
// listeners to do this - only need to update the empty table item here
if ( ! settings.aiDisplay.length ) {
$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));
}
_fnSaveState( settings ); _fnSaveState( settings );
}; };
@ -8702,7 +8749,10 @@
// Selector - index // Selector - index
if ( $.isPlainObject( s ) ) { if ( $.isPlainObject( s ) ) {
return [s]; // Valid cell index and its in the array of selectable rows
return s.column !== undefined && s.row !== undefined && $.inArray( s.row, rows ) !== -1 ?
[s] :
[];
} }
// Selector - jQuery filtered cells // Selector - jQuery filtered cells
@ -8766,11 +8816,11 @@
} }
// Row + column selector // Row + column selector
var columns = this.columns( columnSelector, opts ); var columns = this.columns( columnSelector );
var rows = this.rows( rowSelector, opts ); var rows = this.rows( rowSelector );
var a, i, ien, j, jen; var a, i, ien, j, jen;
var cells = this.iterator( 'table', function ( settings, idx ) { this.iterator( 'table', function ( settings, idx ) {
a = []; a = [];
for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {
@ -8781,10 +8831,11 @@
} ); } );
} }
} }
return a;
}, 1 ); }, 1 );
// Now pass through the cell selector for options
var cells = this.cells( a, opts );
$.extend( cells.selector, { $.extend( cells.selector, {
cols: columnSelector, cols: columnSelector,
rows: rowSelector, rows: rowSelector,
@ -9412,7 +9463,7 @@
* @type string * @type string
* @default Version number * @default Version number
*/ */
DataTable.version = "1.10.16"; DataTable.version = "1.10.19";
/** /**
* Private data store, containing all of the settings objects that are * Private data store, containing all of the settings objects that are
@ -12350,8 +12401,8 @@
* { "data": "engine" }, * { "data": "engine" },
* { "data": "browser" }, * { "data": "browser" },
* { "data": "platform.inner" }, * { "data": "platform.inner" },
* { "data": "platform.details.0" }, * { "data": "details.0" },
* { "data": "platform.details.1" } * { "data": "details.1" }
* ] * ]
* } ); * } );
* } ); * } );
@ -14148,7 +14199,7 @@
* $.fn.dataTable.ext.type.detect.push( * $.fn.dataTable.ext.type.detect.push(
* function ( data, settings ) { * function ( data, settings ) {
* // Check the numeric part * // Check the numeric part
* if ( ! $.isNumeric( data.substring(1) ) ) { * if ( ! data.substring(1).match(/[0-9]/) ) {
* return null; * return null;
* } * }
* *
@ -14731,7 +14782,8 @@
$.extend( _ext.type.order, { $.extend( _ext.type.order, {
// Dates // Dates
"date-pre": function ( d ) { "date-pre": function ( d ) {
return Date.parse( d ) || -Infinity; var ts = Date.parse( d );
return isNaN(ts) ? -Infinity : ts;
}, },
// html // html
@ -14922,7 +14974,8 @@
text: function () { text: function () {
return { return {
display: __htmlEscapeEntities display: __htmlEscapeEntities,
filter: __htmlEscapeEntities
}; };
} }
}; };
@ -15047,6 +15100,7 @@
_fnRenderer: _fnRenderer, _fnRenderer: _fnRenderer,
_fnDataSource: _fnDataSource, _fnDataSource: _fnDataSource,
_fnRowAttributes: _fnRowAttributes, _fnRowAttributes: _fnRowAttributes,
_fnExtend: _fnExtend,
_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant
// in 1.10, so this dead-end function is // in 1.10, so this dead-end function is
// added to prevent errors // added to prevent errors

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/css/font-awesome.css → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/css/font-awesome.css

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/FontAwesome.otf → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/FontAwesome.otf

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.eot

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.svg

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 434 KiB

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.ttf

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2 → modules/docs/app/VoloDocs.Web/wwwroot/libs/font-awesome/fonts/fontawesome-webfont.woff2

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-form/jquery.form.min.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-form/jquery.form.min.js

4
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js

@ -1,6 +1,6 @@
// Unobtrusive validation support library for jQuery and jQuery Validate // Unobtrusive validation support library for jQuery and jQuery Validate
// Copyright (C) Microsoft Corporation. All rights reserved. // Copyright (C) Microsoft Corporation. All rights reserved.
// @version v3.2.9 // @version v3.2.10
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */ /*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
/*global document: false, jQuery: false */ /*global document: false, jQuery: false */
@ -8,7 +8,7 @@
(function (factory) { (function (factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module. // AMD. Register as an anonymous module.
define("jquery.validate.unobtrusive", ['jquery.validation'], factory); define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
} else if (typeof module === 'object' && module.exports) { } else if (typeof module === 'object' && module.exports) {
// CommonJS-like environments that support module.exports // CommonJS-like environments that support module.exports
module.exports = factory(require('jquery-validation')); module.exports = factory(require('jquery-validation'));

78
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/jquery.validate.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/jquery.validate.js

@ -1,9 +1,9 @@
/*! /*!
* jQuery Validation Plugin v1.17.0 * jQuery Validation Plugin v1.18.0
* *
* https://jqueryvalidation.org/ * https://jqueryvalidation.org/
* *
* Copyright (c) 2017 Jörn Zaefferer * Copyright (c) 2018 Jörn Zaefferer
* Released under the MIT license * Released under the MIT license
*/ */
(function( factory ) { (function( factory ) {
@ -67,6 +67,7 @@ $.extend( $.fn, {
// Prevent form submit to be able to see console output // Prevent form submit to be able to see console output
event.preventDefault(); event.preventDefault();
} }
function handle() { function handle() {
var hidden, result; var hidden, result;
@ -82,7 +83,7 @@ $.extend( $.fn, {
.appendTo( validator.currentForm ); .appendTo( validator.currentForm );
} }
if ( validator.settings.submitHandler ) { if ( validator.settings.submitHandler && !validator.settings.debug ) {
result = validator.settings.submitHandler.call( validator, validator.currentForm, event ); result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
if ( hidden ) { if ( hidden ) {
@ -149,7 +150,7 @@ $.extend( $.fn, {
return; return;
} }
if ( !element.form && element.hasAttribute( "contenteditable" ) ) { if ( !element.form && element.isContentEditable ) {
element.form = this.closest( "form" )[ 0 ]; element.form = this.closest( "form" )[ 0 ];
element.name = this.attr( "name" ); element.name = this.attr( "name" );
} }
@ -393,7 +394,8 @@ $.extend( $.validator, {
this.invalid = {}; this.invalid = {};
this.reset(); this.reset();
var groups = ( this.groups = {} ), var currentForm = this.currentForm,
groups = ( this.groups = {} ),
rules; rules;
$.each( this.settings.groups, function( key, value ) { $.each( this.settings.groups, function( key, value ) {
if ( typeof value === "string" ) { if ( typeof value === "string" ) {
@ -411,11 +413,17 @@ $.extend( $.validator, {
function delegate( event ) { function delegate( event ) {
// Set form expando on contenteditable // Set form expando on contenteditable
if ( !this.form && this.hasAttribute( "contenteditable" ) ) { if ( !this.form && this.isContentEditable ) {
this.form = $( this ).closest( "form" )[ 0 ]; this.form = $( this ).closest( "form" )[ 0 ];
this.name = $( this ).attr( "name" ); this.name = $( this ).attr( "name" );
} }
// Ignore the element if it belongs to another form. This will happen mainly
// when setting the `form` attribute of an input to the id of another form.
if ( currentForm !== this.form ) {
return;
}
var validator = $.data( this.form, "validator" ), var validator = $.data( this.form, "validator" ),
eventType = "on" + event.type.replace( /^validate/, "" ), eventType = "on" + event.type.replace( /^validate/, "" ),
settings = validator.settings; settings = validator.settings;
@ -644,11 +652,16 @@ $.extend( $.validator, {
} }
// Set form expando on contenteditable // Set form expando on contenteditable
if ( this.hasAttribute( "contenteditable" ) ) { if ( this.isContentEditable ) {
this.form = $( this ).closest( "form" )[ 0 ]; this.form = $( this ).closest( "form" )[ 0 ];
this.name = name; this.name = name;
} }
// Ignore elements that belong to other/nested forms
if ( this.form !== validator.currentForm ) {
return false;
}
// Select only the first element for each name, and only those with rules specified // Select only the first element for each name, and only those with rules specified
if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
return false; return false;
@ -702,7 +715,7 @@ $.extend( $.validator, {
return element.validity.badInput ? "NaN" : $element.val(); return element.validity.badInput ? "NaN" : $element.val();
} }
if ( element.hasAttribute( "contenteditable" ) ) { if ( element.isContentEditable ) {
val = $element.text(); val = $element.text();
} else { } else {
val = $element.val(); val = $element.val();
@ -763,10 +776,6 @@ $.extend( $.validator, {
if ( normalizer ) { if ( normalizer ) {
val = normalizer.call( element, val ); val = normalizer.call( element, val );
if ( typeof val !== "string" ) {
throw new TypeError( "The normalizer should return a string value." );
}
// Delete the normalizer from rules to avoid treating it as a pre-defined method. // Delete the normalizer from rules to avoid treating it as a pre-defined method.
delete rules.normalizer; delete rules.normalizer;
} }
@ -1142,7 +1151,19 @@ $.extend( $.validator, {
.removeData( "validator" ) .removeData( "validator" )
.find( ".validate-equalTo-blur" ) .find( ".validate-equalTo-blur" )
.off( ".validate-equalTo" ) .off( ".validate-equalTo" )
.removeClass( "validate-equalTo-blur" ); .removeClass( "validate-equalTo-blur" )
.find( ".validate-lessThan-blur" )
.off( ".validate-lessThan" )
.removeClass( "validate-lessThan-blur" )
.find( ".validate-lessThanEqual-blur" )
.off( ".validate-lessThanEqual" )
.removeClass( "validate-lessThanEqual-blur" )
.find( ".validate-greaterThanEqual-blur" )
.off( ".validate-greaterThanEqual" )
.removeClass( "validate-greaterThanEqual-blur" )
.find( ".validate-greaterThan-blur" )
.off( ".validate-greaterThan" )
.removeClass( "validate-greaterThan-blur" );
} }
}, },
@ -1246,6 +1267,12 @@ $.extend( $.validator, {
for ( method in $.validator.methods ) { for ( method in $.validator.methods ) {
value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() ); value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
// Cast empty attributes like `data-rule-required` to `true`
if ( value === "" ) {
value = true;
}
this.normalizeAttributeRule( rules, type, method, value ); this.normalizeAttributeRule( rules, type, method, value );
} }
return rules; return rules;
@ -1371,7 +1398,7 @@ $.extend( $.validator, {
if ( this.checkable( element ) ) { if ( this.checkable( element ) ) {
return this.getLength( value, element ) > 0; return this.getLength( value, element ) > 0;
} }
return value.length > 0; return value !== undefined && value !== null && value.length > 0;
}, },
// https://jqueryvalidation.org/email-method/ // https://jqueryvalidation.org/email-method/
@ -1395,9 +1422,26 @@ $.extend( $.validator, {
}, },
// https://jqueryvalidation.org/date-method/ // https://jqueryvalidation.org/date-method/
date: function( value, element ) { date: ( function() {
return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() ); var called = false;
},
return function( value, element ) {
if ( !called ) {
called = true;
if ( this.settings.debug && window.console ) {
console.warn(
"The `date` method is deprecated and will be removed in version '2.0.0'.\n" +
"Please don't use it, since it relies on the Date constructor, which\n" +
"behaves very differently across browsers and locales. Use `dateISO`\n" +
"instead or one of the locale specific methods in `localizations/`\n" +
"and `additional-methods.js`."
);
}
}
return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
};
}() ),
// https://jqueryvalidation.org/dateISO-method/ // https://jqueryvalidation.org/dateISO-method/
dateISO: function( value, element ) { dateISO: function( value, element ) {

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ar.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.js

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"هذا الحقل إلزامي",remote:"يرجى تصحيح هذا الحقل للمتابعة",email:"رجاء إدخال عنوان بريد إلكتروني صحيح",url:"رجاء إدخال عنوان موقع إلكتروني صحيح",date:"رجاء إدخال تاريخ صحيح",dateISO:"رجاء إدخال تاريخ صحيح (ISO)",number:"رجاء إدخال عدد بطريقة صحيحة",digits:"رجاء إدخال أرقام فقط",creditcard:"رجاء إدخال رقم بطاقة ائتمان صحيح",equalTo:"رجاء إدخال نفس القيمة",extension:"رجاء إدخال ملف بامتداد موافق عليه",maxlength:a.validator.format("الحد الأقصى لعدد الحروف هو {0}"),minlength:a.validator.format("الحد الأدنى لعدد الحروف هو {0}"),rangelength:a.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"),range:a.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),max:a.validator.format("رجاء إدخال عدد أقل من أو يساوي {0}"),min:a.validator.format("رجاء إدخال عدد أكبر من أو يساوي {0}")}),a});

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_az.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.js

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Bu xana mütləq doldurulmalıdır.",remote:"Zəhmət olmasa, düzgün məna daxil edin.",email:"Zəhmət olmasa, düzgün elektron poçt daxil edin.",url:"Zəhmət olmasa, düzgün URL daxil edin.",date:"Zəhmət olmasa, düzgün tarix daxil edin.",dateISO:"Zəhmət olmasa, düzgün ISO formatlı tarix daxil edin.",number:"Zəhmət olmasa, düzgün rəqəm daxil edin.",digits:"Zəhmət olmasa, yalnız rəqəm daxil edin.",creditcard:"Zəhmət olmasa, düzgün kredit kart nömrəsini daxil edin.",equalTo:"Zəhmət olmasa, eyni mənanı bir daha daxil edin.",extension:"Zəhmət olmasa, düzgün genişlənməyə malik faylı seçin.",maxlength:a.validator.format("Zəhmət olmasa, {0} simvoldan çox olmayaraq daxil edin."),minlength:a.validator.format("Zəhmət olmasa, {0} simvoldan az olmayaraq daxil edin."),rangelength:a.validator.format("Zəhmət olmasa, {0} - {1} aralığında uzunluğa malik simvol daxil edin."),range:a.validator.format("Zəhmət olmasa, {0} - {1} aralığında rəqəm daxil edin."),max:a.validator.format("Zəhmət olmasa, {0} və ondan kiçik rəqəm daxil edin."),min:a.validator.format("Zəhmət olmasa, {0} və ondan böyük rəqəm daxil edin")}),a});

2
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bg.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js

@ -24,7 +24,7 @@ $.extend( $.validator.messages, {
creditcard: "Моля, въведете валиден номер на кредитна карта.", creditcard: "Моля, въведете валиден номер на кредитна карта.",
equalTo: "Моля, въведете същата стойност отново.", equalTo: "Моля, въведете същата стойност отново.",
extension: "Моля, въведете стойност с валидно разширение.", extension: "Моля, въведете стойност с валидно разширение.",
maxlength: $.validator.format( "Моля, въведете повече от {0} символа." ), maxlength: $.validator.format( "Моля, въведете не повече от {0} символа." ),
minlength: $.validator.format( "Моля, въведете поне {0} символа." ), minlength: $.validator.format( "Моля, въведете поне {0} символа." ),
rangelength: $.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ), rangelength: $.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ),
range: $.validator.format( "Моля, въведете стойност между {0} и {1}." ), range: $.validator.format( "Моля, въведете стойност между {0} и {1}." ),

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Полето е задължително.",remote:"Моля, въведете правилната стойност.",email:"Моля, въведете валиден email.",url:"Моля, въведете валидно URL.",date:"Моля, въведете валидна дата.",dateISO:"Моля, въведете валидна дата (ISO).",number:"Моля, въведете валиден номер.",digits:"Моля, въведете само цифри.",creditcard:"Моля, въведете валиден номер на кредитна карта.",equalTo:"Моля, въведете същата стойност отново.",extension:"Моля, въведете стойност с валидно разширение.",maxlength:a.validator.format("Моля, въведете не повече от {0} символа."),minlength:a.validator.format("Моля, въведете поне {0} символа."),rangelength:a.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),range:a.validator.format("Моля, въведете стойност между {0} и {1}."),max:a.validator.format("Моля, въведете стойност по-малка или равна на {0}."),min:a.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")}),a});

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"এই তথ্যটি আবশ্যক।",remote:"এই তথ্যটি ঠিক করুন।",email:"অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।",url:"অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।",date:"তারিখ সঠিক নয়।",dateISO:"অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।",number:"অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।",digits:"এখানে শুধু সংখ্যা ব্যবহার করা যাবে।",creditcard:"অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।",equalTo:"একই মান আবার লিখুন।",extension:"সঠিক ধরনের ফাইল আপলোড করুন।",maxlength:a.validator.format("{0}টির বেশি অক্ষর লেখা যাবে না।"),minlength:a.validator.format("{0}টির কম অক্ষর লেখা যাবে না।"),rangelength:a.validator.format("{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।"),range:a.validator.format("{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।"),max:a.validator.format("অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।"),min:a.validator.format("অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।")}),a});

0
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ca.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.js

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Aquest camp és obligatori.",remote:"Si us plau, omple aquest camp.",email:"Si us plau, escriu una adreça de correu-e vàlida",url:"Si us plau, escriu una URL vàlida.",date:"Si us plau, escriu una data vàlida.",dateISO:"Si us plau, escriu una data (ISO) vàlida.",number:"Si us plau, escriu un número enter vàlid.",digits:"Si us plau, escriu només dígits.",creditcard:"Si us plau, escriu un número de tarjeta vàlid.",equalTo:"Si us plau, escriu el mateix valor de nou.",extension:"Si us plau, escriu un valor amb una extensió acceptada.",maxlength:a.validator.format("Si us plau, no escriguis més de {0} caracters."),minlength:a.validator.format("Si us plau, no escriguis menys de {0} caracters."),rangelength:a.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),range:a.validator.format("Si us plau, escriu un valor entre {0} i {1}."),max:a.validator.format("Si us plau, escriu un valor menor o igual a {0}."),min:a.validator.format("Si us plau, escriu un valor major o igual a {0}.")}),a});

3
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_cs.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js

@ -29,7 +29,8 @@ $.extend( $.validator.messages, {
rangelength: $.validator.format( "Prosím, zadejte od {0} do {1} znaků." ), rangelength: $.validator.format( "Prosím, zadejte od {0} do {1} znaků." ),
range: $.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ), range: $.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ),
max: $.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ), max: $.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ),
min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." ) min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." ),
step: $.validator.format( "Musí být násobkem čísla {0}." )
} ); } );
return $; return $;
})); }));

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Tento údaj je povinný.",remote:"Prosím, opravte tento údaj.",email:"Prosím, zadejte platný e-mail.",url:"Prosím, zadejte platné URL.",date:"Prosím, zadejte platné datum.",dateISO:"Prosím, zadejte platné datum (ISO).",number:"Prosím, zadejte číslo.",digits:"Prosím, zadávejte pouze číslice.",creditcard:"Prosím, zadejte číslo kreditní karty.",equalTo:"Prosím, zadejte znovu stejnou hodnotu.",extension:"Prosím, zadejte soubor se správnou příponou.",maxlength:a.validator.format("Prosím, zadejte nejvíce {0} znaků."),minlength:a.validator.format("Prosím, zadejte nejméně {0} znaků."),rangelength:a.validator.format("Prosím, zadejte od {0} do {1} znaků."),range:a.validator.format("Prosím, zadejte hodnotu od {0} do {1}."),max:a.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."),min:a.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}."),step:a.validator.format("Musí být násobkem čísla {0}.")}),a});

22
modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_da.js → modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.js

@ -14,19 +14,33 @@
*/ */
$.extend( $.validator.messages, { $.extend( $.validator.messages, {
required: "Dette felt er påkrævet.", required: "Dette felt er påkrævet.",
maxlength: $.validator.format( "Indtast højst {0} tegn." ), remote: "Ret venligst dette felt",
minlength: $.validator.format( "Indtast mindst {0} tegn." ),
rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
email: "Indtast en gyldig email-adresse.", email: "Indtast en gyldig email-adresse.",
url: "Indtast en gyldig URL.", url: "Indtast en gyldig URL.",
date: "Indtast en gyldig dato.", date: "Indtast en gyldig dato.",
number: "Indtast et tal.", number: "Indtast et tal.",
digits: "Indtast kun cifre.", digits: "Indtast kun cifre.",
creditcard: "Indtast et gyldigt kreditkortnummer.",
equalTo: "Indtast den samme værdi igen.", equalTo: "Indtast den samme værdi igen.",
time: "Angiv en gyldig tid mellem kl. 00:00 og 23:59.",
ipv4: "Angiv venligst en gyldig IPv4-adresse.",
ipv6: "Angiv venligst en gyldig IPv6-adresse.",
require_from_group: $.validator.format( "Angiv mindst {0} af disse felter." ),
extension: "Indtast venligst en værdi med en gyldig endelse",
pattern: "Ugyldigt format",
lettersonly: "Angiv venligst kun bogstaver.",
nowhitespace: "Må ikke indholde mellemrum",
maxlength: $.validator.format( "Indtast højst {0} tegn." ),
minlength: $.validator.format( "Indtast mindst {0} tegn." ),
rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
range: $.validator.format( "Angiv en værdi mellem {0} og {1}." ), range: $.validator.format( "Angiv en værdi mellem {0} og {1}." ),
max: $.validator.format( "Angiv en værdi der højst er {0}." ), max: $.validator.format( "Angiv en værdi der højst er {0}." ),
min: $.validator.format( "Angiv en værdi der mindst er {0}." ), min: $.validator.format( "Angiv en værdi der mindst er {0}." ),
creditcard: "Indtast et gyldigt kreditkortnummer." minWords: $.validator.format( "Indtast venligst mindst {0} ord" ),
maxWords: $.validator.format( "Indtast venligst højst {0} ord" ),
step: $.validator.format( "Angiv en værdi gange {0}." ),
notEqualTo: "Angiv en anden værdi, værdierne må ikke være det samme.",
integer: "Angiv et ikke-decimaltal, der er positivt eller negativt."
} ); } );
return $; return $;
})); }));

4
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.min.js

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
* https://jqueryvalidation.org/
* Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Dette felt er påkrævet.",remote:"Ret venligst dette felt",email:"Indtast en gyldig email-adresse.",url:"Indtast en gyldig URL.",date:"Indtast en gyldig dato.",number:"Indtast et tal.",digits:"Indtast kun cifre.",creditcard:"Indtast et gyldigt kreditkortnummer.",equalTo:"Indtast den samme værdi igen.",time:"Angiv en gyldig tid mellem kl. 00:00 og 23:59.",ipv4:"Angiv venligst en gyldig IPv4-adresse.",ipv6:"Angiv venligst en gyldig IPv6-adresse.",require_from_group:a.validator.format("Angiv mindst {0} af disse felter."),extension:"Indtast venligst en værdi med en gyldig endelse",pattern:"Ugyldigt format",lettersonly:"Angiv venligst kun bogstaver.",nowhitespace:"Må ikke indholde mellemrum",maxlength:a.validator.format("Indtast højst {0} tegn."),minlength:a.validator.format("Indtast mindst {0} tegn."),rangelength:a.validator.format("Indtast mindst {0} og højst {1} tegn."),range:a.validator.format("Angiv en værdi mellem {0} og {1}."),max:a.validator.format("Angiv en værdi der højst er {0}."),min:a.validator.format("Angiv en værdi der mindst er {0}."),minWords:a.validator.format("Indtast venligst mindst {0} ord"),maxWords:a.validator.format("Indtast venligst højst {0} ord"),step:a.validator.format("Angiv en værdi gange {0}."),notEqualTo:"Angiv en anden værdi, værdierne må ikke være det samme.",integer:"Angiv et ikke-decimaltal, der er positivt eller negativt."}),a});

82
modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.js

@ -0,0 +1,82 @@
(function( factory ) {
if ( typeof define === "function" && define.amd ) {
define( ["jquery", "../jquery.validate"], factory );
} else if (typeof module === "object" && module.exports) {
module.exports = factory( require( "jquery" ) );
} else {
factory( jQuery );
}
}(function( $ ) {
/*
* Translated default messages for the jQuery validation plugin.
* Locale: DE (German, Deutsch)
*/
$.extend( $.validator.messages, {
required: "Dieses Feld ist ein Pflichtfeld.",
maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
email: "Geben Sie bitte eine gültige E-Mail-Adresse ein.",
url: "Geben Sie bitte eine gültige URL ein.",
date: "Geben Sie bitte ein gültiges Datum ein.",
number: "Geben Sie bitte eine Nummer ein.",
digits: "Geben Sie bitte nur Ziffern ein.",
equalTo: "Wiederholen Sie bitte denselben Wert.",
range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
remote: "Korrigieren Sie bitte dieses Feld.",
dateISO: "Geben Sie bitte ein gültiges Datum ein (ISO-Format).",
step: $.validator.format( "Geben Sie bitte ein Vielfaches von {0} ein." ),
maxWords: $.validator.format( "Geben Sie bitte {0} Wörter oder weniger ein." ),
minWords: $.validator.format( "Geben Sie bitte mindestens {0} Wörter ein." ),
rangeWords: $.validator.format( "Geben Sie bitte zwischen {0} und {1} Wörtern ein." ),
accept: "Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",
alphanumeric: "Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",
bankaccountNL: "Geben Sie bitte eine gültige Kontonummer ein.",
bankorgiroaccountNL: "Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",
bic: "Geben Sie bitte einen gültigen BIC-Code ein.",
cifES: "Geben Sie bitte eine gültige CIF-Nummer ein.",
cpfBR: "Geben Sie bitte eine gültige CPF-Nummer ein.",
creditcardtypes: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
currency: "Geben Sie bitte eine gültige Währung ein.",
extension: "Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",
giroaccountNL: "Geben Sie bitte eine gültige Girokontonummer ein.",
iban: "Geben Sie bitte eine gültige IBAN ein.",
integer: "Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",
ipv4: "Geben Sie bitte eine gültige IPv4-Adresse ein.",
ipv6: "Geben Sie bitte eine gültige IPv6-Adresse ein.",
lettersonly: "Geben Sie bitte nur Buchstaben ein.",
letterswithbasicpunc: "Geben Sie bitte nur Buchstaben oder Interpunktion ein.",
mobileNL: "Geben Sie bitte eine gültige Handynummer ein.",
mobileUK: "Geben Sie bitte eine gültige Handynummer ein.",
netmask: "Geben Sie bitte eine gültige Netzmaske ein.",
nieES: "Geben Sie bitte eine gültige NIE-Nummer ein.",
nifES: "Geben Sie bitte eine gültige NIF-Nummer ein.",
nipPL: "Geben Sie bitte eine gültige NIP-Nummer ein.",
notEqualTo: "Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",
nowhitespace: "Kein Leerzeichen bitte.",
pattern: "Ungültiges Format.",
phoneNL: "Geben Sie bitte eine gültige Telefonnummer ein.",
phonesUK: "Geben Sie bitte eine gültige britische Telefonnummer ein.",
phoneUK: "Geben Sie bitte eine gültige Telefonnummer ein.",
phoneUS: "Geben Sie bitte eine gültige Telefonnummer ein.",
postalcodeBR: "Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",
postalCodeCA: "Geben Sie bitte eine gültige kanadische Postleitzahl ein.",
postalcodeIT: "Geben Sie bitte eine gültige italienische Postleitzahl ein.",
postalcodeNL: "Geben Sie bitte eine gültige niederländische Postleitzahl ein.",
postcodeUK: "Geben Sie bitte eine gültige britische Postleitzahl ein.",
require_from_group: $.validator.format( "Füllen Sie bitte mindestens {0} dieser Felder aus." ),
skip_or_fill_minimum: $.validator.format( "Überspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus." ),
stateUS: "Geben Sie bitte einen gültigen US-Bundesstaat ein.",
strippedminlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
time: "Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",
time12h: "Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",
vinUS: "Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",
zipcodeUS: "Die angegebene US-Postleitzahl ist ungültig.",
ziprange: "Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."
} );
return $;
}));

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save